chore: cleaning up select-rate

This commit is contained in:
Simon Emanuelsson
2025-02-05 20:18:03 +01:00
parent 3044bc87d1
commit 051bc54e6c
95 changed files with 3269 additions and 3527 deletions
+35 -19
View File
@@ -1,23 +1,39 @@
import type { RoomsAvailability } from "@/types/trpc/routers/hotel/roomAvailability"
export function combineRoomAvailabilities({
availabilityResults,
}: {
availabilityResults: Array<[RoomsAvailability | undefined | null, unknown]>
}): RoomsAvailability | null {
return availabilityResults.reduce<RoomsAvailability | null>(
(combinedResult, [currentResult, error]) => {
if (error || !currentResult) return combinedResult
if (!combinedResult) return currentResult
return {
...currentResult,
roomConfigurations: [
...combinedResult.roomConfigurations,
...currentResult.roomConfigurations,
],
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
}
},
null
)
}
// 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"
),
}
}