feat(sw-453): fixed pr comments and default filter

This commit is contained in:
Pontus Dreij
2024-10-28 17:04:24 +01:00
parent c14b413a34
commit 62cf5dab80
17 changed files with 87 additions and 55 deletions

View File

@@ -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(),

View File

@@ -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)}

View File

@@ -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}

View File

@@ -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(

View File

@@ -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,

View File

@@ -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 (

View File

@@ -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

View File

@@ -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"

View File

@@ -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"

View File

@@ -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",

View File

@@ -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"

View File

@@ -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"

View File

@@ -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",

View File

@@ -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,
]), ]),
}) })
), ),

View File

@@ -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(),

View File

@@ -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"

View File

@@ -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