feat: show both prices for multiroom room 2-4 on all users

This commit is contained in:
Simon Emanuelsson
2025-02-17 15:10:48 +01:00
parent cf3268bda3
commit b536c51889
12 changed files with 92 additions and 49 deletions

View File

@@ -1,4 +1,5 @@
import { useSearchParams } from "next/navigation"
import { useSession } from "next-auth/react"
import { useIntl } from "react-intl"
import { dt } from "@/lib/dt"
@@ -6,6 +7,8 @@ import { dt } from "@/lib/dt"
import Body from "@/components/TempDesignSystem/Text/Body"
import Caption from "@/components/TempDesignSystem/Text/Caption"
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
import { useRoomContext } from "@/contexts/Room"
import { isValidClientSession } from "@/utils/clientSession"
import { calculatePricesPerNight } from "./utils"
@@ -14,12 +17,14 @@ import styles from "./priceList.module.css"
import type { PriceListProps } from "@/types/components/hotelReservation/selectRate/flexibilityOption"
export default function PriceList({
isUserLoggedIn,
publicPrice = {},
memberPrice = {},
petRoomPackage,
}: PriceListProps) {
const intl = useIntl()
const { isMainRoom } = useRoomContext()
const { data: session } = useSession()
const isUserLoggedIn = isValidClientSession(session)
const { localPrice: publicLocalPrice, requestedPrice: publicRequestedPrice } =
publicPrice
@@ -60,7 +65,7 @@ export default function PriceList({
return (
<dl className={styles.priceList}>
{isUserLoggedIn ? null : (
{isUserLoggedIn && isMainRoom ? null : (
<div className={styles.priceRow}>
<dt>
<Caption

View File

@@ -1,4 +1,5 @@
"use client"
import { useSession } from "next-auth/react"
import { useIntl } from "react-intl"
import { CheckIcon, InfoCircleIcon } from "@/components/Icons"
@@ -8,6 +9,7 @@ import Label from "@/components/TempDesignSystem/Form/Label"
import Body from "@/components/TempDesignSystem/Text/Body"
import Caption from "@/components/TempDesignSystem/Text/Caption"
import { useRoomContext } from "@/contexts/Room"
import { isValidClientSession } from "@/utils/clientSession"
import PriceTable from "./PriceList"
@@ -18,7 +20,6 @@ import type { FlexibilityOptionProps } from "@/types/components/hotelReservation
export default function FlexibilityOption({
features,
isSelected,
isUserLoggedIn,
paymentTerm,
priceInformation,
petRoomPackage,
@@ -28,8 +29,11 @@ export default function FlexibilityOption({
title,
}: FlexibilityOptionProps) {
const intl = useIntl()
const { data: session } = useSession()
const isUserLoggedIn = isValidClientSession(session)
const {
actions: { selectRate },
isMainRoom,
} = useRoomContext()
function handleSelect() {
@@ -63,15 +67,17 @@ export default function FlexibilityOption({
}
const { public: publicPrice, member: memberPrice } = product.productType
const rate =
isUserLoggedIn && isMainRoom && memberPrice ? memberPrice : publicPrice
return (
<label>
<input
checked={isSelected}
name={`rateCode-${product.productType.public.rateCode}`}
name={`rateCode-${rate.rateCode}`}
onChange={handleSelect}
type="radio"
value={publicPrice?.rateCode}
value={rate.rateCode}
/>
<div className={styles.card}>
<div className={styles.header}>
@@ -112,10 +118,9 @@ export default function FlexibilityOption({
</div>
</div>
<PriceTable
isUserLoggedIn={isUserLoggedIn}
publicPrice={publicPrice}
memberPrice={memberPrice}
petRoomPackage={petRoomPackage}
publicPrice={publicPrice}
/>
<div className={styles.checkIcon}>

View File

@@ -81,7 +81,7 @@ export default function RoomCard({ roomConfiguration }: RoomCardProps) {
rateDefinitions: state.roomsAvailability?.rateDefinitions,
roomCategories: state.roomCategories,
}))
const { selectedPackage, selectedRate } = useRoomContext()
const { isMainRoom, selectedPackage, selectedRate } = useRoomContext()
const classNames = cardVariants({
availability:
@@ -197,7 +197,7 @@ export default function RoomCard({ roomConfiguration }: RoomCardProps) {
throw new Error("We should never make it where without rateCodes")
}
const key = isUserLoggedIn ? memberRate : publicRate
const key = isUserLoggedIn && isMainRoom ? memberRate : publicRate
return getRate(key)
}
@@ -299,7 +299,6 @@ export default function RoomCard({ roomConfiguration }: RoomCardProps) {
selectedRate?.roomTypeCode ===
roomConfiguration.roomTypeCode
}
isUserLoggedIn={isUserLoggedIn}
paymentTerm={rate.isFlex ? payLater : payNow}
petRoomPackage={petRoomPackageSelected}
product={rate.notAvailable ? undefined : product}