import { ChildBedTypeEnum } from "@/constants/booking" import { getFormattedUrlQueryParams } from "@/utils/url" import { ChildBedMapEnum } from "@/types/components/bookingWidget/enums" import { BookingData } from "@/types/components/hotelReservation/enterDetails/bookingData" import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter" import type { Child, SelectRateSearchParams, } from "@/types/components/hotelReservation/selectRate/selectRate" export function getHotelReservationQueryParams(searchParams: URLSearchParams) { return getFormattedUrlQueryParams(searchParams, { adults: "number", age: "number", bed: ChildBedMapEnum, }) as SelectRateSearchParams } export const bedTypeMap: Record = { [ChildBedMapEnum.IN_ADULTS_BED]: ChildBedTypeEnum.ParentsBed, [ChildBedMapEnum.IN_CRIB]: ChildBedTypeEnum.Crib, [ChildBedMapEnum.IN_EXTRA_BED]: ChildBedTypeEnum.ExtraBed, } export function generateChildrenString(children: Child[]): string { return `[${children .map((child) => { const age = child.age const bedType = bedTypeMap[parseInt(child.bed.toString())] return `${age}:${bedType}` }) .join(",")}]` } export function getQueryParamsForEnterDetails( searchParams: URLSearchParams ): BookingData { const selectRoomParamsObject = getHotelReservationQueryParams(searchParams) const { room } = selectRoomParamsObject return { fromDate: selectRoomParamsObject.fromDate, toDate: selectRoomParamsObject.toDate, hotel: selectRoomParamsObject.hotel, rooms: room.map((room) => ({ adults: room.adults, // TODO: Handle multiple rooms children: room.child, // TODO: Handle multiple rooms and children roomTypeCode: room.roomtype, rateCode: room.ratecode, packages: room.packages?.split(",") as RoomPackageCodeEnum[], })), } }