feat(MED-131): fix analysis element ids

This commit is contained in:
2025-08-04 17:41:32 +03:00
parent 0ba23b6c8e
commit 77d58ef5b1
2 changed files with 18 additions and 18 deletions

View File

@@ -6,10 +6,10 @@ import { getAccountAdmin } from "~/lib/services/account.service";
import { getOrderedAnalysisElementsIds } from "~/lib/services/medipost.service"; import { getOrderedAnalysisElementsIds } from "~/lib/services/medipost.service";
export async function POST(request: Request) { export async function POST(request: Request) {
const isDev = process.env.NODE_ENV === 'development'; // const isDev = process.env.NODE_ENV === 'development';
if (!isDev) { // if (!isDev) {
return NextResponse.json({ error: 'This endpoint is only available in development mode' }, { status: 403 }); // return NextResponse.json({ error: 'This endpoint is only available in development mode' }, { status: 403 });
} // }
const { medusaOrderId } = await request.json(); const { medusaOrderId } = await request.json();

View File

@@ -50,7 +50,6 @@ const USER = process.env.MEDIPOST_USER!;
const PASSWORD = process.env.MEDIPOST_PASSWORD!; const PASSWORD = process.env.MEDIPOST_PASSWORD!;
const RECIPIENT = process.env.MEDIPOST_RECIPIENT!; const RECIPIENT = process.env.MEDIPOST_RECIPIENT!;
const ANALYSIS_ELEMENT_HANDLE_PREFIX = 'analysis-element-';
const ANALYSIS_PACKAGE_HANDLE_PREFIX = 'analysis-package-'; const ANALYSIS_PACKAGE_HANDLE_PREFIX = 'analysis-package-';
function parseXML(xml: string) { function parseXML(xml: string) {
@@ -699,16 +698,12 @@ export async function getOrderedAnalysisElementsIds({
const countryCodes = await listRegions(); const countryCodes = await listRegions();
const countryCode = countryCodes[0]!.countries![0]!.iso_2!; const countryCode = countryCodes[0]!.countries![0]!.iso_2!;
function getOrderedAnalysisElements(medusaOrder: StoreOrder) { async function getOrderedAnalysisElements(medusaOrder: StoreOrder) {
return (medusaOrder?.items ?? []) const originalIds = (medusaOrder?.items ?? [])
.filter(({ product }) => product?.handle.startsWith(ANALYSIS_ELEMENT_HANDLE_PREFIX)) .map((a) => a.product?.metadata?.analysisIdOriginal)
.map((line) => { .filter((a) => typeof a === 'string') as string[];
const analysisElementId = Number(line.product?.handle?.replace(ANALYSIS_ELEMENT_HANDLE_PREFIX, '')); const analysisElements = await getAnalysisElements({ originalIds });
if (Number.isNaN(analysisElementId)) { return analysisElements.map(({ id }) => ({ analysisElementId: id }));
return null;
}
return { analysisElementId };
}) as { analysisElementId: number }[];
} }
async function getOrderedAnalysisPackages(medusaOrder: StoreOrder) { async function getOrderedAnalysisPackages(medusaOrder: StoreOrder) {
@@ -728,6 +723,9 @@ export async function getOrderedAnalysisElementsIds({
} }
const ids = getAnalysisElementMedusaProductIds(orderedPackagesProducts); const ids = getAnalysisElementMedusaProductIds(orderedPackagesProducts);
if (ids.length === 0) {
return [];
}
const { response: { products: analysisPackagesProducts } } = await listProducts({ const { response: { products: analysisPackagesProducts } } = await listProducts({
countryCode, countryCode,
queryParams: { limit: 100, id: ids }, queryParams: { limit: 100, id: ids },
@@ -747,8 +745,10 @@ export async function getOrderedAnalysisElementsIds({
return analysisElements.map(({ id }) => ({ analysisElementId: id })); return analysisElements.map(({ id }) => ({ analysisElementId: id }));
} }
const analysisPackageElements = await getOrderedAnalysisPackages(medusaOrder); const [analysisPackageElements, orderedAnalysisElements] = await Promise.all([
const orderedAnalysisElements = getOrderedAnalysisElements(medusaOrder); getOrderedAnalysisPackages(medusaOrder),
getOrderedAnalysisElements(medusaOrder),
]);
return [...analysisPackageElements, ...orderedAnalysisElements]; return [...analysisPackageElements, ...orderedAnalysisElements];
} }