feat(SW-325): added pois to the list and dynamic map

This commit is contained in:
Erik Tiekstra
2024-09-17 16:13:22 +02:00
parent 1729f4b9c7
commit e79f413003
44 changed files with 1078 additions and 318 deletions

View File

@@ -216,16 +216,46 @@ const rewardNightSchema = z.object({
}),
})
const pointsOfInterestSchema = z.object({
name: z.string(),
distance: z.number(),
category: z.object({
const poiCategories = z.enum([
"Airport",
"Amusement park",
"Bus terminal",
"Fair",
"Hospital",
"Hotel",
"Marketing city",
"Museum",
"Nearby companies",
"Parking / Garage",
"Restaurant",
"Shopping",
"Sports",
"Theatre",
"Tourist",
"Transportations",
"Zoo",
])
export const pointOfInterestSchema = z
.object({
name: z.string(),
group: z.string(),
}),
location: locationSchema,
isHighlighted: z.boolean(),
})
distance: z.number(),
category: z.object({
name: poiCategories,
group: z.string(),
}),
location: locationSchema,
isHighlighted: z.boolean(),
})
.transform((poi) => ({
name: poi.name,
distance: poi.distance,
category: poi.category.name,
coordinates: {
lat: poi.location.latitude,
lng: poi.location.longitude,
},
}))
const parkingPricingSchema = z.object({
freeParking: z.boolean(),
@@ -454,7 +484,9 @@ export const getHotelDataSchema = z.object({
detailedFacilities: z.array(detailedFacilitySchema),
healthFacilities: z.array(healthFacilitySchema),
rewardNight: rewardNightSchema,
pointsOfInterest: z.array(pointsOfInterestSchema),
pointsOfInterest: z
.array(pointOfInterestSchema)
.transform((pois) => pois.sort((a, b) => a.distance - b.distance)),
parking: z.array(parkingSchema),
specialNeedGroups: z.array(specialNeedGroupSchema),
socialMedia: socialMediaSchema,

View File

@@ -251,6 +251,7 @@ export const hotelQueryRouter = router({
hotelRatings: hotelAttributes.ratings,
hotelDetailedFacilities: hotelAttributes.detailedFacilities,
hotelImages: images,
pointsOfInterest: hotelAttributes.pointsOfInterest,
roomCategories,
activitiesCard: activities,
}

View File

@@ -0,0 +1,18 @@
import { IconName } from "@/types/components/icon"
export function getIconByPoiCategory(category: string) {
switch (category) {
case "Transportations":
return IconName.Train
case "Shopping":
return IconName.Shopping
case "Museum":
return IconName.Museum
case "Tourist":
return IconName.Cultural
case "Restaurant":
return IconName.Restaurant
default:
return null
}
}