import type { Price } from "@/types/components/hotelReservation/price" import { type RoomPackage, RoomPackageCodeEnum, } from "@/types/components/hotelReservation/selectRate/roomFilter" import type { Rate } from "@/types/components/hotelReservation/selectRate/selectRate" export const calculateTotalPrice = ( selectedRateSummary: Rate[], isUserLoggedIn: boolean, petRoomPackage: RoomPackage | undefined ) => { return selectedRateSummary.reduce( (total, room) => { const priceToUse = isUserLoggedIn && room.member ? room.member : room.public const isPetRoom = room.features.find( (feature) => feature.code === RoomPackageCodeEnum.PET_ROOM ) let petRoomPrice = 0 if ( petRoomPackage && isPetRoom && room.package === RoomPackageCodeEnum.PET_ROOM ) { petRoomPrice = Number(petRoomPackage.localPrice.totalPrice) } return { local: { currency: priceToUse.localPrice.currency, price: total.local.price + priceToUse.localPrice.pricePerStay + petRoomPrice, }, requested: priceToUse.requestedPrice ? { currency: priceToUse.requestedPrice.currency, price: (total.requested?.price ?? 0) + priceToUse.requestedPrice.pricePerStay + petRoomPrice, } : undefined, } }, { local: { currency: selectedRateSummary[0].public.localPrice.currency, price: 0, }, requested: undefined, } ) }