feat(SW-892) Fixed bug with summary not adding pet charge on filter

This commit is contained in:
Pontus Dreij
2024-11-14 10:53:16 +01:00
parent 354e455684
commit 8aa615dfc7
5 changed files with 47 additions and 8 deletions

View File

@@ -18,7 +18,7 @@ import { setLang } from "@/i18n/serverContext"
import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter" import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter"
import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate" import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
import { LangParams, PageArgs } from "@/types/params" import type { LangParams, PageArgs } from "@/types/params"
export default async function SelectRatePage({ export default async function SelectRatePage({
params, params,

View File

@@ -66,7 +66,7 @@ export default function RoomCard({
(room) => room.name === roomConfiguration.roomType (room) => room.name === roomConfiguration.roomType
) )
const { roomSize, occupancy, descriptions, images } = selectedRoom || {} const { roomSize, occupancy, images } = selectedRoom || {}
const mainImage = images?.[0] const mainImage = images?.[0]
const freeCancelation = intl.formatMessage({ id: "Free cancellation" }) const freeCancelation = intl.formatMessage({ id: "Free cancellation" })

View File

@@ -17,9 +17,9 @@ export default function RoomSelection({
user, user,
packages, packages,
selectedPackages, selectedPackages,
setRateSummary,
rateSummary,
}: RoomSelectionProps) { }: RoomSelectionProps) {
const [rateSummary, setRateSummary] = useState<Rate | null>(null)
const router = useRouter() const router = useRouter()
const searchParams = useSearchParams() const searchParams = useSearchParams()
const isUserLoggedIn = !!user const isUserLoggedIn = !!user

View File

@@ -12,7 +12,8 @@ import {
RoomPackageCodeEnum, RoomPackageCodeEnum,
type RoomPackageCodes, type RoomPackageCodes,
} from "@/types/components/hotelReservation/selectRate/roomFilter" } from "@/types/components/hotelReservation/selectRate/roomFilter"
import type { RoomSelectionProps } from "@/types/components/hotelReservation/selectRate/roomSelection" import type { SelectRateProps } from "@/types/components/hotelReservation/selectRate/roomSelection"
import type { Rate } from "@/types/components/hotelReservation/selectRate/selectRate"
import type { import type {
RoomConfiguration, RoomConfiguration,
RoomsAvailability, RoomsAvailability,
@@ -23,10 +24,10 @@ export default function Rooms({
roomCategories = [], roomCategories = [],
user, user,
packages, packages,
}: Omit<RoomSelectionProps, "selectedPackages">) { }: SelectRateProps) {
const visibleRooms: RoomConfiguration[] = const visibleRooms: RoomConfiguration[] =
filterDuplicateRoomTypesByLowestPrice(roomsAvailability.roomConfigurations) filterDuplicateRoomTypesByLowestPrice(roomsAvailability.roomConfigurations)
const [rateSummary, setRateSummary] = useState<Rate | null>(null)
const [rooms, setRooms] = useState<RoomsAvailability>({ const [rooms, setRooms] = useState<RoomsAvailability>({
...roomsAvailability, ...roomsAvailability,
roomConfigurations: visibleRooms, roomConfigurations: visibleRooms,
@@ -48,6 +49,14 @@ export default function Rooms({
...roomsAvailability, ...roomsAvailability,
roomConfigurations: visibleRooms, roomConfigurations: visibleRooms,
}) })
if (!!rateSummary) {
setRateSummary({
...rateSummary,
features: [],
})
}
return return
} }
@@ -57,8 +66,26 @@ export default function Rooms({
) )
) )
setRooms({ ...roomsAvailability, roomConfigurations: filteredRooms }) setRooms({ ...roomsAvailability, roomConfigurations: filteredRooms })
const petRoomPackage =
(filteredPackages.includes(RoomPackageCodeEnum.PET_ROOM) &&
packages.find((pkg) => pkg.code === RoomPackageCodeEnum.PET_ROOM)) ||
undefined
const features = filteredRooms.find((room) =>
room.features.some(
(feature) => feature.code === RoomPackageCodeEnum.PET_ROOM
)
)?.features
if (!!rateSummary) {
setRateSummary({
...rateSummary,
features: petRoomPackage && features ? features : [],
})
}
}, },
[roomsAvailability, visibleRooms] [roomsAvailability, visibleRooms, rateSummary, packages]
) )
return ( return (
@@ -74,6 +101,8 @@ export default function Rooms({
user={user} user={user}
packages={packages} packages={packages}
selectedPackages={selectedPackages} selectedPackages={selectedPackages}
setRateSummary={setRateSummary}
rateSummary={rateSummary}
/> />
</div> </div>
) )

View File

@@ -2,6 +2,7 @@ import type { RoomData } from "@/types/hotel"
import type { SafeUser } from "@/types/user" import type { SafeUser } from "@/types/user"
import type { RoomsAvailability } from "@/server/routers/hotels/output" import type { RoomsAvailability } from "@/server/routers/hotels/output"
import type { RoomPackageCodes, RoomPackageData } from "./roomFilter" import type { RoomPackageCodes, RoomPackageData } from "./roomFilter"
import type { Rate } from "./selectRate"
export interface RoomSelectionProps { export interface RoomSelectionProps {
roomsAvailability: RoomsAvailability roomsAvailability: RoomsAvailability
@@ -9,4 +10,13 @@ export interface RoomSelectionProps {
user: SafeUser user: SafeUser
packages: RoomPackageData packages: RoomPackageData
selectedPackages: RoomPackageCodes[] selectedPackages: RoomPackageCodes[]
setRateSummary: (rateSummary: Rate) => void
rateSummary: Rate | null
}
export interface SelectRateProps {
roomsAvailability: RoomsAvailability
roomCategories: RoomData[]
user: SafeUser
packages: RoomPackageData
} }