diff --git a/apps/web/server/routers/calculate/index.ts b/apps/web/server/routers/calculate/index.ts index ecb9aff..e6e2595 100644 --- a/apps/web/server/routers/calculate/index.ts +++ b/apps/web/server/routers/calculate/index.ts @@ -7,6 +7,7 @@ import { calculate } from '@/api/core/query'; import type { User } from '@/api/user/types'; import initializeApollo from '@/apollo/client'; import { protectedProcedure } from '@/server/procedure'; +import { createTRPCError } from '@/utils/trpc'; import { QueryClient } from '@tanstack/react-query'; export const calculateRouter = router({ @@ -50,22 +51,26 @@ export const calculateRouter = router({ input, }); - const calculateResult = await calculate(requestData); + try { + const calculateResult = await calculate(requestData); - const result = transformCalculateResults({ - calculateInput: input, - requestCalculate: requestData, - responseCalculate: calculateResult, - }); + const result = transformCalculateResults({ + calculateInput: input, + requestCalculate: requestData, + responseCalculate: calculateResult, + }); - // TEMP - if (ctx.unlimited) { - result.__calculateResult = calculateResult; + // TEMP + if (ctx.unlimited) { + result.__calculateResult = calculateResult; + } + + return { + data: result, + success: true, + }; + } catch (error) { + throw createTRPCError(error); } - - return { - data: result, - success: true, - }; }), }); diff --git a/apps/web/server/routers/quote/index.ts b/apps/web/server/routers/quote/index.ts index 65ab388..b224cee 100644 --- a/apps/web/server/routers/quote/index.ts +++ b/apps/web/server/routers/quote/index.ts @@ -34,6 +34,7 @@ import * as price from '@/process/price'; import * as subsidy from '@/process/subsidy'; import * as supplierAgent from '@/process/supplier-agent'; import type { CalculationValues } from '@/stores/calculation/values/types'; +import { createTRPCError } from '@/utils/trpc'; import { QueryClient } from '@tanstack/react-query'; const { DEFAULT_FINGAP_ROW, DEFAULT_KASKO_ROW, DEFAULT_OSAGO_ROW } = insuranceTable; @@ -119,47 +120,51 @@ export const quoteRouter = router({ user = { domainName: input.values.user }; } - const requestData = await createRequestData({ - context: { - apolloClient, - queryClient, - ...ctx, - user, - }, - input, - }); + try { + const requestData = await createRequestData({ + context: { + apolloClient, + queryClient, + ...ctx, + user, + }, + input, + }); - const calculateResult = await calculate(requestData); + const calculateResult = await calculate(requestData); - const requestCreateKP = compatRequestCreateKP({ - domainName: user.domainName, - finGAP: input.fingap, - insurance: Object.values(input.insurance.values), - calculation: { - calculationValues: await compatValues(input.values, { apolloClient }), - ...calculateResult, - preparedPayments: requestData.preparedPayments, - additionalData: requestData.additionalData, - }, - elt: input.elt, - }); + const requestCreateKP = compatRequestCreateKP({ + domainName: user.domainName, + finGAP: input.fingap, + insurance: Object.values(input.insurance.values), + calculation: { + calculationValues: await compatValues(input.values, { apolloClient }), + ...calculateResult, + preparedPayments: requestData.preparedPayments, + additionalData: requestData.additionalData, + }, + elt: input.elt, + }); - const createKPResult = await createKP(requestCreateKP); + const createKPResult = await createKP(requestCreateKP); - const result = transformCalculateResults({ - calculateInput: input, - requestCalculate: requestData, - responseCalculate: calculateResult, - }); + const result = transformCalculateResults({ + calculateInput: input, + requestCalculate: requestData, + responseCalculate: calculateResult, + }); - if (URL_CRM_DOWNLOADKP) { - result.values.downloadKp = URL_CRM_DOWNLOADKP?.concat(createKPResult.offerprintformapi); + if (URL_CRM_DOWNLOADKP) { + result.values.downloadKp = URL_CRM_DOWNLOADKP?.concat(createKPResult.offerprintformapi); + } + + return { + data: result, + success: true, + }; + } catch (error) { + throw createTRPCError(error); } - - return { - data: result, - success: true, - }; }), }); diff --git a/apps/web/utils/trpc.ts b/apps/web/utils/trpc.ts new file mode 100644 index 0000000..5fcde23 --- /dev/null +++ b/apps/web/utils/trpc.ts @@ -0,0 +1,22 @@ +import { HttpError } from './error'; +import { TRPCError } from '@trpc/server'; +import type { TRPC_ERROR_CODE_KEY } from '@trpc/server/rpc'; + +export function createTRPCError(error: unknown) { + let code: TRPC_ERROR_CODE_KEY = 'INTERNAL_SERVER_ERROR'; + let message = ''; + + if (error instanceof HttpError && error.statusCode === 400) { + code = 'BAD_REQUEST'; + } + + if (error instanceof Error) { + message = error.message; + } + + return new TRPCError({ + cause: error, + code, + message, + }); +}