pass elt request errors to rows

This commit is contained in:
vchikalkin 2024-07-12 19:40:45 +03:00
parent 06bd31da20
commit 3e2af34fe6
4 changed files with 25 additions and 13 deletions

View File

@ -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' })));

View File

@ -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' })));

View File

@ -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),

View File

@ -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 {