diff --git a/apps/web/process/calculate/action.ts b/apps/web/process/calculate/action.ts index b0d319f..1ad27cd 100644 --- a/apps/web/process/calculate/action.ts +++ b/apps/web/process/calculate/action.ts @@ -34,24 +34,15 @@ export async function action({ store, trpcClient }: ProcessContext) { values, }) .then((res) => { - if (res.success === false) { - notification.error({ - description: res.error, - key, - message: errorMessage, - placement: 'bottomRight', - }); - } else { - $results.setPayments(res.data.resultPayments); - $results.setValues(res.data.resultValues); - $calculation.$values.setValues(res.data.values); + $results.setPayments(res.data.resultPayments); + $results.setValues(res.data.resultValues); + $calculation.$values.setValues(res.data.values); - notification.success({ - key, - message: successMessage, - placement: 'bottomRight', - }); - } + notification.success({ + key, + message: successMessage, + placement: 'bottomRight', + }); }) .catch((error_) => { const error = error_ as Error; diff --git a/apps/web/process/create-kp/action.ts b/apps/web/process/create-kp/action.ts index c1ea0dd..757892f 100644 --- a/apps/web/process/create-kp/action.ts +++ b/apps/web/process/create-kp/action.ts @@ -42,42 +42,33 @@ export function action({ store, trpcClient, apolloClient }: ProcessContext) { values, }) .then(async (res) => { - if (res.success === false) { - notification.error({ - description: res.error, - key, - message: errorMessage, - placement: 'bottomRight', - }); - } else { - $results.setPayments(res.data.resultPayments); - $results.setValues(res.data.resultValues); - $calculation.$values.setValues({ ...res.data.values, recalcWithRevision: false }); + $results.setPayments(res.data.resultPayments); + $results.setValues(res.data.resultValues); + $calculation.$values.setValues({ ...res.data.values, recalcWithRevision: false }); - notification.success({ - key, - message: successMessage, - placement: 'bottomRight', + notification.success({ + key, + message: successMessage, + placement: 'bottomRight', + }); + + const leadid = $calculation.element('selectLead').getValue(); + + if (leadid) { + const { + data: { quotes }, + } = await apolloClient.query({ + fetchPolicy: 'network-only', + query: CRMTypes.GetQuotesDocument, + variables: { + leadid, + }, }); - const leadid = $calculation.element('selectLead').getValue(); - - if (leadid) { - const { - data: { quotes }, - } = await apolloClient.query({ - fetchPolicy: 'network-only', - query: CRMTypes.GetQuotesDocument, - variables: { - leadid, - }, - }); - - $calculation - .element('selectQuote') - .setOptions(normalizeOptions(quotes)) - .setValue(values.quote); - } + $calculation + .element('selectQuote') + .setOptions(normalizeOptions(quotes)) + .setValue(values.quote); } }) .catch((error_) => { diff --git a/apps/web/server/routers/calculate/index.ts b/apps/web/server/routers/calculate/index.ts index e6e2595..b664075 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 { HttpError } from '@/utils/error'; import { createTRPCError } from '@/utils/trpc'; import { QueryClient } from '@tanstack/react-query'; @@ -18,40 +19,37 @@ export const calculateRouter = router({ const apolloClient = initializeApollo(); const queryClient = new QueryClient(); - if (!ctx.unlimited) { - const validationResult = await validate({ + try { + if (!ctx.unlimited) { + const validationResult = await validate({ + context: { + apolloClient, + queryClient, + user: ctx.user, + }, + input, + }); + + if (validationResult.success === false) { + throw new HttpError(validationResult.message, 400); + } + } + + let user: Pick = { domainName: ctx.user.domainName }; + if (ctx.unlimited && input.values.user) { + user = { domainName: input.values.user }; + } + + const requestData = await createRequestData({ context: { apolloClient, queryClient, - user: ctx.user, + ...ctx, + user, }, input, }); - if (validationResult.success === false) { - return { - error: validationResult.error, - success: false, - }; - } - } - - let user: Pick = { domainName: ctx.user.domainName }; - if (ctx.unlimited && input.values.user) { - user = { domainName: input.values.user }; - } - - const requestData = await createRequestData({ - context: { - apolloClient, - queryClient, - ...ctx, - user, - }, - input, - }); - - try { const calculateResult = await calculate(requestData); const result = transformCalculateResults({ diff --git a/apps/web/server/routers/calculate/lib/validation.ts b/apps/web/server/routers/calculate/lib/validation.ts index 85b2ef7..25c878d 100644 --- a/apps/web/server/routers/calculate/lib/validation.ts +++ b/apps/web/server/routers/calculate/lib/validation.ts @@ -49,14 +49,14 @@ export async function validate({ input, context }: { context: Context; input: Ca }); if (validationResult.success === false) { - const error = getMessage(validationResult.error.errors); + const message = getMessage(validationResult.error.errors); - return { error, success: false }; + return { message, success: false }; } } return { - error: '', + message: '', success: true, }; } diff --git a/apps/web/server/routers/calculate/types.ts b/apps/web/server/routers/calculate/types.ts index c508af1..1633d9f 100644 --- a/apps/web/server/routers/calculate/types.ts +++ b/apps/web/server/routers/calculate/types.ts @@ -34,15 +34,9 @@ export const OutputDataSchema = z.object({ export type OutputData = z.infer; -export const CalculateOutputSchema = z.union([ - z.object({ - data: OutputDataSchema, - success: z.literal(true), - }), - z.object({ - error: z.string(), - success: z.literal(false), - }), -]); +export const CalculateOutputSchema = z.object({ + data: OutputDataSchema, + success: z.literal(true), +}); export type CalculateOutput = z.infer; diff --git a/apps/web/server/routers/quote/index.ts b/apps/web/server/routers/quote/index.ts index b224cee..348baa3 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 { HttpError } from '@/utils/error'; import { createTRPCError } from '@/utils/trpc'; import { QueryClient } from '@tanstack/react-query'; @@ -97,30 +98,27 @@ export const quoteRouter = router({ const apolloClient = initializeApollo(); const queryClient = new QueryClient(); - if (!ctx.unlimited) { - const validationResult = await validate({ - context: { - apolloClient, - queryClient, - user: ctx.user, - }, - input, - }); - - if (validationResult.success === false) { - return { - error: validationResult.error, - success: false, - }; - } - } - - let user: Pick = { domainName: ctx.user.domainName }; - if (ctx.unlimited && input.values.user) { - user = { domainName: input.values.user }; - } - try { + if (!ctx.unlimited) { + const validationResult = await validate({ + context: { + apolloClient, + queryClient, + user: ctx.user, + }, + input, + }); + + if (validationResult.success === false) { + throw new HttpError(validationResult.message, 400); + } + } + + let user: Pick = { domainName: ctx.user.domainName }; + if (ctx.unlimited && input.values.user) { + user = { domainName: input.values.user }; + } + const requestData = await createRequestData({ context: { apolloClient,