fix(946) Center from town name instead of calculate center

This commit is contained in:
Pontus Dreij
2024-11-21 14:15:51 +01:00
parent 01638f4dd7
commit 08e71a8dc6
12 changed files with 64 additions and 44 deletions

View File

@@ -74,3 +74,6 @@ export const getRoomPackagesInputSchema = z.object({
children: z.number().optional().default(0),
packageCodes: z.array(z.string()).optional().default([]),
})
export const getCityCoordinatesInputSchema = z.object({
city: z.string(),
})

View File

@@ -200,14 +200,14 @@ const rewardNightSchema = z.object({
export const pointOfInterestSchema = z
.object({
name: z.string(),
distance: z.number(),
name: z.string().optional(),
distance: z.number().optional(),
category: z.object({
name: z.string(),
group: z.string(),
name: z.string().optional(),
group: z.string().optional(),
}),
location: locationSchema,
isHighlighted: z.boolean(),
location: locationSchema.optional(),
isHighlighted: z.boolean().optional(),
})
.transform((poi) => ({
name: poi.name,
@@ -215,8 +215,8 @@ export const pointOfInterestSchema = z
categoryName: poi.category.name,
group: getPoiGroupByCategoryName(poi.category.name),
coordinates: {
lat: poi.location.latitude,
lng: poi.location.longitude,
lat: poi.location?.latitude ?? 0,
lng: poi.location?.longitude ?? 0,
},
}))
@@ -463,7 +463,9 @@ export const getHotelDataSchema = z.object({
parking: z.array(parkingSchema),
pointsOfInterest: z
.array(pointOfInterestSchema)
.transform((pois) => pois.sort((a, b) => a.distance - b.distance)),
.transform((pois) =>
pois.sort((a, b) => (a.distance ?? 0) - (b.distance ?? 0))
),
ratings: ratingsSchema,
rewardNight: rewardNightSchema,
restaurantImages: facilitySchema.optional(),

View File

@@ -30,6 +30,7 @@ import {
import { getVerifiedUser, parsedUser } from "../user/query"
import {
getBreakfastPackageInputSchema,
getCityCoordinatesInputSchema,
getHotelDataInputSchema,
getHotelsAvailabilityInputSchema,
getRatesInputSchema,
@@ -1078,4 +1079,20 @@ export const hotelQueryRouter = router({
)
}),
}),
map: router({
get: serviceProcedure
.input(getCityCoordinatesInputSchema)
.query(async function ({ input }) {
const apiKey = process.env.GOOGLE_STATIC_MAP_KEY
const { city } = input
const url = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(city)}&key=${apiKey}`
const response = await fetch(url)
const data = await response.json()
console.log("DATA_RESPONSE", data)
const { lat, lng } = data.results[0].geometry.location
return { lat, lng }
}),
}),
})

View File

@@ -12,13 +12,14 @@ import {
type Countries,
} from "./output"
import type { Lang } from "@/constants/languages"
import type { Endpoint } from "@/lib/api/endpoints"
import type { RequestOptionsWithOutBody } from "@/types/fetch"
import { PointOfInterestGroupEnum } from "@/types/hotel"
import { HotelLocation } from "@/types/trpc/routers/hotel/locations"
import type { Lang } from "@/constants/languages"
import type { Endpoint } from "@/lib/api/endpoints"
export function getPoiGroupByCategoryName(category: string) {
export function getPoiGroupByCategoryName(category: string | undefined) {
if (!category) return PointOfInterestGroupEnum.LOCATION
switch (category) {
case "Airport":
case "Bus terminal":