From a2356782fbcbf0ceccf840290dcae6ef1aefbd5a Mon Sep 17 00:00:00 2001 From: Matheus Albino Brunhara Date: Sat, 3 Sep 2022 20:45:25 -0300 Subject: [PATCH] Ajustes rota get itineraries in radius --- src/constants/mapRadiusConfig.ts | 3 ++ src/routes/itineraries.routes.ts | 55 +++++++++++++------------------- 2 files changed, 25 insertions(+), 33 deletions(-) create mode 100644 src/constants/mapRadiusConfig.ts diff --git a/src/constants/mapRadiusConfig.ts b/src/constants/mapRadiusConfig.ts new file mode 100644 index 0000000..3fb29c4 --- /dev/null +++ b/src/constants/mapRadiusConfig.ts @@ -0,0 +1,3 @@ +const maxRadius = 10 + +export default maxRadius diff --git a/src/routes/itineraries.routes.ts b/src/routes/itineraries.routes.ts index f2ad070..f1ef6fd 100644 --- a/src/routes/itineraries.routes.ts +++ b/src/routes/itineraries.routes.ts @@ -1,16 +1,14 @@ import { Router } from 'express'; import { getRepository } from 'typeorm'; -import axios from 'axios' -import AppError from '../errors/AppError'; import Itinerary from '../models/Itinerary'; import CalculateDistanceBetweenCoords from '../services/CalculateDistanceBetweenCoords'; import CreateItineraryService from '../services/CreateItineraryService'; -import NeighborhoodServed from '../models/NeighborhoodServed'; -import Destination from '../models/Destination'; import testData from "../constants/itineraryExample" +import maxRadius from '../constants/mapRadiusConfig'; + const itinerariesRouter = Router(); itinerariesRouter.get('/', async (request, response) => { @@ -76,48 +74,39 @@ itinerariesRouter.post('/examples', async (request, response) => { }); itinerariesRouter.post('/inradius', async (request, response) => { - const { coordinatesFrom, coordinatesTo } = request.body; - console.log(coordinatesFrom, coordinatesTo); + const { coordinatesOrigin, coordinatesDestination } = request.body; - let lat_from: number = +coordinatesFrom.lat; - let lng_from: number = +coordinatesFrom.lng; - let lat_to: number = +coordinatesTo.lat; - let lng_to: number = +coordinatesTo.lng; + const itinerariesRepository = getRepository(Itinerary); + // console.log(coordinatesOrigin, coordinatesDestiny); - const { data, status } = await axios.get( - 'https://630d4f7fb37c364eb702a43d.mockapi.io/vehiclemos/itineraries', - { - headers: { - Accept: 'application/json', - }, - }, - ); + const lat_from: number = +coordinatesOrigin.lat; + const lng_from: number = +coordinatesOrigin.lng; + const lat_to: number = +coordinatesDestination.lat; + const lng_to: number = +coordinatesDestination.lng; - if (status !== 200) { - throw new AppError('Não foi possível recuperar a lista de modelos do veículo informado.', 200); - } + const itineraries = await itinerariesRepository.find(); - console.log(data) + let transportsFiltered = itineraries.filter(itinerary => { + if (!itinerary.neighborhoodsServed || !itinerary.destinations) return false - // "data" é a lista de itinerários - let transportsFiltered = data.filter(x => { var distance = 0; var distance2 = 0; - for (const i of x.bairros_atendidos) { - let lat2: number = +i.lat; - let lng2: number = +i.lgn; + + for (const neighborhoodServed of itinerary.neighborhoodsServed) { + let lat2: number = +neighborhoodServed.latitude; + let lng2: number = +neighborhoodServed.longitude; distance = CalculateDistanceBetweenCoords({ lat1: lat_from, lng1: lng_from, lat2, lng2 }); - if (distance <= 10) break; + if (distance <= maxRadius) break; } - for (const j of x.destinos) { - let lat2: number = +j.lat; - let lng2: number = +j.lgn; + for (const destination of itinerary.destinations) { + let lat2: number = +destination.latitude; + let lng2: number = +destination.longitude; distance2 = CalculateDistanceBetweenCoords({ lat1: lat_to, lng1: lng_to, lat2, lng2 }); - if (distance2 <= 10) break; + if (distance2 <= maxRadius) break; } - return (distance <= 10 && distance2 <= 10); + return (distance <= maxRadius && distance2 <= maxRadius); }); console.log(transportsFiltered)