Files
web/apps/scandic-web/components/HotelReservation/EnterDetails/Summary/UI/mapToPrice.ts
2025-04-23 08:45:50 +00:00

66 lines
1.6 KiB
TypeScript

import type { RoomState } from "@/types/stores/enter-details"
export function mapToPrice(rooms: RoomState[], isMember: boolean) {
return rooms
.filter((room) => room && room.room.roomRate)
.map(({ room }, idx) => {
const isMainRoom = idx === 0
if ("corporateCheque" in room.roomRate) {
return {
...room,
packages: room.roomFeatures,
price: {
corporateCheque: room.roomRate.corporateCheque.localPrice,
},
}
}
if ("redemption" in room.roomRate) {
return {
...room,
packages: room.roomFeatures,
price: {
redemption: room.roomRate.redemption.localPrice,
},
}
}
if ("voucher" in room.roomRate) {
return {
...room,
packages: room.roomFeatures,
price: {
voucher: room.roomRate.voucher,
},
}
}
const isMemberRate = !!(room.guest.join || room.guest.membershipNo)
if ((isMember && isMainRoom) || isMemberRate) {
if ("member" in room.roomRate && room.roomRate.member) {
return {
...room,
packages: room.roomFeatures,
price: {
regular: room.roomRate.member.localPrice,
},
}
}
}
if ("public" in room.roomRate && room.roomRate.public) {
return {
...room,
packages: room.roomFeatures,
price: {
regular: room.roomRate.public.localPrice,
},
}
}
console.error(room.roomRate)
throw new Error(`Unknown roomRate`)
})
}