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";
|
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();
|
||||||
|
|
||||||
|
|||||||
@@ -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];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user