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
This commit is contained in:
Bianca Widstam
2025-10-16 06:16:35 +00:00
parent c6f76b83cc
commit 6c65951fa7
4 changed files with 12 additions and 6 deletions

View File

@@ -37,7 +37,7 @@ export const rooms = safeProtectedServiceProcedure
.query(async function ({ ctx, input }) { .query(async function ({ ctx, input }) {
input.booking.rooms = input.booking.rooms.map((room) => ({ input.booking.rooms = input.booking.rooms.map((room) => ({
...room, ...room,
bookingCode: room.bookingCode || input.booking.bookingCode, bookingCode: input.booking.bookingCode,
})) }))
const availability = await getRoomsAvailability( const availability = await getRoomsAvailability(

View File

@@ -3,7 +3,7 @@ import { z } from "zod"
import { Lang } from "@scandic-hotels/common/constants/language" import { Lang } from "@scandic-hotels/common/constants/language"
import { baseBookingSchema, baseRoomSchema } from "../../../input" import { baseBookingSchema, selectRoomSchema } from "../../../input"
export type RoomsAvailabilityInputRoom = export type RoomsAvailabilityInputRoom =
RoomsAvailabilityInputSchema["booking"]["rooms"][number] RoomsAvailabilityInputSchema["booking"]["rooms"][number]
@@ -16,7 +16,7 @@ export type RoomsAvailabilityInputSchema = z.input<
export const selectRateRoomsAvailabilityInputSchema = z export const selectRateRoomsAvailabilityInputSchema = z
.object({ .object({
booking: baseBookingSchema.extend({ booking: baseBookingSchema.extend({
rooms: z.array(baseRoomSchema), rooms: z.array(selectRoomSchema),
}), }),
lang: z.nativeEnum(Lang), lang: z.nativeEnum(Lang),
}) })

View File

@@ -16,13 +16,19 @@ const childrenInRoomSchema = z
) )
.optional() .optional()
export const baseRoomSchema = z.object({ const sharedRoomFields = {
adults: z.number().int().min(1), adults: z.number().int().min(1),
bookingCode: z.string().optional(),
childrenInRoom: childrenInRoomSchema, childrenInRoom: childrenInRoomSchema,
packages: z packages: z
.array(z.nativeEnum({ ...BreakfastPackageEnum, ...RoomPackageCodeEnum })) .array(z.nativeEnum({ ...BreakfastPackageEnum, ...RoomPackageCodeEnum }))
.optional(), .optional(),
}
export const selectRoomSchema = z.object(sharedRoomFields)
export const baseRoomSchema = z.object({
...sharedRoomFields,
bookingCode: z.string().optional(),
}) })
export const selectedRoomSchema = z.object({ export const selectedRoomSchema = z.object({

View File

@@ -69,7 +69,7 @@ export async function getRoomsAvailability(
...(room.childrenInRoom?.length && { ...(room.childrenInRoom?.length && {
children: generateChildrenString(room.childrenInRoom), children: generateChildrenString(room.childrenInRoom),
}), }),
...(room.bookingCode && { bookingCode: room.bookingCode }), ...(bookingCode && { bookingCode: bookingCode }),
...(redemption && { isRedemption: "true" }), ...(redemption && { isRedemption: "true" }),
} }