MED-103: add booking functionality

This commit is contained in:
Helena
2025-09-17 18:11:13 +03:00
parent 7c92b787ce
commit 22f7fa134b
44 changed files with 1923 additions and 479 deletions

View File

@@ -5,17 +5,19 @@ 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,
export default function OrderBlock({ analysisOrder, itemsAnalysisPackage, itemsTtoService, itemsOther, medusaOrderId }: {
analysisOrder?: AnalysisOrder,
itemsAnalysisPackage: StoreOrderLineItem[],
itemsTtoService: StoreOrderLineItem[],
itemsOther: StoreOrderLineItem[],
medusaOrderId: string,
}) {
return (
<div className="flex flex-col gap-4">
<h4>
<Trans i18nKey="analysis-results:orderTitle" values={{ orderNumber: analysisOrder.medusa_order_id }} />
<Trans i18nKey="analysis-results:orderTitle" values={{ orderNumber: medusaOrderId }} />
</h4>
<div className="flex gap-2">
{analysisOrder && <div className="flex gap-2">
<h5>
<Trans i18nKey={`orders:status.${analysisOrder.status}`} />
</h5>
@@ -26,9 +28,10 @@ export default function OrderBlock({ analysisOrder, itemsAnalysisPackage, itemsO
<Eye />
</button>
</Link>
</div>
</div>}
<div className="flex flex-col gap-4">
<OrderItemsTable items={itemsAnalysisPackage} title="orders:table.analysisPackage" analysisOrder={analysisOrder} />
{analysisOrder && <OrderItemsTable items={itemsAnalysisPackage} title="orders:table.analysisPackage" analysisOrder={analysisOrder} />}
{itemsTtoService && <OrderItemsTable items={itemsTtoService} title="orders:table.ttoService" type='ttoService' />}
<OrderItemsTable items={itemsOther} title="orders:table.otherOrders" analysisOrder={analysisOrder} />
</div>
</div>

View File

@@ -4,7 +4,6 @@ import { useRouter } from 'next/navigation';
import { StoreOrderLineItem } from '@medusajs/types';
import { formatDate } from 'date-fns';
import { Eye } from 'lucide-react';
import { pathsConfig } from '@kit/shared/config';
import { Button } from '@kit/ui/button';
@@ -22,14 +21,18 @@ import { AnalysisOrder } from '~/lib/services/order.service';
import { logAnalysisResultsNavigateAction } from './actions';
export type OrderItemType = 'analysisOrder' | 'ttoService';
export default function OrderItemsTable({
items,
title,
analysisOrder,
type = 'analysisOrder',
}: {
items: StoreOrderLineItem[];
title: string;
analysisOrder: AnalysisOrder;
analysisOrder?: AnalysisOrder;
type?: OrderItemType;
}) {
const router = useRouter();
@@ -37,9 +40,13 @@ export default function OrderItemsTable({
return null;
}
const isAnalysisOrder = type === 'analysisOrder';
const openAnalysisResults = async () => {
await logAnalysisResultsNavigateAction(analysisOrder.medusa_order_id);
router.push(`${pathsConfig.app.analysisResults}/${analysisOrder.id}`);
if (analysisOrder) {
await logAnalysisResultsNavigateAction(analysisOrder.medusa_order_id);
router.push(`${pathsConfig.app.analysisResults}/${analysisOrder.id}`);
}
};
return (
@@ -52,10 +59,10 @@ export default function OrderItemsTable({
<TableHead className="px-6">
<Trans i18nKey="orders:table.createdAt" />
</TableHead>
<TableHead className="px-6">
<TableHead className={'px-6'}>
<Trans i18nKey="orders:table.status" />
</TableHead>
<TableHead className="px-6"></TableHead>
{isAnalysisOrder && <TableHead className="px-6"></TableHead>}
</TableRow>
</TableHeader>
<TableBody>
@@ -65,7 +72,7 @@ export default function OrderItemsTable({
)
.map((orderItem) => (
<TableRow className="w-full" key={orderItem.id}>
<TableCell className="text-left w-[100%] px-6">
<TableCell className="w-[100%] px-6 text-left">
<p className="txt-medium-plus text-ui-fg-base">
{orderItem.product_title}
</p>
@@ -76,14 +83,18 @@ export default function OrderItemsTable({
</TableCell>
<TableCell className="min-w-[180px] px-6">
<Trans i18nKey={`orders:status.${analysisOrder.status}`} />
<Trans
i18nKey={`orders:status.${type}.${analysisOrder?.status ?? 'CONFIRMED'}`}
/>
</TableCell>
<TableCell className="px-6 text-right">
<Button size="sm" onClick={openAnalysisResults}>
<Trans i18nKey="analysis-results:view" />
</Button>
</TableCell>
{isAnalysisOrder && (
<TableCell className="px-6 text-right">
<Button size="sm" onClick={openAnalysisResults}>
<Trans i18nKey="analysis-results:view" />
</Button>
</TableCell>
)}
</TableRow>
))}
</TableBody>