feat(MED-131): fix analysis element ids
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -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) {
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user