"use client" import { dt } from "@/lib/dt" import { useBookingConfirmationStore } from "@/stores/booking-confirmation" import PriceDetailsModal from "@/components/HotelReservation/PriceDetailsModal" import { mapToPrice } from "./mapToPrice" import type { Price } from "@/types/components/hotelReservation/price" import { CurrencyEnum } from "@/types/enums/currency" export default function PriceDetails() { const { bookingCode, currency, fromDate, rooms, vat, toDate } = useBookingConfirmationStore((state) => ({ bookingCode: state.bookingCode ?? undefined, currency: state.currencyCode, fromDate: state.fromDate, rooms: state.rooms, toDate: state.toDate, vat: state.vat, })) if (!rooms[0]) { return null } const checkInDate = dt(fromDate).format("YYYY-MM-DD") const checkOutDate = dt(toDate).format("YYYY-MM-DD") const nights = dt(toDate) .startOf("day") .diff(dt(fromDate).startOf("day"), "days") const totalPrice = rooms.reduce( (total, room) => { if (!room) { return total } if (room.cheques) { // CorporateCheque Booking total.local.currency = CurrencyEnum.CC total.local.price = total.local.price + room.cheques } else if (room.roomPoints) { // Redemption Booking total.local.currency = CurrencyEnum.POINTS total.local.price = total.local.price + room.roomPoints } else if (room.vouchers) { // Vouchers Booking total.local.currency = CurrencyEnum.Voucher total.local.price = total.local.price + room.vouchers } else { // Price Booking total.local.price = total.local.price + room.totalPrice } if ( (room.cheques || room.roomPoints || room.vouchers) && room.roomPrice ) { total.local.additionalPrice = (total.local.additionalPrice || 0) + room.totalPrice total.local.additionalPriceCurrency = currency } return total }, { local: { currency, price: 0, }, requested: undefined, } ) const mappedRooms = mapToPrice(rooms, nights) return ( ) }