Files
web/components/HotelReservation/SelectRate/utils.ts
2025-02-14 14:20:54 +01:00

40 lines
1.1 KiB
TypeScript

import type { RoomsAvailability } from "@/types/trpc/routers/hotel/roomAvailability"
export function combineRoomAvailabilities(
availabilityResults: PromiseSettledResult<RoomsAvailability | null>[]
) {
return availabilityResults.reduce<RoomsAvailability | null>((acc, result) => {
if (result.status === "fulfilled" && result.value) {
if (acc) {
acc.roomConfigurations.push(...result.value.roomConfigurations)
} else {
acc = result.value
}
}
// Ping monitoring about fail?
if (result.status === "rejected") {
console.info(`RoomAvailability fetch failed`)
console.error(result.reason)
}
return acc
}, null)
}
export function getRates(
rateDefinitions: RoomsAvailability["rateDefinitions"]
) {
return {
change: rateDefinitions.filter(
(rate) => rate.cancellationRule === "Changeable"
),
flex: rateDefinitions.filter(
(rate) => rate.cancellationRule === "CancellableBefore6PM"
),
save: rateDefinitions.filter(
(rate) => rate.cancellationRule === "NotCancellable"
),
}
}