по КАСКО: осуществлять проверку если в карточке Страховая компания "Фактическая доля" evo_kasko_fact_part > "Плановой доли" evo_kasko_plan_part, то в полученных результатах от ELT заменить значения: "requestId": обнулять, "skCalcId": обнулять "sum": обнулять "totalFranchise": обнулять
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { protectedProcedure } from '../../procedure';
|
|
import { router } from '../../trpc';
|
|
import { EltInputSchema, EltOutputSchema } from './types';
|
|
import { getEltKasko } from '@/api/elt/query';
|
|
import initializeApollo from '@/apollo/client';
|
|
import eltHelper from '@/process/elt/lib/helper';
|
|
import { makeEltKaskoRequest } from '@/process/elt/lib/request';
|
|
import { convertEltKaskoResponse } from '@/process/elt/lib/response';
|
|
import RootStore from '@/stores/root';
|
|
import { createTRPCError } from '@/utils/trpc';
|
|
|
|
export const eltKaskoRouter = router({
|
|
eltKasko: protectedProcedure
|
|
.input(EltInputSchema)
|
|
.output(EltOutputSchema)
|
|
.mutation(async ({ input }) => {
|
|
try {
|
|
const apolloClient = initializeApollo();
|
|
const store = new RootStore();
|
|
store.$calculation.$values.hydrate(input.calculation.values);
|
|
|
|
const { init: initElt } = await eltHelper({ apolloClient, store });
|
|
const { kasko: initRows } = await initElt();
|
|
|
|
const requests = initRows.map((row) =>
|
|
makeEltKaskoRequest({ apolloClient, store }, row).then((request) =>
|
|
getEltKasko(request)
|
|
.then((response) =>
|
|
convertEltKaskoResponse({ context: { apolloClient, store }, response, row }).then(
|
|
(convertedRow) => convertedRow
|
|
)
|
|
)
|
|
.catch((error) => ({ ...row, message: error.message, status: 'error' }))
|
|
)
|
|
);
|
|
|
|
return {
|
|
rows: await Promise.all(requests),
|
|
};
|
|
} catch (error) {
|
|
throw createTRPCError(error);
|
|
}
|
|
}),
|
|
});
|