import { z } from "zod" import { Lang } from "@scandic-hotels/common/constants/language" import { createRefIdPlugin } from "../../../plugins/refIdToConfirmationNumber" import { safeProtectedServiceProcedure } from "../../../procedures" import { guaranteeBooking } from "../../../services/booking/guaranteeBooking" const guaranteeBookingInput = z.object({ card: z .object({ alias: z.string(), expiryDate: z.string(), cardType: z.string(), }) .optional(), language: z.nativeEnum(Lang), success: z.string().nullable(), error: z.string().nullable(), cancel: z.string().nullable(), }) const refIdPlugin = createRefIdPlugin() export const guaranteeBookingRoute = safeProtectedServiceProcedure .input(guaranteeBookingInput) .concat(refIdPlugin.toConfirmationNumber) .use(async ({ ctx, next }) => { const token = await ctx.getScandicUserToken() return next({ ctx: { token, }, }) }) .mutation(async function ({ ctx, input }) { const { confirmationNumber } = ctx const { language, refId, ...body } = input const token = ctx.token ?? ctx.serviceToken return guaranteeBooking({ confirmationNumber, language, ...body }, token) })