From 3e2af34fe66f3cb94e910b6a728a18ccfea44249 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Fri, 12 Jul 2024 19:40:45 +0300 Subject: [PATCH] pass elt request errors to rows --- .../web/Components/Calculation/Form/ELT/Kasko.tsx | 5 +++++ .../web/Components/Calculation/Form/ELT/Osago.tsx | 5 +++++ apps/web/server/routers/elt/kasko.ts | 13 +++++++------ apps/web/server/routers/elt/osago.ts | 15 ++++++++------- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/apps/web/Components/Calculation/Form/ELT/Kasko.tsx b/apps/web/Components/Calculation/Form/ELT/Kasko.tsx index 1e4b4a6..8455f43 100644 --- a/apps/web/Components/Calculation/Form/ELT/Kasko.tsx +++ b/apps/web/Components/Calculation/Form/ELT/Kasko.tsx @@ -15,6 +15,11 @@ export const Kasko = observer(() => { const { $calculation, $tables } = store; const calculateKasko = trpcClient.eltKasko.useMutation({ + onError() { + $tables.elt.kasko.setRows( + $tables.elt.kasko.getRows.map((row) => ({ ...row, status: 'error' })) + ); + }, onMutate: () => { const rows = $tables.elt.kasko.getRows; $tables.elt.kasko.setRows(rows.map((row) => ({ ...resetRow(row), status: 'fetching' }))); diff --git a/apps/web/Components/Calculation/Form/ELT/Osago.tsx b/apps/web/Components/Calculation/Form/ELT/Osago.tsx index 7badd4f..23a4e53 100644 --- a/apps/web/Components/Calculation/Form/ELT/Osago.tsx +++ b/apps/web/Components/Calculation/Form/ELT/Osago.tsx @@ -16,6 +16,11 @@ export const Osago = observer(() => { const { $tables } = store; const calculateOsago = trpcClient.eltOsago.useMutation({ + onError() { + $tables.elt.osago.setRows( + $tables.elt.osago.getRows.map((row) => ({ ...row, status: 'error' })) + ); + }, onMutate: () => { const rows = $tables.elt.osago.getRows; $tables.elt.osago.setRows(rows.map((row) => ({ ...resetRow(row), status: 'fetching' }))); diff --git a/apps/web/server/routers/elt/kasko.ts b/apps/web/server/routers/elt/kasko.ts index 78d75cc..15ce450 100644 --- a/apps/web/server/routers/elt/kasko.ts +++ b/apps/web/server/routers/elt/kasko.ts @@ -22,12 +22,13 @@ export const eltKaskoRouter = router({ const { init: initElt } = await eltHelper({ apolloClient, store }); const { kasko: initRows } = await initElt(); - const requests = initRows.map(async (row) => { - const eltRequest = await makeEltKaskoRequest({ apolloClient, store }, row); - const eltResponse = await getEltKasko(eltRequest); - - return convertEltKaskoResponse(eltResponse, row, input.calculation.values); - }); + const requests = initRows.map((row) => + makeEltKaskoRequest({ apolloClient, store }, row).then((request) => + getEltKasko(request) + .then((response) => convertEltKaskoResponse(response, row, input.calculation.values)) + .catch((error) => ({ ...row, message: error.message, status: 'error' })) + ) + ); return { rows: await Promise.all(requests), diff --git a/apps/web/server/routers/elt/osago.ts b/apps/web/server/routers/elt/osago.ts index f18ba6b..48f69c8 100644 --- a/apps/web/server/routers/elt/osago.ts +++ b/apps/web/server/routers/elt/osago.ts @@ -24,15 +24,16 @@ export const eltOsagoRouter = router({ const requests = initRows.map(async (row) => { if (row.metodCalc === 'CRM') { - const ownRequest = await ownOsagoRequest({ apolloClient, store }, row); - - return convertOwnOsagoResult(ownRequest, row); + return ownOsagoRequest({ apolloClient, store }, row).then((request) => + convertOwnOsagoResult(request, row) + ); } - const eltRequest = await makeEltOsagoRequest({ apolloClient, store }, row); - const eltResponse = await getEltOsago(eltRequest); - - return convertEltOsagoResponse(eltResponse, row); + return makeEltOsagoRequest({ apolloClient, store }, row).then((request) => + getEltOsago(request) + .then((response) => convertEltOsagoResponse(response, row)) + .catch((error) => ({ ...row, message: error.message, status: 'error' })) + ); }); return {