import { createCounter } from "@scandic-hotels/common/telemetry" import * as api from "../../../api" import { toApiLang } from "../../../utils" import { bookingConfirmationSchema } from "../getBooking/schema" import type { Lang } from "@scandic-hotels/common/constants/language" export async function addPackageToBooking( { lang, ...input }: { confirmationNumber: string lang: Lang packages: { code: string quantity: number comment?: string | undefined }[] ancillaryComment: string ancillaryDeliveryTime?: string | null | undefined }, token: string ) { const addPackageCounter = createCounter("trpc.booking.package.add") const metricsAddPackage = addPackageCounter.init({ confirmationNumber: input.confirmationNumber, language: lang, }) metricsAddPackage.start() const apiResponse = await api.post( api.endpoints.v1.Booking.packages(input.confirmationNumber), { headers: { Authorization: `Bearer ${token}`, }, body: input, }, { language: toApiLang(lang) } ) if (!apiResponse.ok) { await metricsAddPackage.httpError(apiResponse) return null } const apiJson = await apiResponse.json() const verifiedData = bookingConfirmationSchema.safeParse(apiJson) if (!verifiedData.success) { metricsAddPackage.validationError(verifiedData.error) return null } metricsAddPackage.success() return verifiedData.data }