fix: refacotr away optional pricing

This commit is contained in:
Christel Westerberg
2024-11-12 08:57:45 +01:00
parent 5e2d2abd17
commit 32d12bae58
5 changed files with 25 additions and 26 deletions

View File

@@ -55,12 +55,12 @@ export default async function SummaryPage({
}
: {
local: {
price: availability.publicRate?.localPrice.pricePerStay,
currency: availability.publicRate?.localPrice.currency,
price: availability.publicRate.localPrice.pricePerStay,
currency: availability.publicRate.localPrice.currency,
},
euro: {
price: availability.publicRate?.requestedPrice.pricePerStay,
currency: availability.publicRate?.requestedPrice.currency,
price: availability.publicRate.requestedPrice.pricePerStay,
currency: availability.publicRate.requestedPrice.currency,
},
}

View File

@@ -109,11 +109,11 @@ export default function Summary({
setTotalPrice({
local: {
price: parsePrice(room.localPrice.price),
currency: room.localPrice.currency!,
currency: room.localPrice.currency,
},
euro: {
price: parsePrice(room.euroPrice.price),
currency: room.euroPrice.currency!,
currency: room.euroPrice.currency,
},
})
}, [room.localPrice, room.euroPrice, setTotalPrice])

View File

@@ -554,15 +554,14 @@ export const productTypePriceSchema = z.object({
const productSchema = z.object({
productType: z.object({
public: productTypePriceSchema.optional(),
public: productTypePriceSchema,
member: productTypePriceSchema.optional(),
}),
})
const roomConfigurationSchema = z.object({
status: z.string(),
// TODO: Remove the optional when the API change has been deployed
roomTypeCode: z.string().optional(),
roomTypeCode: z.string(),
roomType: z.string(),
roomsLeft: z.number(),
features: z.array(
@@ -825,17 +824,11 @@ export const apiLocationsSchema = z.object({
),
})
const breakfastPackagePriceSchema = z
.object({
currency: z.nativeEnum(CurrencyEnum),
price: z.string(),
totalPrice: z.string(),
})
.default({
currency: CurrencyEnum.SEK,
price: "0",
totalPrice: "0",
}) // TODO: Remove optional and default when the API change has been deployed
const breakfastPackagePriceSchema = z.object({
currency: z.nativeEnum(CurrencyEnum),
price: z.string(),
totalPrice: z.string(),
})
export const breakfastPackageSchema = z.object({
code: z.string(),

View File

@@ -733,9 +733,15 @@ export const hotelQueryRouter = router({
const rateTypes = selectedRoom.products.find(
(rate) =>
rate.productType.public?.rateCode === rateCode ||
rate.productType.public.rateCode === rateCode ||
rate.productType.member?.rateCode === rateCode
)?.productType
)
if (!rateTypes) {
console.error("No matching rate found")
return null
}
const rates = rateTypes.productType
const mustBeGuaranteed =
validateAvailabilityData.data.rateDefinitions.filter(
@@ -785,8 +791,8 @@ export const hotelQueryRouter = router({
selectedRoom,
mustBeGuaranteed,
cancellationText,
memberRate: rateTypes?.member,
publicRate: rateTypes?.public,
memberRate: rates?.member,
publicRate: rates.public,
bedTypes,
}
}),

View File

@@ -16,8 +16,8 @@ export interface BookingData {
}
type Price = {
price?: string
currency?: string
price: string
currency: string
}
export type RoomsData = {