fix: filter out room availability based on packages
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import { z } from "zod"
|
||||
|
||||
import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter"
|
||||
|
||||
export const getHotelsAvailabilityInputSchema = z.object({
|
||||
cityId: z.string(),
|
||||
roomStayStartDate: z.string(),
|
||||
@@ -34,6 +36,7 @@ export const getSelectedRoomAvailabilityInputSchema = z.object({
|
||||
attachedProfileId: z.string().optional().default(""),
|
||||
rateCode: z.string(),
|
||||
roomTypeCode: z.string(),
|
||||
packageCodes: z.array(z.nativeEnum(RoomPackageCodeEnum)).optional(),
|
||||
})
|
||||
|
||||
export type GetSelectedRoomAvailabilityInput = z.input<
|
||||
|
||||
@@ -624,6 +624,7 @@ export const hotelQueryRouter = router({
|
||||
attachedProfileId,
|
||||
rateCode,
|
||||
roomTypeCode,
|
||||
packageCodes,
|
||||
} = input
|
||||
|
||||
const params: Record<string, string | number | undefined> = {
|
||||
@@ -723,17 +724,35 @@ export const hotelQueryRouter = router({
|
||||
ctx.serviceToken
|
||||
)
|
||||
|
||||
const selectedRoom = validateAvailabilityData.data.roomConfigurations
|
||||
.filter((room) => room.status === "Available")
|
||||
.find((room) => room.roomTypeCode === roomTypeCode)
|
||||
console.log({ packageCodes })
|
||||
|
||||
const availableRoomsInCategory =
|
||||
validateAvailabilityData.data.roomConfigurations.filter(
|
||||
(room) =>
|
||||
room.status === "Available" &&
|
||||
room.roomType === selectedRoom?.roomType
|
||||
)
|
||||
const availableRooms =
|
||||
validateAvailabilityData.data.roomConfigurations.filter((room) => {
|
||||
if (packageCodes) {
|
||||
return (
|
||||
room.status === "Available" &&
|
||||
room.features.some(
|
||||
(feature) =>
|
||||
packageCodes.includes(feature.code) && feature.inventory > 0
|
||||
)
|
||||
)
|
||||
}
|
||||
return room.status === "Available"
|
||||
})
|
||||
|
||||
console.log("hrteij", JSON.stringify(availableRooms, null, 4))
|
||||
const selectedRoom = availableRooms.find(
|
||||
(room) => room.roomTypeCode === roomTypeCode
|
||||
)
|
||||
|
||||
const availableRoomsInCategory = availableRooms.filter(
|
||||
(room) => room.roomType === selectedRoom?.roomType
|
||||
)
|
||||
|
||||
console.log(
|
||||
"availableRoomsInCategory",
|
||||
JSON.stringify(availableRoomsInCategory, null, 4)
|
||||
)
|
||||
if (!selectedRoom) {
|
||||
console.error("No matching room found")
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user