diff --git a/app/api/job/handler/sync-analysis-results.ts b/app/api/job/handler/sync-analysis-results.ts index 4d78ade..ddf07de 100644 --- a/app/api/job/handler/sync-analysis-results.ts +++ b/app/api/job/handler/sync-analysis-results.ts @@ -3,10 +3,15 @@ import { readPrivateMessageResponse } from "~/lib/services/medipost.service"; export default async function syncAnalysisResults() { console.info("Syncing analysis results"); + let processedMessageIds: string[] = []; const excludedMessageIds: string[] = []; while (true) { console.info("Fetching private messages"); - const { messageIdErrored } = await readPrivateMessageResponse({ excludedMessageIds }); + const { messageIdErrored, messageIdProcessed } = await readPrivateMessageResponse({ excludedMessageIds }); + if (messageIdProcessed) { + processedMessageIds.push(messageIdProcessed); + } + if (!messageIdErrored) { console.info("No more messages to process"); break; @@ -17,7 +22,8 @@ export default async function syncAnalysisResults() { break; } - console.info(`Message id=${messageIdErrored} has no response yet, skipping`); excludedMessageIds.push(messageIdErrored); } + + console.info(`Processed ${processedMessageIds.length} messages, ids: ${processedMessageIds.join(', ')}`); } diff --git a/app/home/(user)/(dashboard)/cart/montonio-callback/[montonioId]/route.ts b/app/home/(user)/(dashboard)/cart/montonio-callback/[montonioId]/route.ts index 5fd1284..8ed9d33 100644 --- a/app/home/(user)/(dashboard)/cart/montonio-callback/[montonioId]/route.ts +++ b/app/home/(user)/(dashboard)/cart/montonio-callback/[montonioId]/route.ts @@ -100,6 +100,7 @@ const handleOrderToken = async (orderToken: string) => { analysisPackageName: analysisPackageOrderItem?.title ?? '', }; } catch (error) { + console.error("Failed to place order", error); throw new Error(`Failed to place order, message=${error}`); } } diff --git a/lib/services/medipost.service.ts b/lib/services/medipost.service.ts index 3fc0af1..694b0bf 100644 --- a/lib/services/medipost.service.ts +++ b/lib/services/medipost.service.ts @@ -195,6 +195,7 @@ export async function readPrivateMessageResponse({ excludedMessageIds: string[]; }) { let messageIdErrored: string | null = null; + let messageIdProcessed: string | null = null; try { const privateMessage = await getLatestPrivateMessageListItem({ excludedMessageIds }); if (!privateMessage) { @@ -202,7 +203,10 @@ export async function readPrivateMessageResponse({ } messageIdErrored = privateMessage.messageId; - + if (!messageIdErrored) { + throw new Error(`No message id found`); + } + const privateMessageContent = await getPrivateMessage( privateMessage.messageId, ); @@ -216,12 +220,13 @@ export async function readPrivateMessageResponse({ if (status === 'COMPLETED') { await deletePrivateMessage(privateMessage.messageId); + messageIdProcessed = privateMessage.messageId; } } catch (e) { - console.error(e); + console.warn(`Failed to process private message id=${messageIdErrored}, message=${(e as Error).message}`); } - return { messageIdErrored }; + return { messageIdErrored, messageIdProcessed }; } async function saveAnalysisGroup( @@ -417,7 +422,14 @@ export async function composeOrderXML({ comment?: string; }) { const analysisElements = await getAnalysisElementsAdmin({ ids: orderedAnalysisElementsIds }); + if (analysisElements.length !== orderedAnalysisElementsIds.length) { + throw new Error(`Got ${analysisElements.length} analysis elements, expected ${orderedAnalysisElementsIds.length}`); + } + const analyses = await getAnalyses({ ids: orderedAnalysesIds }); + if (analyses.length !== orderedAnalysesIds.length) { + throw new Error(`Got ${analyses.length} analyses, expected ${orderedAnalysesIds.length}`); + } const analysisGroups: Tables<{ schema: 'medreport' }, 'analysis_groups'>[] = uniqBy( @@ -572,6 +584,7 @@ export async function syncPrivateMessage({ ); } const analysisGroups = toArray(messageResponse.UuringuGrupp); + console.info(`Order has results for ${analysisGroups.length} analysis groups`); const responses: Omit< Tables<{ schema: 'medreport' }, 'analysis_response_elements'>, @@ -581,6 +594,7 @@ export async function syncPrivateMessage({ const groupItems = toArray( analysisGroup.Uuring as ResponseUuringuGrupp['Uuring'], ); + console.info(`Order has results in group ${analysisGroup.UuringuGruppNimi} for ${groupItems.length} analysis elements`); for (const item of groupItems) { const element = item.UuringuElement; const elementAnalysisResponses = toArray(element.UuringuVastus);