+
diff --git a/apps/scandic-web/components/HotelReservation/MyStay/ReferenceCard/Actions/NotCancelled/ManageStay/index.tsx b/apps/scandic-web/components/HotelReservation/MyStay/ReferenceCard/Actions/NotCancelled/ManageStay/index.tsx
index 92cb635a1..7116165d9 100644
--- a/apps/scandic-web/components/HotelReservation/MyStay/ReferenceCard/Actions/NotCancelled/ManageStay/index.tsx
+++ b/apps/scandic-web/components/HotelReservation/MyStay/ReferenceCard/Actions/NotCancelled/ManageStay/index.tsx
@@ -54,7 +54,7 @@ export default function ManageStay() {
>
diff --git a/packages/trpc/lib/api/endpoints.ts b/packages/trpc/lib/api/endpoints.ts
index 00aaf8caa..b8a9e680e 100644
--- a/packages/trpc/lib/api/endpoints.ts
+++ b/packages/trpc/lib/api/endpoints.ts
@@ -78,6 +78,9 @@ export namespace endpoints {
export function guarantee(confirmationNumber: string) {
return `${bookings}/${confirmationNumber}/guarantee`
}
+ export function confirmNotification(confirmationNumber: string) {
+ return `${bookings}/${confirmationNumber}/confirmNotification`
+ }
export const enum Stays {
future = `${base.path.booking}/${version}/${base.enitity.Stays}/future`,
diff --git a/packages/trpc/lib/routers/booking/input.ts b/packages/trpc/lib/routers/booking/input.ts
index 7cca42f3e..95906c893 100644
--- a/packages/trpc/lib/routers/booking/input.ts
+++ b/packages/trpc/lib/routers/booking/input.ts
@@ -22,6 +22,10 @@ export const removePackageInput = z.object({
language: z.nativeEnum(Lang).transform((val) => langToApiLang[val]),
})
+export const resendConfirmationInput = z.object({
+ language: z.nativeEnum(Lang).transform((val) => langToApiLang[val]),
+})
+
export const cancelBookingsInput = z.object({
language: z.nativeEnum(Lang),
})
diff --git a/packages/trpc/lib/routers/booking/mutation/index.ts b/packages/trpc/lib/routers/booking/mutation/index.ts
index 2878db24f..f49899e69 100644
--- a/packages/trpc/lib/routers/booking/mutation/index.ts
+++ b/packages/trpc/lib/routers/booking/mutation/index.ts
@@ -10,6 +10,7 @@ import {
cancelBookingsInput,
guaranteeBookingInput,
removePackageInput,
+ resendConfirmationInput,
updateBookingInput,
} from "../input"
import { bookingConfirmationSchema } from "../output"
@@ -318,6 +319,53 @@ export const bookingMutationRouter = router({
metricsRemovePackage.success()
+ return true
+ }),
+ resendConfirmation: safeProtectedServiceProcedure
+ .input(resendConfirmationInput)
+ .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 resendConfirmationCounter = createCounter(
+ "trpc.booking",
+ "confirmation.resend"
+ )
+ const metricsResendConfirmation = resendConfirmationCounter.init({
+ confirmationNumber,
+ })
+
+ metricsResendConfirmation.start()
+
+ const token = ctx.token ?? ctx.serviceToken
+ const headers = {
+ Authorization: `Bearer ${token}`,
+ }
+
+ const apiResponse = await api.post(
+ api.endpoints.v1.Booking.confirmNotification(confirmationNumber),
+ {
+ headers,
+ },
+ { language: input.language }
+ )
+
+ if (!apiResponse.ok) {
+ await metricsResendConfirmation.httpError(apiResponse)
+ return false
+ }
+
+ metricsResendConfirmation.success()
+
return true
}),
})