import { PaymentMethodEnum } from "@/constants/booking" import type { RoomState } from "@/types/stores/enter-details" export function isPaymentMethodEnum(value: string): value is PaymentMethodEnum { return Object.values(PaymentMethodEnum).includes(value) } export function hasFlexibleRate({ room }: RoomState): boolean { return room.isFlexRate } export function hasPrepaidRate({ room }: RoomState): boolean { return !room.isFlexRate } export function calculateTotalRoomPrice( { room }: RoomState, initialRoomPrice?: number ) { let totalPrice = initialRoomPrice ?? room.roomPrice.perStay.local.price if (room.breakfast) { totalPrice += Number(room.breakfast.localPrice.totalPrice) * room.adults } if (room.roomFeatures) { room.roomFeatures.forEach((pkg) => { totalPrice += Number(pkg.localPrice.price) }) } let comparisonPrice = totalPrice const isMember = room.guest.join || room.guest.membershipNo if (isMember && "member" in room.roomRate) { const publicPrice = room.roomRate.public?.localPrice.pricePerStay ?? 0 const memberPrice = room.roomRate.member?.localPrice.pricePerStay ?? 0 const diff = publicPrice - memberPrice comparisonPrice = totalPrice + diff } return { totalPrice, comparisonPrice, } }