diff --git a/app/home/(user)/(dashboard)/order/page.tsx b/app/home/(user)/(dashboard)/order/page.tsx index 4b1d747..57b11c5 100644 --- a/app/home/(user)/(dashboard)/order/page.tsx +++ b/app/home/(user)/(dashboard)/order/page.tsx @@ -7,10 +7,11 @@ import { PageBody } from '@kit/ui/makerkit/page'; import pathsConfig from '~/config/paths.config'; import { Trans } from '@kit/ui/trans'; import { HomeLayoutPageHeader } from '../../_components/home-page-header'; -import OrdersTable from '../../_components/orders/orders-table'; import { withI18n } from '~/lib/i18n/with-i18n'; -import type { IOrderLineItem } from '../../_components/orders/types'; import { getAnalysisOrders } from '~/lib/services/order.service'; +import OrderBlock from '../../_components/orders/order-block'; +import React from 'react'; +import { Divider } from '@medusajs/ui'; export async function generateMetadata() { const { t } = await createI18nServerInstance(); @@ -29,42 +30,7 @@ async function OrdersPage() { redirect(pathsConfig.auth.signIn); } - const analysisPackagesType = productTypes.find(({ metadata }) => metadata?.handle === 'analysis-packages'); - const analysisPackageOrders: IOrderLineItem[] = medusaOrders.flatMap(({ id, items, payment_status, fulfillment_status }) => items - ?.filter((item) => item.product_type_id === analysisPackagesType?.id) - .map((item) => { - const localOrder = analysisOrders.find((order) => order.medusa_order_id === id); - if (!localOrder) { - return null; - } - return { - item, - medusaOrderId: id, - orderId: localOrder?.id, - orderStatus: localOrder.status, - analysis_element_ids: localOrder.analysis_element_ids, - } - }) - .filter((order) => order !== null) - || []); - - const otherOrders: IOrderLineItem[] = medusaOrders - .filter(({ items }) => items?.some((item) => item.product_type_id !== analysisPackagesType?.id)) - .flatMap(({ id, items, payment_status, fulfillment_status }) => items - ?.map((item) => { - const analysisOrder = analysisOrders.find((order) => order.medusa_order_id === id); - if (!analysisOrder) { - return null; - } - return { - item, - medusaOrderId: id, - orderId: analysisOrder.id, - orderStatus: analysisOrder.status, - } - }) - .filter((order) => order !== null) - || []); + const analysisPackagesType = productTypes.find(({ metadata }) => metadata?.handle === 'analysis-packages')!; return ( <> @@ -73,8 +39,27 @@ async function OrdersPage() { description={} /> - - + {analysisOrders.map((analysisOrder) => { + const medusaOrder = medusaOrders.find(({ id }) => id === analysisOrder.medusa_order_id); + if (!medusaOrder) { + return null; + } + + const medusaOrderItems = medusaOrder.items || []; + const medusaOrderItemsAnalysisPackages = medusaOrderItems.filter((item) => item.product_type_id === analysisPackagesType?.id); + const medusaOrderItemsOther = medusaOrderItems.filter((item) => item.product_type_id !== analysisPackagesType?.id); + + return ( + + + + + ) + })} ); diff --git a/app/home/(user)/_components/orders/order-block.tsx b/app/home/(user)/_components/orders/order-block.tsx new file mode 100644 index 0000000..077d761 --- /dev/null +++ b/app/home/(user)/_components/orders/order-block.tsx @@ -0,0 +1,36 @@ +import { AnalysisOrder } from "~/lib/services/order.service"; +import { Trans } from '@kit/ui/makerkit/trans'; +import { StoreOrderLineItem } from "@medusajs/types"; +import OrderItemsTable from "./order-items-table"; +import Link from "next/link"; +import { Eye } from "lucide-react"; + +export default function OrderBlock({ analysisOrder, itemsAnalysisPackage, itemsOther }: { + analysisOrder: AnalysisOrder, + itemsAnalysisPackage: StoreOrderLineItem[], + itemsOther: StoreOrderLineItem[], +}) { + return ( +
+

+ +

+
+
+ +
+ + + +
+
+ + +
+
+ ) +} diff --git a/app/home/(user)/_components/orders/order-items-table.tsx b/app/home/(user)/_components/orders/order-items-table.tsx new file mode 100644 index 0000000..48d502a --- /dev/null +++ b/app/home/(user)/_components/orders/order-items-table.tsx @@ -0,0 +1,77 @@ +import { Trans } from '@kit/ui/trans'; +import { + Table, + TableBody, + TableHead, + TableRow, + TableHeader, + TableCell, +} from '@kit/ui/table'; +import { StoreOrderLineItem } from "@medusajs/types"; +import { AnalysisOrder } from '~/lib/services/order.service'; +import { formatDate } from 'date-fns'; +import Link from 'next/link'; +import { Eye } from 'lucide-react'; + +export default function OrderItemsTable({ items, title, analysisOrder }: { + items: StoreOrderLineItem[]; + title: string; + analysisOrder: AnalysisOrder; +}) { + if (!items || items.length === 0) { + return null; + } + + return ( + + + + + + + + + + + + + + + + + + {items + .sort((a, b) => (a.created_at ?? "") > (b.created_at ?? "") ? -1 : 1) + .map((orderItem) => ( + + +

+ {orderItem.product_title} +

+
+ + + {formatDate(orderItem.created_at, 'dd.MM.yyyy HH:mm')} + + + + + + + + + + + + + +
+ ))} +
+
+ ) +} diff --git a/app/home/(user)/_components/orders/orders-item.tsx b/app/home/(user)/_components/orders/orders-item.tsx deleted file mode 100644 index ea8943d..0000000 --- a/app/home/(user)/_components/orders/orders-item.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { - TableCell, - TableRow, -} from '@kit/ui/table'; -import { Eye } from "lucide-react"; -import Link from "next/link"; -import { formatDate } from "date-fns"; -import { IOrderLineItem } from "./types"; -import { Trans } from '@kit/ui/trans'; - -export default function OrdersItem({ orderItem }: { - orderItem: IOrderLineItem, -}) { - return ( - - -

- {orderItem.item.product_title} -

-
- - - {formatDate(orderItem.item.created_at, 'dd.MM.yyyy HH:mm')} - - - - - - - - - - - - - -
- ) -} diff --git a/app/home/(user)/_components/orders/orders-table.tsx b/app/home/(user)/_components/orders/orders-table.tsx deleted file mode 100644 index 18f1872..0000000 --- a/app/home/(user)/_components/orders/orders-table.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { Trans } from '@kit/ui/trans'; -import { - Table, - TableBody, - TableHead, - TableRow, - TableHeader, -} from '@kit/ui/table'; -import OrdersItem from "./orders-item"; -import { IOrderLineItem } from "./types"; - -export default function OrdersTable({ orderItems, title }: { - orderItems: IOrderLineItem[]; - title: string; -}) { - if (!orderItems || orderItems.length === 0) { - return null; - } - - return ( - - - - - - - - - - - - - - - - - - {orderItems - .sort((a, b) => (a.item.created_at ?? "") > (b.item.created_at ?? "") ? -1 : 1) - .map((orderItem) => ())} - -
- ) -} diff --git a/app/home/(user)/_components/orders/types.ts b/app/home/(user)/_components/orders/types.ts deleted file mode 100644 index 2c7140e..0000000 --- a/app/home/(user)/_components/orders/types.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { StoreOrderLineItem } from "@medusajs/types"; - -export interface IOrderLineItem { - item: StoreOrderLineItem; - medusaOrderId: string; - orderId: number; - orderStatus: string; -}