Files
web/apps/scandic-web/server/routers/hotels/schemas/hotel/healthFacilities.ts
Matilda Landström 0383a332ad Merged in feat/SW-2888-facilities (pull request #2267)
Feat/SW-2888 facilities

* chore(SW-2944): change order of content

* chore(SW-2944): add openinghourstype from api


Approved-by: Erik Tiekstra
2025-06-05 07:29:49 +00:00

63 lines
1.7 KiB
TypeScript

import { z } from "zod"
import { nullableArrayObjectValidator } from "@/utils/zod/arrayValidator"
import { nullableNumberValidator } from "@/utils/zod/numberValidator"
import { nullableStringValidator } from "@/utils/zod/stringValidator"
import { imageSchema } from "../image"
const healthFacilitiesOpenHoursSchema = z.object({
alwaysOpen: z.boolean(),
closingTime: nullableStringValidator,
isClosed: z.boolean(),
openingTime: nullableStringValidator,
sortOrder: nullableNumberValidator,
})
const descriptionSchema = z
.object({
medium: nullableStringValidator,
short: nullableStringValidator,
})
.nullish()
const detailsSchema = z.object({
name: nullableStringValidator,
type: nullableStringValidator,
value: nullableStringValidator,
})
const textsSchema = z.object({
descriptions: descriptionSchema,
facilityInformation: nullableStringValidator,
meetingDescription: descriptionSchema,
surroundingInformation: nullableStringValidator,
})
export const healthFacilitySchema = z.object({
content: z.object({
images: z
.array(imageSchema)
.nullish()
.transform((arr) => (arr ? arr.filter(Boolean) : [])),
texts: textsSchema,
}),
details: nullableArrayObjectValidator(detailsSchema),
openingDetails: z.object({
manualOpeningHours: nullableStringValidator,
openingHours: z.object({
ordinary: healthFacilitiesOpenHoursSchema,
weekends: healthFacilitiesOpenHoursSchema,
}),
useManualOpeningHours: z
.boolean()
.nullish()
.transform((b) => !!b),
openingHoursType: nullableStringValidator,
}),
type: nullableStringValidator,
})
export const healthFacilitiesSchema =
nullableArrayObjectValidator(healthFacilitySchema)