"use client" import { useRouter, useSearchParams } from "next/navigation" import { useMemo, useState } from "react" import RateSummary from "./RateSummary" import RoomCard from "./RoomCard" import { getHotelReservationQueryParams } from "./utils" import styles from "./roomSelection.module.css" import type { RoomSelectionProps } from "@/types/components/hotelReservation/selectRate/roomSelection" import type { Rate } from "@/types/components/hotelReservation/selectRate/selectRate" export default function RoomSelection({ roomsAvailability, roomCategories, user, packages, selectedPackages, }: RoomSelectionProps) { const [rateSummary, setRateSummary] = useState(null) const router = useRouter() const searchParams = useSearchParams() const isUserLoggedIn = !!user const { roomConfigurations, rateDefinitions } = roomsAvailability const queryParams = useMemo(() => { const params = new URLSearchParams(searchParams) const searchParamsObject = getHotelReservationQueryParams(searchParams) searchParamsObject.room.forEach((item, index) => { if (rateSummary?.roomTypeCode) { params.set(`room[${index}].roomtype`, rateSummary.roomTypeCode) } if (rateSummary?.public?.rateCode) { params.set(`room[${index}].ratecode`, rateSummary.public.rateCode) } if (rateSummary?.member?.rateCode) { params.set( `room[${index}].counterratecode`, rateSummary.member.rateCode ) } if (selectedPackages.length > 0) { params.set(`room[${index}].packages`, selectedPackages.join(",")) } }) return params }, [searchParams, rateSummary, selectedPackages]) function handleSubmit(e: React.FormEvent) { e.preventDefault() router.push(`select-bed?${queryParams}`) } return (
    {roomConfigurations.map((roomConfiguration) => (
  • ))}
{rateSummary && ( )}
) }