import { redirect } from 'next/navigation'; import { listOrders } from '~/medusa/lib/data/orders'; import { createI18nServerInstance } from '@/lib/i18n/i18n.server'; import { listProductTypes } from '@lib/data/products'; 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'; export async function generateMetadata() { const { t } = await createI18nServerInstance(); return { title: t('orders:title'), }; } async function OrdersPage() { const medusaOrders = await listOrders(); const analysisOrders = await getAnalysisOrders(); const { productTypes } = await listProductTypes(); if (!medusaOrders || !productTypes) { 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) || []); return ( <> } description={} /> ); } export default withI18n(OrdersPage);