feat(MED-105): update order details redirect and shown page

This commit is contained in:
2025-08-11 09:21:40 +03:00
parent 556d7bd321
commit d582e222ce
19 changed files with 185 additions and 105 deletions

View File

@@ -10,6 +10,7 @@ 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 { getOrders } from '~/lib/services/order.service';
export async function generateMetadata() {
const { t } = await createI18nServerInstance();
@@ -20,7 +21,8 @@ export async function generateMetadata() {
}
async function OrdersPage() {
const orders = await listOrders().catch(() => null);
const orders = await listOrders();
const localOrders = await getOrders();
const { productTypes } = await listProductTypes();
if (!orders || !productTypes) {
@@ -30,13 +32,38 @@ async function OrdersPage() {
const analysisPackagesType = productTypes.find(({ metadata }) => metadata?.handle === 'analysis-packages');
const analysisPackageOrders: IOrderLineItem[] = orders.flatMap(({ id, items, payment_status, fulfillment_status }) => items
?.filter((item) => item.product_type_id === analysisPackagesType?.id)
.map((item) => ({ item, orderId: id, orderStatus: `${payment_status}/${fulfillment_status}` }))
.map((item) => {
const localOrder = localOrders.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[] = orders
.filter(({ items }) => items?.some((item) => item.product_type_id !== analysisPackagesType?.id))
.flatMap(({ id, items, payment_status, fulfillment_status }) => items
?.map((item) => ({ item, orderId: id, orderStatus: `${payment_status}/${fulfillment_status}` }))
?.map((item) => {
const localOrder = localOrders.find((order) => order.medusa_order_id === id);
if (!localOrder) {
return null;
}
return {
item,
medusaOrderId: id,
orderId: localOrder.id,
orderStatus: localOrder.status,
}
})
.filter((order) => order !== null)
|| []);
return (