import { t } from "i18next"; import { useEffect } from "react"; import { useApp } from "@/hooks/useApp"; import type { Room as RoomInfoType, RoomCollectionResult, RoomGroupResult, } from "@/services/eva-display/hotel/hotel-detail/hotel-detail-services.types"; import type { IHotelSearchResultSerializer } from "@/services/eva-display/hotel/hotel-search/hotel-search-services.serializer"; import { usePayment } from "../modules/hotel/payment/hooks/use-hotel-payment"; import MultipleRoomInfo from "./components/multiple-room-info/multiple-room-info"; import RezervationSummary from "./components/reservation-summary/reservation-summary"; import RoomInfo from "./components/room-info/room-info"; import RoomInfoError from "./components/room-info-error/room-info-error"; import RoomTravelPlanner from "./components/room-travel-planner/room-travel-planner"; import { RoomsCtxProvider } from "./context/RoomContext"; export interface RoomProps { data: RoomCollectionResult[]; roomGroupResult: RoomGroupResult[]; searchData?: IHotelSearchResultSerializer; searchId: string; hideTravelPlanner?: boolean; primaryButtonOnClick?(selectedRoom: any): void; passengerKeys?: { type: number; key: string; age: number; }[]; } const RoomContent = (props: { data: RoomCollectionResult[]; roomCount: number; searchData?: IHotelSearchResultSerializer; primaryButtonOnClick?(selectedRoom: any): void; hideTravelPlanner?: boolean; }) => { const { isOtel } = useApp(); return ( <> {!props.hideTravelPlanner && }
{props.roomCount > 1 ? ( ) : (
{props.data.map((item, index) => ( ))}
)}
); }; const Room = ({ searchId, searchData, data, hideTravelPlanner = false, roomGroupResult, passengerKeys, primaryButtonOnClick, }: RoomProps) => { const { isOtel, isB2E } = useApp(); function getRoomsInfo() { const temp: RoomInfoType[] = []; data?.forEach((item) => { item.rooms.forEach((room) => { if (!isB2E || !room.onDemand) { temp.push(room); } }); }); return temp; } const roomsInfo = getRoomsInfo(); const { setPaymentState } = usePayment(); useEffect(() => { setPaymentState("idle"); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); if (roomsInfo.length === 0 || !data) { return ; } const findRoomCount = (dataFilter: RoomCollectionResult[]) => { let maxRoomIndex = 0; dataFilter.forEach((item) => { item?.rooms.forEach((room: any) => { if (room.roomIndex > maxRoomIndex) { maxRoomIndex = room.roomIndex; } }); }); return maxRoomIndex; }; const roomCount = findRoomCount(data); const documentNumber = searchData?.documentNumber; return (
{documentNumber && isOtel && (
{t("Ministry of Culture and Tourism/Tourism") + t("Operation Certificate")} :{documentNumber}
)}
); }; export default Room;