feat: refactor of my stay

This commit is contained in:
Simon Emanuelsson
2025-04-25 14:08:14 +02:00
committed by Simon.Emanuelsson
parent b5deb84b33
commit ec087a3d15
208 changed files with 5458 additions and 4569 deletions

View File

@@ -6,6 +6,7 @@ import { router, safeProtectedServiceProcedure } from "@/server/trpc"
import {
addPackageInput,
cancelBookingInput,
cancelManyBookingsInput,
createBookingInput,
guaranteeBookingInput,
priceChangeInput,
@@ -13,6 +14,7 @@ import {
updateBookingInput,
} from "./input"
import { bookingConfirmationSchema, createBookingSchema } from "./output"
import { cancelBooking } from "./utils"
export const bookingMutationRouter = router({
create: safeProtectedServiceProcedure
@@ -113,52 +115,40 @@ export const bookingMutationRouter = router({
cancel: safeProtectedServiceProcedure
.input(cancelBookingInput)
.mutation(async function ({ ctx, input }) {
const accessToken = ctx.session?.token.access_token ?? ctx.serviceToken
const token = ctx.session?.token.access_token ?? ctx.serviceToken
const { confirmationNumber, language } = input
return await cancelBooking(confirmationNumber, language, token)
}),
cancelMany: safeProtectedServiceProcedure
.input(cancelManyBookingsInput)
.mutation(async function ({ ctx, input }) {
const token = ctx.session?.token.access_token ?? ctx.serviceToken
const { confirmationNumbers, language } = input
const cancelBookingCounter = createCounter("trpc.booking", "cancel")
const metricsCancelBooking = cancelBookingCounter.init({
confirmationNumber,
language,
})
metricsCancelBooking.start()
const headers = {
Authorization: `Bearer ${accessToken}`,
}
const cancellationReason = {
reasonCode: "WEB-CANCEL",
reason: "WEB-CANCEL",
}
const apiResponse = await api.remove(
api.endpoints.v1.Booking.cancel(confirmationNumber),
{
headers,
body: JSON.stringify(cancellationReason),
} as RequestInit,
{ language }
const responses = await Promise.allSettled(
confirmationNumbers.map((confirmationNumber) =>
cancelBooking(confirmationNumber, language, token)
)
)
if (!apiResponse.ok) {
await metricsCancelBooking.httpError(apiResponse)
return false
const cancelledRoomsSuccessfully = []
for (const [idx, response] of responses.entries()) {
if (response.status === "fulfilled") {
if (response.value) {
cancelledRoomsSuccessfully.push(true)
continue
}
} else {
console.info(
`Cancelling booking failed for confirmationNumber: ${confirmationNumbers[idx]}`
)
console.error(response.reason)
}
cancelledRoomsSuccessfully.push(false)
}
const apiJson = await apiResponse.json()
const verifiedData = createBookingSchema.safeParse(apiJson)
if (!verifiedData.success) {
metricsCancelBooking.validationError(verifiedData.error)
return null
}
metricsCancelBooking.success()
return verifiedData.data
return cancelledRoomsSuccessfully
}),
packages: safeProtectedServiceProcedure
.input(addPackageInput)