* feat(SW-3516): Include partnerLoyaltyNumber on bookings - Added user context to BookingFlowProviders for user state management. - Updated booking input and output schemas to accommodate new user data. - Refactored booking mutation logic to include user-related information. - Improved type definitions for better TypeScript support across booking components. Approved-by: Anton Gunnarsson
88 lines
2.1 KiB
TypeScript
88 lines
2.1 KiB
TypeScript
import { z } from "zod"
|
|
|
|
import { Lang } from "@scandic-hotels/common/constants/language"
|
|
|
|
import { langToApiLang } from "../../constants/apiLang"
|
|
|
|
export const addPackageInput = z.object({
|
|
ancillaryComment: z.string(),
|
|
ancillaryDeliveryTime: z.string().nullish(),
|
|
packages: z.array(
|
|
z.object({
|
|
code: z.string(),
|
|
quantity: z.number(),
|
|
comment: z.string().optional(),
|
|
})
|
|
),
|
|
language: z.nativeEnum(Lang).transform((val) => langToApiLang[val]),
|
|
})
|
|
|
|
export const removePackageInput = z.object({
|
|
codes: z.array(z.string()),
|
|
language: z.nativeEnum(Lang).transform((val) => langToApiLang[val]),
|
|
})
|
|
|
|
export const cancelBookingsInput = z.object({
|
|
language: z.nativeEnum(Lang),
|
|
})
|
|
|
|
export const guaranteeBookingInput = z.object({
|
|
card: z
|
|
.object({
|
|
alias: z.string(),
|
|
expiryDate: z.string(),
|
|
cardType: z.string(),
|
|
})
|
|
.optional(),
|
|
language: z.nativeEnum(Lang).transform((val) => langToApiLang[val]),
|
|
success: z.string().nullable(),
|
|
error: z.string().nullable(),
|
|
cancel: z.string().nullable(),
|
|
})
|
|
|
|
export const createRefIdInput = z.object({
|
|
confirmationNumber: z
|
|
.string()
|
|
.trim()
|
|
.regex(/^\s*[0-9]+(-[0-9])?\s*$/)
|
|
.min(1),
|
|
lastName: z.string().trim().max(250).min(1),
|
|
})
|
|
|
|
export const updateBookingInput = z.object({
|
|
checkInDate: z.string().optional(),
|
|
checkOutDate: z.string().optional(),
|
|
guest: z
|
|
.object({
|
|
email: z.string().optional(),
|
|
phoneNumber: z.string().optional(),
|
|
countryCode: z.string().optional(),
|
|
})
|
|
.optional(),
|
|
language: z.nativeEnum(Lang).transform((val) => langToApiLang[val]),
|
|
})
|
|
|
|
// Query
|
|
|
|
export const getBookingInput = z.object({
|
|
lang: z.nativeEnum(Lang).optional(),
|
|
})
|
|
|
|
export const getLinkedReservationsInput = z.object({
|
|
lang: z.nativeEnum(Lang).optional(),
|
|
})
|
|
|
|
export const findBookingInput = z.object({
|
|
confirmationNumber: z.string(),
|
|
firstName: z.string(),
|
|
lastName: z.string(),
|
|
email: z.string(),
|
|
lang: z.nativeEnum(Lang).optional(),
|
|
})
|
|
|
|
export type LinkedReservationsInput = z.input<typeof getLinkedReservationsInput>
|
|
|
|
export const getBookingStatusInput = z.object({
|
|
lang: z.nativeEnum(Lang).optional(),
|
|
})
|