feat(SW-892) Fixed bug with summary not adding pet charge on filter
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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" })
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user