feat(sw-453): fixed pr comments and default filter
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import { notFound } from "next/navigation"
|
||||||
|
|
||||||
import { getProfileSafely } from "@/lib/trpc/memoizedRequests"
|
import { getProfileSafely } from "@/lib/trpc/memoizedRequests"
|
||||||
import { serverClient } from "@/lib/trpc/server"
|
import { serverClient } from "@/lib/trpc/server"
|
||||||
|
|
||||||
@@ -17,10 +19,16 @@ export default async function SelectRatePage({
|
|||||||
setLang(params.lang)
|
setLang(params.lang)
|
||||||
|
|
||||||
const selectRoomParams = new URLSearchParams(searchParams)
|
const selectRoomParams = new URLSearchParams(searchParams)
|
||||||
|
console.log(selectRoomParams)
|
||||||
const selectRoomParamsObject =
|
const selectRoomParamsObject =
|
||||||
getHotelReservationQueryParams(selectRoomParams)
|
getHotelReservationQueryParams(selectRoomParams)
|
||||||
const adults = selectRoomParamsObject.room?.[0].adults // TODO: Handle multiple rooms
|
|
||||||
const children = selectRoomParamsObject.room?.[0].child?.length // TODO: Handle multiple rooms
|
if (!selectRoomParamsObject.room) {
|
||||||
|
return notFound()
|
||||||
|
}
|
||||||
|
|
||||||
|
const adults = selectRoomParamsObject.room[0].adults // TODO: Handle multiple rooms
|
||||||
|
const children = selectRoomParamsObject.room[0].child?.length // TODO: Handle multiple rooms
|
||||||
|
|
||||||
const [hotelData, roomsAvailability, packages, user] = await Promise.all([
|
const [hotelData, roomsAvailability, packages, user] = await Promise.all([
|
||||||
serverClient().hotel.hotelData.get({
|
serverClient().hotel.hotelData.get({
|
||||||
@@ -42,9 +50,9 @@ export default async function SelectRatePage({
|
|||||||
adults: adults,
|
adults: adults,
|
||||||
children: children,
|
children: children,
|
||||||
packageCodes: [
|
packageCodes: [
|
||||||
RoomPackageCodeEnum.ACCE,
|
RoomPackageCodeEnum.ACCESSIBILITY_ROOM,
|
||||||
RoomPackageCodeEnum.PETR,
|
RoomPackageCodeEnum.PET_ROOM,
|
||||||
RoomPackageCodeEnum.ALLG,
|
RoomPackageCodeEnum.ALLERGY_ROOM,
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
getProfileSafely(),
|
getProfileSafely(),
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { getIconForFeatureCode } from "../utils"
|
|||||||
import styles from "./roomFilter.module.css"
|
import styles from "./roomFilter.module.css"
|
||||||
|
|
||||||
import {
|
import {
|
||||||
RoomFilterProps,
|
type RoomFilterProps,
|
||||||
RoomPackageCodeEnum,
|
RoomPackageCodeEnum,
|
||||||
} from "@/types/components/hotelReservation/selectRate/roomFilter"
|
} from "@/types/components/hotelReservation/selectRate/roomFilter"
|
||||||
|
|
||||||
@@ -47,8 +47,8 @@ export default function RoomFilter({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const { watch, getValues, handleSubmit } = methods
|
const { watch, getValues, handleSubmit } = methods
|
||||||
const petFriendly = watch(RoomPackageCodeEnum.PETR)
|
const petFriendly = watch(RoomPackageCodeEnum.PET_ROOM)
|
||||||
const allergyFriendly = watch(RoomPackageCodeEnum.ALLG)
|
const allergyFriendly = watch(RoomPackageCodeEnum.ALLERGY_ROOM)
|
||||||
|
|
||||||
const selectedFilters = useMemo(() => getValues(), [getValues])
|
const selectedFilters = useMemo(() => getValues(), [getValues])
|
||||||
|
|
||||||
@@ -104,8 +104,10 @@ export default function RoomFilter({
|
|||||||
key={option.code}
|
key={option.code}
|
||||||
label={intl.formatMessage({ id: option.description })}
|
label={intl.formatMessage({ id: option.description })}
|
||||||
disabled={
|
disabled={
|
||||||
(option.code === RoomPackageCodeEnum.ALLG && petFriendly) ||
|
(option.code === RoomPackageCodeEnum.ALLERGY_ROOM &&
|
||||||
(option.code === RoomPackageCodeEnum.PETR && allergyFriendly)
|
petFriendly) ||
|
||||||
|
(option.code === RoomPackageCodeEnum.PET_ROOM &&
|
||||||
|
allergyFriendly)
|
||||||
}
|
}
|
||||||
selected={getValues(option.code)}
|
selected={getValues(option.code)}
|
||||||
Icon={getIconForFeatureCode(option.code)}
|
Icon={getIconForFeatureCode(option.code)}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { differenceInCalendarDays } from "date-fns"
|
||||||
import { useIntl } from "react-intl"
|
import { useIntl } from "react-intl"
|
||||||
|
|
||||||
import Button from "@/components/TempDesignSystem/Button"
|
import Button from "@/components/TempDesignSystem/Button"
|
||||||
@@ -27,12 +28,12 @@ export default function RateSummary({
|
|||||||
} = rateSummary
|
} = rateSummary
|
||||||
const priceToShow = isUserLoggedIn ? member : publicRate
|
const priceToShow = isUserLoggedIn ? member : publicRate
|
||||||
|
|
||||||
const isPetRoomSelect = features.some(
|
const isPetRoomSelected = features.some(
|
||||||
(feature) => feature.code === RoomPackageCodeEnum.PETR
|
(feature) => feature.code === RoomPackageCodeEnum.PET_ROOM
|
||||||
)
|
)
|
||||||
|
|
||||||
const petRoomPackage = packages.find(
|
const petRoomPackage = packages.find(
|
||||||
(pkg) => pkg.code === RoomPackageCodeEnum.PETR
|
(pkg) => pkg.code === RoomPackageCodeEnum.PET_ROOM
|
||||||
)
|
)
|
||||||
|
|
||||||
const petRoomPrice = petRoomPackage?.calculatedPrice ?? null
|
const petRoomPrice = petRoomPackage?.calculatedPrice ?? null
|
||||||
@@ -40,9 +41,7 @@ export default function RateSummary({
|
|||||||
|
|
||||||
const checkInDate = new Date(roomsAvailability.checkInDate)
|
const checkInDate = new Date(roomsAvailability.checkInDate)
|
||||||
const checkOutDate = new Date(roomsAvailability.checkOutDate)
|
const checkOutDate = new Date(roomsAvailability.checkOutDate)
|
||||||
const nights = Math.ceil(
|
const nights = differenceInCalendarDays(checkOutDate, checkInDate)
|
||||||
(checkOutDate.getTime() - checkInDate.getTime()) / (1000 * 60 * 60 * 24)
|
|
||||||
)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.summary}>
|
<div className={styles.summary}>
|
||||||
@@ -94,7 +93,7 @@ export default function RateSummary({
|
|||||||
)}
|
)}
|
||||||
</Footnote>
|
</Footnote>
|
||||||
</div>
|
</div>
|
||||||
{isPetRoomSelect && (
|
{isPetRoomSelected && (
|
||||||
<div className={styles.petInfo}>
|
<div className={styles.petInfo}>
|
||||||
<Body color="uiTextHighContrast" textTransform="bold">
|
<Body color="uiTextHighContrast" textTransform="bold">
|
||||||
+ {petRoomPrice} {petRoomCurrency}
|
+ {petRoomPrice} {petRoomCurrency}
|
||||||
|
|||||||
@@ -27,20 +27,18 @@ export default function RoomCard({
|
|||||||
}: RoomCardProps) {
|
}: RoomCardProps) {
|
||||||
const intl = useIntl()
|
const intl = useIntl()
|
||||||
|
|
||||||
// TODO: Update string when API has decided
|
const rates = {
|
||||||
const rateTypes = {
|
saveRate: rateDefinitions.find(
|
||||||
saveRate: "NonCancellable",
|
(rate) => rate.cancellationRule === "NonCancellable"
|
||||||
changeRate: "Modifiable",
|
),
|
||||||
flexRate: "CancellableBefore6PM",
|
changeRate: rateDefinitions.find(
|
||||||
|
(rate) => rate.cancellationRule === "Modifiable"
|
||||||
|
),
|
||||||
|
flexRate: rateDefinitions.find(
|
||||||
|
(rate) => rate.cancellationRule === "CancellableBefore6PM"
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
const rates = Object.fromEntries(
|
|
||||||
Object.entries(rateTypes).map(([key, rule]) => [
|
|
||||||
key,
|
|
||||||
rateDefinitions.find((rate) => rate.cancellationRule === rule),
|
|
||||||
])
|
|
||||||
)
|
|
||||||
|
|
||||||
function findProductForRate(rate: RateDefinition | undefined) {
|
function findProductForRate(rate: RateDefinition | undefined) {
|
||||||
return rate
|
return rate
|
||||||
? roomConfiguration.products.find(
|
? roomConfiguration.products.find(
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import getHotelReservationQueryParams from "./utils"
|
|||||||
|
|
||||||
import styles from "./roomSelection.module.css"
|
import styles from "./roomSelection.module.css"
|
||||||
|
|
||||||
import { RoomSelectionProps } from "@/types/components/hotelReservation/selectRate/roomSelection"
|
import type { RoomSelectionProps } from "@/types/components/hotelReservation/selectRate/roomSelection"
|
||||||
import { Rate } from "@/types/components/hotelReservation/selectRate/selectRate"
|
import type { Rate } from "@/types/components/hotelReservation/selectRate/selectRate"
|
||||||
|
|
||||||
export default function RoomSelection({
|
export default function RoomSelection({
|
||||||
roomsAvailability,
|
roomsAvailability,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { useCallback,useState } from "react"
|
import { useCallback, useState } from "react"
|
||||||
|
|
||||||
import { RoomsAvailability } from "@/server/routers/hotels/output"
|
import { RoomsAvailability } from "@/server/routers/hotels/output"
|
||||||
|
|
||||||
@@ -9,8 +9,7 @@ import RoomSelection from "../RoomSelection"
|
|||||||
|
|
||||||
import styles from "./rooms.module.css"
|
import styles from "./rooms.module.css"
|
||||||
|
|
||||||
import { RoomPackageCodes } from "@/types/components/hotelReservation/selectRate/roomFilter"
|
import type { RoomSelectionProps } from "@/types/components/hotelReservation/selectRate/roomSelection"
|
||||||
import { RoomSelectionProps } from "@/types/components/hotelReservation/selectRate/roomSelection"
|
|
||||||
|
|
||||||
export default function Rooms({
|
export default function Rooms({
|
||||||
roomsAvailability,
|
roomsAvailability,
|
||||||
@@ -18,26 +17,35 @@ export default function Rooms({
|
|||||||
user,
|
user,
|
||||||
packages,
|
packages,
|
||||||
}: RoomSelectionProps) {
|
}: RoomSelectionProps) {
|
||||||
const [rooms, setRooms] = useState<RoomsAvailability>(roomsAvailability)
|
const defaultRooms = roomsAvailability.roomConfigurations.filter(
|
||||||
|
(room) => room.features.length === 0
|
||||||
|
)
|
||||||
|
const [rooms, setRooms] = useState<RoomsAvailability>({
|
||||||
|
...roomsAvailability,
|
||||||
|
roomConfigurations: defaultRooms,
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(rooms)
|
||||||
|
|
||||||
const handleFilter = useCallback(
|
const handleFilter = useCallback(
|
||||||
(filter: Record<string, boolean | undefined>) => {
|
(filter: Record<string, boolean | undefined>) => {
|
||||||
const selectedCodes = Object.keys(filter).filter((key) => filter[key])
|
const selectedCodes = Object.keys(filter).filter((key) => filter[key])
|
||||||
|
|
||||||
if (selectedCodes.length === 0) {
|
if (selectedCodes.length === 0) {
|
||||||
setRooms(roomsAvailability)
|
setRooms({
|
||||||
|
...roomsAvailability,
|
||||||
|
roomConfigurations: defaultRooms,
|
||||||
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const filteredRooms = roomsAvailability.roomConfigurations.filter(
|
const filteredRooms = roomsAvailability.roomConfigurations.filter(
|
||||||
(room) =>
|
(room) =>
|
||||||
room.features.some((feature) =>
|
room.features.some((feature) => selectedCodes.includes(feature.code))
|
||||||
selectedCodes.includes(feature.code as RoomPackageCodes)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
setRooms({ ...roomsAvailability, roomConfigurations: filteredRooms })
|
setRooms({ ...roomsAvailability, roomConfigurations: filteredRooms })
|
||||||
},
|
},
|
||||||
[roomsAvailability]
|
[roomsAvailability, defaultRooms]
|
||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
import { AllergyIcon,PetsIcon, WheelchairIcon } from "@/components/Icons"
|
import { AllergyIcon, PetsIcon, WheelchairIcon } from "@/components/Icons"
|
||||||
|
|
||||||
import {
|
import {
|
||||||
RoomPackageCodeEnum,
|
RoomPackageCodeEnum,
|
||||||
RoomPackageCodes,
|
type RoomPackageCodes,
|
||||||
} from "@/types/components/hotelReservation/selectRate/roomFilter"
|
} from "@/types/components/hotelReservation/selectRate/roomFilter"
|
||||||
|
|
||||||
export function getIconForFeatureCode(featureCode: RoomPackageCodes) {
|
export function getIconForFeatureCode(featureCode: RoomPackageCodes) {
|
||||||
switch (featureCode) {
|
switch (featureCode) {
|
||||||
case RoomPackageCodeEnum.ACCE:
|
case RoomPackageCodeEnum.ACCESSIBILITY_ROOM:
|
||||||
return WheelchairIcon
|
return WheelchairIcon
|
||||||
case RoomPackageCodeEnum.ALLG:
|
case RoomPackageCodeEnum.ALLERGY_ROOM:
|
||||||
return AllergyIcon
|
return AllergyIcon
|
||||||
case RoomPackageCodeEnum.PETR:
|
case RoomPackageCodeEnum.PET_ROOM:
|
||||||
return PetsIcon
|
return PetsIcon
|
||||||
default:
|
default:
|
||||||
return PetsIcon
|
return PetsIcon
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"ALLG": "Allergi",
|
"ALLG": "Allergi",
|
||||||
"About meetings & conferences": "About meetings & conferences",
|
"About meetings & conferences": "About meetings & conferences",
|
||||||
"About the hotel": "About the hotel",
|
"About the hotel": "About the hotel",
|
||||||
|
"Accessibility": "Tilgængelighed",
|
||||||
"Accessible Room": "Tilgængelighedsrum",
|
"Accessible Room": "Tilgængelighedsrum",
|
||||||
"Activities": "Aktiviteter",
|
"Activities": "Aktiviteter",
|
||||||
"Add code": "Tilføj kode",
|
"Add code": "Tilføj kode",
|
||||||
@@ -357,12 +358,14 @@
|
|||||||
"Zoom in": "Zoom ind",
|
"Zoom in": "Zoom ind",
|
||||||
"Zoom out": "Zoom ud",
|
"Zoom out": "Zoom ud",
|
||||||
"as of today": "pr. dags dato",
|
"as of today": "pr. dags dato",
|
||||||
|
"booking.accommodatesUpTo": "Plads til {nrOfGuests, plural, one {# person} other {op til # personer}}",
|
||||||
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
|
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
|
||||||
"booking.children": "{totalChildren, plural, one {# barn} other {# børn}}",
|
"booking.children": "{totalChildren, plural, one {# barn} other {# børn}}",
|
||||||
"booking.guests": "Maks {nrOfGuests, plural, one {# gæst} other {# gæster}}",
|
"booking.guests": "Maks {nrOfGuests, plural, one {# gæst} other {# gæster}}",
|
||||||
"booking.nights": "{totalNights, plural, one {# nat} other {# nætter}}",
|
"booking.nights": "{totalNights, plural, one {# nat} other {# nætter}}",
|
||||||
"booking.rooms": "{totalRooms, plural, one {# værelse} other {# værelser}}",
|
"booking.rooms": "{totalRooms, plural, one {# værelse} other {# værelser}}",
|
||||||
"booking.terms": "Ved at betale med en af de tilgængelige betalingsmetoder, accepterer jeg vilkårene for denne booking og de generelle <termsLink>Vilkår og betingelser</termsLink>, og forstår, at Scandic vil behandle min personlige data i forbindelse med denne booking i henhold til <privacyLink>Scandics Privatlivspolitik</privacyLink>. Jeg accepterer, at Scandic kræver et gyldigt kreditkort under min besøg i tilfælde af, at noget er tilbagebetalt.",
|
"booking.terms": "Ved at betale med en af de tilgængelige betalingsmetoder, accepterer jeg vilkårene for denne booking og de generelle <termsLink>Vilkår og betingelser</termsLink>, og forstår, at Scandic vil behandle min personlige data i forbindelse med denne booking i henhold til <privacyLink>Scandics Privatlivspolitik</privacyLink>. Jeg accepterer, at Scandic kræver et gyldigt kreditkort under min besøg i tilfælde af, at noget er tilbagebetalt.",
|
||||||
|
"booking.thisRoomIsEquippedWith": "Dette værelse er udstyret med",
|
||||||
"by": "inden",
|
"by": "inden",
|
||||||
"characters": "tegn",
|
"characters": "tegn",
|
||||||
"guest": "gæst",
|
"guest": "gæst",
|
||||||
@@ -385,6 +388,7 @@
|
|||||||
"spendable points expiring by": "{points} Brugbare point udløber den {date}",
|
"spendable points expiring by": "{points} Brugbare point udløber den {date}",
|
||||||
"to": "til",
|
"to": "til",
|
||||||
"uppercase letter": "stort bogstav",
|
"uppercase letter": "stort bogstav",
|
||||||
|
"{amount} out of {total}": "{amount} ud af {total}",
|
||||||
"{amount} {currency}": "{amount} {currency}",
|
"{amount} {currency}": "{amount} {currency}",
|
||||||
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
||||||
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"ALLG": "Allergie",
|
"ALLG": "Allergie",
|
||||||
"About meetings & conferences": "About meetings & conferences",
|
"About meetings & conferences": "About meetings & conferences",
|
||||||
"About the hotel": "Über das Hotel",
|
"About the hotel": "Über das Hotel",
|
||||||
|
"Accessibility": "Zugänglichkeit",
|
||||||
"Accessible Room": "Barrierefreies Zimmer",
|
"Accessible Room": "Barrierefreies Zimmer",
|
||||||
"Activities": "Aktivitäten",
|
"Activities": "Aktivitäten",
|
||||||
"Add code": "Code hinzufügen",
|
"Add code": "Code hinzufügen",
|
||||||
@@ -358,12 +359,14 @@
|
|||||||
"Zoom in": "Vergrößern",
|
"Zoom in": "Vergrößern",
|
||||||
"Zoom out": "Verkleinern",
|
"Zoom out": "Verkleinern",
|
||||||
"as of today": "Stand heute",
|
"as of today": "Stand heute",
|
||||||
|
"booking.accommodatesUpTo": "Bietet Platz für {nrOfGuests, plural, one {# Person } other {bis zu # Personen}}",
|
||||||
"booking.adults": "{totalAdults, plural, one {# erwachsene} other {# erwachsene}}",
|
"booking.adults": "{totalAdults, plural, one {# erwachsene} other {# erwachsene}}",
|
||||||
"booking.children": "{totalChildren, plural, one {# kind} other {# kinder}}",
|
"booking.children": "{totalChildren, plural, one {# kind} other {# kinder}}",
|
||||||
"booking.guests": "Max {nrOfGuests, plural, one {# gast} other {# gäste}}",
|
"booking.guests": "Max {nrOfGuests, plural, one {# gast} other {# gäste}}",
|
||||||
"booking.nights": "{totalNights, plural, one {# nacht} other {# Nächte}}",
|
"booking.nights": "{totalNights, plural, one {# nacht} other {# Nächte}}",
|
||||||
"booking.rooms": "{totalRooms, plural, one {# zimmer} other {# räume}}",
|
"booking.rooms": "{totalRooms, plural, one {# zimmer} other {# räume}}",
|
||||||
"booking.terms": "Ved at betale med en af de tilgængelige betalingsmetoder, accepterer jeg vilkårene for denne booking og de generelle <termsLink>Vilkår og betingelser</termsLink>, og forstår, at Scandic vil behandle min personlige data i forbindelse med denne booking i henhold til <privacyLink>Scandics Privatlivspolitik</privacyLink>. Jeg accepterer, at Scandic kræver et gyldigt kreditkort under min besøg i tilfælde af, at noget er tilbagebetalt.",
|
"booking.terms": "Ved at betale med en af de tilgængelige betalingsmetoder, accepterer jeg vilkårene for denne booking og de generelle <termsLink>Vilkår og betingelser</termsLink>, og forstår, at Scandic vil behandle min personlige data i forbindelse med denne booking i henhold til <privacyLink>Scandics Privatlivspolitik</privacyLink>. Jeg accepterer, at Scandic kræver et gyldigt kreditkort under min besøg i tilfælde af, at noget er tilbagebetalt.",
|
||||||
|
"booking.thisRoomIsEquippedWith": "Dieses Zimmer ist ausgestattet mit",
|
||||||
"by": "bis",
|
"by": "bis",
|
||||||
"characters": "figuren",
|
"characters": "figuren",
|
||||||
"guest": "gast",
|
"guest": "gast",
|
||||||
@@ -386,6 +389,7 @@
|
|||||||
"spendable points expiring by": "{points} Einlösbare punkte verfallen bis zum {date}",
|
"spendable points expiring by": "{points} Einlösbare punkte verfallen bis zum {date}",
|
||||||
"to": "zu",
|
"to": "zu",
|
||||||
"uppercase letter": "großbuchstabe",
|
"uppercase letter": "großbuchstabe",
|
||||||
|
"{amount} out of {total}": "{amount} von {total}",
|
||||||
"{amount} {currency}": "{amount} {currency}",
|
"{amount} {currency}": "{amount} {currency}",
|
||||||
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
||||||
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"ALLG": "Allergy",
|
"ALLG": "Allergy",
|
||||||
"About meetings & conferences": "About meetings & conferences",
|
"About meetings & conferences": "About meetings & conferences",
|
||||||
"About the hotel": "About the hotel",
|
"About the hotel": "About the hotel",
|
||||||
|
"Accessibility": "Accessibility",
|
||||||
"Accessible Room": "Accessibility room",
|
"Accessible Room": "Accessibility room",
|
||||||
"Activities": "Activities",
|
"Activities": "Activities",
|
||||||
"Add Room": "Add room",
|
"Add Room": "Add room",
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"ALLG": "Allergia",
|
"ALLG": "Allergia",
|
||||||
"About meetings & conferences": "About meetings & conferences",
|
"About meetings & conferences": "About meetings & conferences",
|
||||||
"About the hotel": "Tietoja hotellista",
|
"About the hotel": "Tietoja hotellista",
|
||||||
|
"Accessibility": "Saavutettavuus",
|
||||||
"Accessible Room": "Esteetön huone",
|
"Accessible Room": "Esteetön huone",
|
||||||
"Activities": "Aktiviteetit",
|
"Activities": "Aktiviteetit",
|
||||||
"Add code": "Lisää koodi",
|
"Add code": "Lisää koodi",
|
||||||
@@ -358,12 +359,14 @@
|
|||||||
"Zoom in": "Lähennä",
|
"Zoom in": "Lähennä",
|
||||||
"Zoom out": "Loitonna",
|
"Zoom out": "Loitonna",
|
||||||
"as of today": "tänään",
|
"as of today": "tänään",
|
||||||
|
"booking.accommodatesUpTo": "Huoneeseen {nrOfGuests, plural, one {# person} other {mahtuu 2 henkilöä}}",
|
||||||
"booking.adults": "{totalAdults, plural, one {# aikuinen} other {# aikuiset}}",
|
"booking.adults": "{totalAdults, plural, one {# aikuinen} other {# aikuiset}}",
|
||||||
"booking.children": "{totalChildren, plural, one {# lapsi} other {# lasta}}",
|
"booking.children": "{totalChildren, plural, one {# lapsi} other {# lasta}}",
|
||||||
"booking.guests": "Max {nrOfGuests, plural, one {# vieras} other {# vieraita}}",
|
"booking.guests": "Max {nrOfGuests, plural, one {# vieras} other {# vieraita}}",
|
||||||
"booking.nights": "{totalNights, plural, one {# yö} other {# yötä}}",
|
"booking.nights": "{totalNights, plural, one {# yö} other {# yötä}}",
|
||||||
"booking.rooms": "{totalRooms, plural, one {# huone} other {# sviitti}}",
|
"booking.rooms": "{totalRooms, plural, one {# huone} other {# sviitti}}",
|
||||||
"booking.terms": "Maksamalla minkä tahansa saatavilla olevan maksutavan avulla hyväksyn tämän varauksen ehdot ja yleiset <termsLink>ehdot ja ehtoja</termsLink>, ja ymmärrän, että Scandic käsittelee minun henkilötietoni tässä varauksessa mukaisesti <privacyLink>Scandicin tietosuojavaltuuden</privacyLink> mukaisesti. Hyväksyn myös, että Scandic vaatii validin luottokortin majoituksen ajan, jos jokin jää maksamatta.",
|
"booking.terms": "Maksamalla minkä tahansa saatavilla olevan maksutavan avulla hyväksyn tämän varauksen ehdot ja yleiset <termsLink>ehdot ja ehtoja</termsLink>, ja ymmärrän, että Scandic käsittelee minun henkilötietoni tässä varauksessa mukaisesti <privacyLink>Scandicin tietosuojavaltuuden</privacyLink> mukaisesti. Hyväksyn myös, että Scandic vaatii validin luottokortin majoituksen ajan, jos jokin jää maksamatta.",
|
||||||
|
"booking.thisRoomIsEquippedWith": "Tämä huone on varustettu",
|
||||||
"by": "mennessä",
|
"by": "mennessä",
|
||||||
"characters": "hahmoja",
|
"characters": "hahmoja",
|
||||||
"guest": "Vieras",
|
"guest": "Vieras",
|
||||||
@@ -386,6 +389,7 @@
|
|||||||
"spendable points expiring by": "{points} pistettä vanhenee {date} mennessä",
|
"spendable points expiring by": "{points} pistettä vanhenee {date} mennessä",
|
||||||
"to": "to",
|
"to": "to",
|
||||||
"uppercase letter": "iso kirjain",
|
"uppercase letter": "iso kirjain",
|
||||||
|
"{amount} out of {total}": "{amount}/{total}",
|
||||||
"{amount} {currency}": "{amount} {currency}",
|
"{amount} {currency}": "{amount} {currency}",
|
||||||
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
||||||
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"ALLG": "Allergi",
|
"ALLG": "Allergi",
|
||||||
"About meetings & conferences": "About meetings & conferences",
|
"About meetings & conferences": "About meetings & conferences",
|
||||||
"About the hotel": "Om hotellet",
|
"About the hotel": "Om hotellet",
|
||||||
|
"Accessibility": "Tilgjengelighet",
|
||||||
"Accessible Room": "Tilgjengelighetsrom",
|
"Accessible Room": "Tilgjengelighetsrom",
|
||||||
"Activities": "Aktiviteter",
|
"Activities": "Aktiviteter",
|
||||||
"Add code": "Legg til kode",
|
"Add code": "Legg til kode",
|
||||||
@@ -355,11 +356,13 @@
|
|||||||
"Zoom in": "Zoom inn",
|
"Zoom in": "Zoom inn",
|
||||||
"Zoom out": "Zoom ut",
|
"Zoom out": "Zoom ut",
|
||||||
"as of today": "per i dag",
|
"as of today": "per i dag",
|
||||||
|
"booking.accommodatesUpTo": "Plass til {nrOfGuests, plural, one {# person} other {opptil # personer}}",
|
||||||
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
|
"booking.adults": "{totalAdults, plural, one {# voksen} other {# voksne}}",
|
||||||
"booking.children": "{totalChildren, plural, one {# barn} other {# barn}}",
|
"booking.children": "{totalChildren, plural, one {# barn} other {# barn}}",
|
||||||
"booking.guests": "Maks {nrOfGuests, plural, one {# gjest} other {# gjester}}",
|
"booking.guests": "Maks {nrOfGuests, plural, one {# gjest} other {# gjester}}",
|
||||||
"booking.nights": "{totalNights, plural, one {# natt} other {# netter}}",
|
"booking.nights": "{totalNights, plural, one {# natt} other {# netter}}",
|
||||||
"booking.rooms": "{totalRooms, plural, one {# rom} other {# rom}}",
|
"booking.rooms": "{totalRooms, plural, one {# rom} other {# rom}}",
|
||||||
|
"booking.thisRoomIsEquippedWith": "Dette rommet er utstyrt med",
|
||||||
"by": "innen",
|
"by": "innen",
|
||||||
"characters": "tegn",
|
"characters": "tegn",
|
||||||
"guest": "gjest",
|
"guest": "gjest",
|
||||||
@@ -382,6 +385,7 @@
|
|||||||
"spendable points expiring by": "{points} Brukbare poeng utløper innen {date}",
|
"spendable points expiring by": "{points} Brukbare poeng utløper innen {date}",
|
||||||
"to": "til",
|
"to": "til",
|
||||||
"uppercase letter": "stor bokstav",
|
"uppercase letter": "stor bokstav",
|
||||||
|
"{amount} out of {total}": "{amount} av {total}",
|
||||||
"{amount} {currency}": "{amount} {currency}",
|
"{amount} {currency}": "{amount} {currency}",
|
||||||
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
"{difference}{amount} {currency}": "{difference}{amount} {currency}",
|
||||||
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
"{width} cm × {length} cm": "{width} cm × {length} cm"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"ALLG": "Allergi",
|
"ALLG": "Allergi",
|
||||||
"About meetings & conferences": "About meetings & conferences",
|
"About meetings & conferences": "About meetings & conferences",
|
||||||
"About the hotel": "Om hotellet",
|
"About the hotel": "Om hotellet",
|
||||||
|
"Accessibility": "Tillgänglighet",
|
||||||
"Accessible Room": "Tillgänglighetsrum",
|
"Accessible Room": "Tillgänglighetsrum",
|
||||||
"Activities": "Aktiviteter",
|
"Activities": "Aktiviteter",
|
||||||
"Add code": "Lägg till kod",
|
"Add code": "Lägg till kod",
|
||||||
|
|||||||
@@ -550,9 +550,9 @@ const roomConfigurationSchema = z.object({
|
|||||||
z.object({
|
z.object({
|
||||||
inventory: z.number(),
|
inventory: z.number(),
|
||||||
code: z.enum([
|
code: z.enum([
|
||||||
RoomPackageCodeEnum.PETR,
|
RoomPackageCodeEnum.PET_ROOM,
|
||||||
RoomPackageCodeEnum.ALLG,
|
RoomPackageCodeEnum.ALLERGY_ROOM,
|
||||||
RoomPackageCodeEnum.ACCE,
|
RoomPackageCodeEnum.ACCESSIBILITY_ROOM,
|
||||||
]),
|
]),
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ export const getRoomPackagesInputSchema = z.object({
|
|||||||
const packagesSchema = z.array(
|
const packagesSchema = z.array(
|
||||||
z.object({
|
z.object({
|
||||||
code: z.enum([
|
code: z.enum([
|
||||||
RoomPackageCodeEnum.PETR,
|
RoomPackageCodeEnum.PET_ROOM,
|
||||||
RoomPackageCodeEnum.ALLG,
|
RoomPackageCodeEnum.ALLERGY_ROOM,
|
||||||
RoomPackageCodeEnum.ACCE,
|
RoomPackageCodeEnum.ACCESSIBILITY_ROOM,
|
||||||
]),
|
]),
|
||||||
itemCode: z.string(),
|
itemCode: z.string(),
|
||||||
description: z.string(),
|
description: z.string(),
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import {
|
|||||||
RoomConfiguration,
|
RoomConfiguration,
|
||||||
} from "@/server/routers/hotels/output"
|
} from "@/server/routers/hotels/output"
|
||||||
|
|
||||||
import { RoomPackageCodes } from "./roomFilter"
|
|
||||||
import { Rate } from "./selectRate"
|
import { Rate } from "./selectRate"
|
||||||
|
|
||||||
import { RoomData } from "@/types/hotel"
|
import { RoomData } from "@/types/hotel"
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { z } from "zod"
|
|||||||
import { getRoomPackagesSchema } from "@/server/routers/hotels/schemas/packages"
|
import { getRoomPackagesSchema } from "@/server/routers/hotels/schemas/packages"
|
||||||
|
|
||||||
export enum RoomPackageCodeEnum {
|
export enum RoomPackageCodeEnum {
|
||||||
PETR = "PETR",
|
PET_ROOM = "PETR",
|
||||||
ALLG = "ALLG",
|
ALLERGY_ROOM = "ALLG",
|
||||||
ACCE = "ACCE",
|
ACCESSIBILITY_ROOM = "ACCE",
|
||||||
}
|
}
|
||||||
export interface RoomFilterProps {
|
export interface RoomFilterProps {
|
||||||
numberOfRooms: number
|
numberOfRooms: number
|
||||||
|
|||||||
Reference in New Issue
Block a user