From 13213efb290356e982c65d834fd4f461362da48b Mon Sep 17 00:00:00 2001 From: Hrishikesh Vaipurkar Date: Tue, 25 Mar 2025 15:06:12 +0100 Subject: [PATCH] feat: SW-2028 Implemented validation for not enough points details page --- .../server/routers/hotels/query.ts | 19 ++++++++++++------- .../server/routers/hotels/utils.ts | 10 ++++++---- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/apps/scandic-web/server/routers/hotels/query.ts b/apps/scandic-web/server/routers/hotels/query.ts index fb2c4f884..5ba49a66b 100644 --- a/apps/scandic-web/server/routers/hotels/query.ts +++ b/apps/scandic-web/server/routers/hotels/query.ts @@ -657,12 +657,16 @@ export const hotelQueryRouter = router({ .use(async ({ ctx, input, next }) => { if (input.redemption) { if (ctx.session?.token.access_token) { - return next({ - ctx: { - token: ctx.session.token.access_token, - }, - input, - }) + const verifiedUser = await getVerifiedUser({ session: ctx.session }) + if (!verifiedUser?.error) { + return next({ + ctx: { + token: ctx.session.token.access_token, + userPoints: verifiedUser?.data.membership?.currentPoints, + }, + input, + }) + } } throw unauthorizedError() } @@ -677,7 +681,8 @@ export const hotelQueryRouter = router({ let selectedRoomData = await getSelectedRoomAvailability( input, toApiLang(ctx.lang), - ctx.token + ctx.token, + ctx.userPoints ) const { diff --git a/apps/scandic-web/server/routers/hotels/utils.ts b/apps/scandic-web/server/routers/hotels/utils.ts index 1f56cb3b2..261853348 100644 --- a/apps/scandic-web/server/routers/hotels/utils.ts +++ b/apps/scandic-web/server/routers/hotels/utils.ts @@ -575,7 +575,8 @@ function findProduct(product: Products, rateDefinition: RateDefinition) { export async function getSelectedRoomAvailability( input: z.input, lang: string, - serviceToken: string + serviceToken: string, + userPoints?: number ) { const { adults, @@ -696,9 +697,10 @@ export async function getSelectedRoomAvailability( } if (Array.isArray(product)) { - const redemptionProduct = product.find( - (r) => r.redemption.rateCode === rateDefinition.rateCode - ) + const redemptionProduct = userPoints ? product.find( + (r) => r.redemption.rateCode === rateDefinition.rateCode && + r.redemption.localPrice.pointsPerStay <= userPoints + ) : undefined if (!redemptionProduct) { return null }