36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import type { HotelData } from "@/types/components/hotelReservation/selectHotel/hotelCardListingProps"
|
|
import type { HotelPin } from "@/types/components/hotelReservation/selectHotel/map"
|
|
|
|
export function getHotelPins(hotels: HotelData[]): HotelPin[] {
|
|
if (hotels.length === 0) return []
|
|
|
|
return hotels.map((hotel) => ({
|
|
coordinates: {
|
|
lat: hotel.hotelData.location.latitude,
|
|
lng: hotel.hotelData.location.longitude,
|
|
},
|
|
name: hotel.hotelData.name,
|
|
publicPrice: hotel.price?.public?.localPrice.pricePerNight ?? null,
|
|
memberPrice: hotel.price?.member?.localPrice.pricePerNight ?? null,
|
|
currency:
|
|
hotel.price?.public?.localPrice.currency ||
|
|
hotel.price?.member?.localPrice.currency ||
|
|
"N/A",
|
|
images: [
|
|
hotel.hotelData.hotelContent.images,
|
|
...(hotel.hotelData.gallery?.heroImages ?? []),
|
|
],
|
|
amenities: hotel.hotelData.detailedFacilities
|
|
.map((facility) => ({
|
|
...facility,
|
|
icon: facility.icon ?? "None",
|
|
}))
|
|
.slice(0, 5),
|
|
ratings: hotel.hotelData.ratings?.tripAdvisor.rating ?? null,
|
|
operaId: hotel.hotelData.operaId,
|
|
facilityIds: hotel.hotelData.detailedFacilities.map(
|
|
(facility) => facility.id
|
|
),
|
|
}))
|
|
}
|