66 lines
1.6 KiB
TypeScript
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`)
|
|
})
|
|
}
|