import { CancellationRuleEnum, 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.cancellationRule === CancellationRuleEnum.CancellableBefore6PM } export function hasPrepaidRate({ room }: RoomState): boolean { return room.cancellationRule !== CancellationRuleEnum.CancellableBefore6PM } export function calculateTotalRoomPrice({ room }: RoomState) { let totalPrice = 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) { const publicPrice = room.roomRate.publicRate?.localPrice.pricePerStay ?? 0 const memberPrice = room.roomRate.memberRate?.localPrice.pricePerStay ?? 0 const diff = publicPrice - memberPrice comparisonPrice = totalPrice + diff } return { totalPrice, comparisonPrice, } }