diff --git a/app/api/order/medipost-test-response/route.ts b/app/api/order/medipost-test-response/route.ts index c91a0a9..fb4d518 100644 --- a/app/api/order/medipost-test-response/route.ts +++ b/app/api/order/medipost-test-response/route.ts @@ -6,10 +6,10 @@ import { getAccountAdmin } from "~/lib/services/account.service"; import { getOrderedAnalysisElementsIds } from "~/lib/services/medipost.service"; export async function POST(request: Request) { - const isDev = process.env.NODE_ENV === 'development'; - if (!isDev) { - return NextResponse.json({ error: 'This endpoint is only available in development mode' }, { status: 403 }); - } + // const isDev = process.env.NODE_ENV === 'development'; + // if (!isDev) { + // return NextResponse.json({ error: 'This endpoint is only available in development mode' }, { status: 403 }); + // } const { medusaOrderId } = await request.json(); diff --git a/lib/services/medipost.service.ts b/lib/services/medipost.service.ts index 7c1e049..da08be8 100644 --- a/lib/services/medipost.service.ts +++ b/lib/services/medipost.service.ts @@ -50,7 +50,6 @@ const USER = process.env.MEDIPOST_USER!; const PASSWORD = process.env.MEDIPOST_PASSWORD!; const RECIPIENT = process.env.MEDIPOST_RECIPIENT!; -const ANALYSIS_ELEMENT_HANDLE_PREFIX = 'analysis-element-'; const ANALYSIS_PACKAGE_HANDLE_PREFIX = 'analysis-package-'; function parseXML(xml: string) { @@ -214,7 +213,7 @@ export async function readPrivateMessageResponse({ if (!messageIdErrored) { throw new Error(`No message id found`); } - + const privateMessageContent = await getPrivateMessage( privateMessage.messageId, ); @@ -699,16 +698,12 @@ export async function getOrderedAnalysisElementsIds({ const countryCodes = await listRegions(); const countryCode = countryCodes[0]!.countries![0]!.iso_2!; - function getOrderedAnalysisElements(medusaOrder: StoreOrder) { - return (medusaOrder?.items ?? []) - .filter(({ product }) => product?.handle.startsWith(ANALYSIS_ELEMENT_HANDLE_PREFIX)) - .map((line) => { - const analysisElementId = Number(line.product?.handle?.replace(ANALYSIS_ELEMENT_HANDLE_PREFIX, '')); - if (Number.isNaN(analysisElementId)) { - return null; - } - return { analysisElementId }; - }) as { analysisElementId: number }[]; + async function getOrderedAnalysisElements(medusaOrder: StoreOrder) { + const originalIds = (medusaOrder?.items ?? []) + .map((a) => a.product?.metadata?.analysisIdOriginal) + .filter((a) => typeof a === 'string') as string[]; + const analysisElements = await getAnalysisElements({ originalIds }); + return analysisElements.map(({ id }) => ({ analysisElementId: id })); } async function getOrderedAnalysisPackages(medusaOrder: StoreOrder) { @@ -728,6 +723,9 @@ export async function getOrderedAnalysisElementsIds({ } const ids = getAnalysisElementMedusaProductIds(orderedPackagesProducts); + if (ids.length === 0) { + return []; + } const { response: { products: analysisPackagesProducts } } = await listProducts({ countryCode, queryParams: { limit: 100, id: ids }, @@ -747,8 +745,10 @@ export async function getOrderedAnalysisElementsIds({ return analysisElements.map(({ id }) => ({ analysisElementId: id })); } - const analysisPackageElements = await getOrderedAnalysisPackages(medusaOrder); - const orderedAnalysisElements = getOrderedAnalysisElements(medusaOrder); + const [analysisPackageElements, orderedAnalysisElements] = await Promise.all([ + getOrderedAnalysisPackages(medusaOrder), + getOrderedAnalysisElements(medusaOrder), + ]); return [...analysisPackageElements, ...orderedAnalysisElements]; }