Merged in feat/SW-3526-show-sas-eb-points-rate-in- (pull request #2933)

feat(SW-3526): Show EB points rate and label in booking flow

* feat(SW-3526): Show EB points rate and label in booking flow

* feat(SW-3526) Optimized points currency code

* feat(SW-3526) Removed extra multiplication for token expiry after rebase

* feat(SW-3526): Updated to exhaustive check and thow if type error

Approved-by: Anton Gunnarsson
This commit is contained in:
Hrishikesh Vaipurkar
2025-10-15 06:54:44 +00:00
parent 73af1eed9b
commit 78ede453a2
27 changed files with 281 additions and 176 deletions

View File

@@ -52,7 +52,11 @@ function add(...nums: (number | string | undefined)[]) {
}, 0)
}
export function getRoomPrice(roomRate: Product, isMember: boolean) {
export function getRoomPrice(
roomRate: Product,
isMember: boolean,
pointsCurrency?: CurrencyEnum
) {
if (isMember && "member" in roomRate && roomRate.member) {
let publicRate
if (
@@ -196,7 +200,7 @@ export function getRoomPrice(roomRate: Product, isMember: boolean) {
perNight: {
requested: undefined,
local: {
currency: CurrencyEnum.POINTS,
currency: pointsCurrency ?? CurrencyEnum.POINTS,
price: roomRate.redemption.localPrice.pointsPerStay,
additionalPrice:
roomRate.redemption.localPrice.additionalPricePerStay,
@@ -207,7 +211,7 @@ export function getRoomPrice(roomRate: Product, isMember: boolean) {
perStay: {
requested: undefined,
local: {
currency: CurrencyEnum.POINTS,
currency: pointsCurrency ?? CurrencyEnum.POINTS,
price: roomRate.redemption.localPrice.pointsPerStay,
additionalPrice:
roomRate.redemption.localPrice.additionalPricePerStay,
@@ -440,7 +444,11 @@ interface TRoomRedemption extends TRoom {
roomRate: RedemptionProduct
}
function getRedemptionPrice(rooms: TRoom[], nights: number) {
function getRedemptionPrice(
rooms: TRoom[],
nights: number,
pointsCurrency?: CurrencyEnum
) {
return rooms
.filter((room): room is TRoomRedemption => "redemption" in room.roomRate)
.reduce<Price>(
@@ -466,7 +474,7 @@ function getRedemptionPrice(rooms: TRoom[], nights: number) {
},
{
local: {
currency: CurrencyEnum.POINTS,
currency: pointsCurrency ?? CurrencyEnum.POINTS,
price: 0,
},
requested: undefined,
@@ -575,7 +583,8 @@ function getRegularPrice(rooms: TRoom[], isMember: boolean, nights: number) {
export function getTotalPrice(
rooms: TRoom[],
isMember: boolean,
nights: number
nights: number,
pointsCurrency?: CurrencyEnum
) {
const hasCorpChqRates = rooms.some(
(room) => "corporateCheque" in room.roomRate
@@ -586,7 +595,7 @@ export function getTotalPrice(
const hasRedemptionRates = rooms.some((room) => "redemption" in room.roomRate)
if (hasRedemptionRates) {
return getRedemptionPrice(rooms, nights)
return getRedemptionPrice(rooms, nights, pointsCurrency)
}
const hasVoucherRates = rooms.some((room) => "voucher" in room.roomRate)