feat(SW-1717): rewrite select-rate to show all variants of rate-cards

This commit is contained in:
Simon Emanuelsson
2025-03-25 11:25:44 +01:00
committed by Michael Zetterberg
parent adde77eaa9
commit ebaea78fb3
118 changed files with 4601 additions and 4374 deletions

View File

@@ -16,6 +16,7 @@ import { useRoomContext } from "@/contexts/SelectRate/Room"
import styles from "./selectedRoomPanel.module.css"
import type { Rate } from "@/types/components/hotelReservation/selectRate/selectRate"
import { CurrencyEnum } from "@/types/enums/currency"
export default function SelectedRoomPanel() {
const intl = useIntl()
@@ -58,10 +59,35 @@ export default function SelectedRoomPanel() {
return null
}
const selectedProduct =
isUserLoggedIn && isMainRoom && selectedRate.product?.member
? selectedRate.product?.member
: selectedRate.product?.public
let selectedProduct
let isPerNight = true
if (
isUserLoggedIn &&
isMainRoom &&
"member" in selectedRate.product &&
selectedRate.product.member
) {
const { localPrice } = selectedRate.product.member
selectedProduct = `${localPrice.pricePerNight} ${localPrice.currency}`
} else if ("public" in selectedRate.product && selectedRate.product.public) {
const { localPrice } = selectedRate.product.public
selectedProduct = `${localPrice.pricePerNight} ${localPrice.currency}`
} else if ("corporateCheque" in selectedRate.product) {
isPerNight = false
const { localPrice } = selectedRate.product.corporateCheque
selectedProduct = `${localPrice.numberOfCheques} ${CurrencyEnum.CC}`
if (localPrice.additionalPricePerStay && localPrice.currency) {
selectedProduct = `${selectedProduct} + ${localPrice.additionalPricePerStay} ${localPrice.currency}`
}
} else if ("voucher" in selectedRate.product) {
isPerNight = false
selectedProduct = `${selectedRate.product.voucher.numberOfVouchers} ${CurrencyEnum.Voucher}`
}
if (!selectedProduct) {
console.error("Selected product is unknown")
return null
}
return (
<div className={styles.selectedRoomPanel}>
@@ -79,9 +105,7 @@ export default function SelectedRoomPanel() {
{getRateTitle(selectedRate.product.rate)}
</Body>
<Body color="uiTextHighContrast">
{selectedProduct?.localPrice.pricePerNight}{" "}
{selectedProduct?.localPrice.currency}/
{intl.formatMessage({ id: "night" })}
{`${selectedProduct}${isPerNight ? "/" + intl.formatMessage({ id: "night" }) : ""}`}
</Body>
</div>
<div className={styles.imageContainer}>