Files
web/packages/trpc/lib/routers/hotels/availability/selectRate/rooms/schema.ts
Bianca Widstam 6c65951fa7 Merged in BOOK-448-select-rate-reload-bookingcode (pull request #2974)
(BOOK-448): prevent refetching select rate availability when adding room bookingcode

* (BOOK-448): prevent refetching select rate availability when adding room bookingcode


Approved-by: Linus Flood
2025-10-16 06:16:35 +00:00

65 lines
1.5 KiB
TypeScript

import dayjs from "dayjs"
import { z } from "zod"
import { Lang } from "@scandic-hotels/common/constants/language"
import { baseBookingSchema, selectRoomSchema } from "../../../input"
export type RoomsAvailabilityInputRoom =
RoomsAvailabilityInputSchema["booking"]["rooms"][number]
export type RoomsAvailabilityOutputSchema = z.output<
typeof selectRateRoomsAvailabilityInputSchema
>
export type RoomsAvailabilityInputSchema = z.input<
typeof selectRateRoomsAvailabilityInputSchema
>
export const selectRateRoomsAvailabilityInputSchema = z
.object({
booking: baseBookingSchema.extend({
rooms: z.array(selectRoomSchema),
}),
lang: z.nativeEnum(Lang),
})
.refine(
(data) => {
const fromDate = dayjs(data.booking.fromDate)
return fromDate.isValid()
},
{
message: "FROMDATE_INVALID",
}
)
.refine(
(data) => {
const toDate = dayjs(data.booking.toDate)
return toDate.isValid()
},
{
message: "TODATE_INVALID",
}
)
.refine(
(data) => {
const fromDate = dayjs(data.booking.fromDate).startOf("day")
const toDate = dayjs(data.booking.toDate).startOf("day")
return fromDate.isBefore(toDate)
},
{
message: "TODATE_MUST_BE_AFTER_FROMDATE",
}
)
.refine(
(data) => {
const fromDate = dayjs(data.booking.fromDate)
const today = dayjs().startOf("day")
return fromDate.isSameOrAfter(today)
},
{
message: "FROMDATE_CANNOT_BE_IN_THE_PAST",
}
)