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";
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();

View File

@@ -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];
}