Ajustes rota get itineraries in radius

This commit is contained in:
Matheus Albino Brunhara
2022-09-03 20:45:25 -03:00
parent 3aa7b9bf96
commit a2356782fb
2 changed files with 25 additions and 33 deletions

View File

@@ -0,0 +1,3 @@
const maxRadius = 10
export default maxRadius

View File

@@ -1,16 +1,14 @@
import { Router } from 'express'; import { Router } from 'express';
import { getRepository } from 'typeorm'; import { getRepository } from 'typeorm';
import axios from 'axios'
import AppError from '../errors/AppError';
import Itinerary from '../models/Itinerary'; import Itinerary from '../models/Itinerary';
import CalculateDistanceBetweenCoords from '../services/CalculateDistanceBetweenCoords'; import CalculateDistanceBetweenCoords from '../services/CalculateDistanceBetweenCoords';
import CreateItineraryService from '../services/CreateItineraryService'; import CreateItineraryService from '../services/CreateItineraryService';
import NeighborhoodServed from '../models/NeighborhoodServed';
import Destination from '../models/Destination';
import testData from "../constants/itineraryExample" import testData from "../constants/itineraryExample"
import maxRadius from '../constants/mapRadiusConfig';
const itinerariesRouter = Router(); const itinerariesRouter = Router();
itinerariesRouter.get('/', async (request, response) => { itinerariesRouter.get('/', async (request, response) => {
@@ -76,48 +74,39 @@ itinerariesRouter.post('/examples', async (request, response) => {
}); });
itinerariesRouter.post('/inradius', async (request, response) => { itinerariesRouter.post('/inradius', async (request, response) => {
const { coordinatesFrom, coordinatesTo } = request.body; const { coordinatesOrigin, coordinatesDestination } = request.body;
console.log(coordinatesFrom, coordinatesTo);
let lat_from: number = +coordinatesFrom.lat; const itinerariesRepository = getRepository(Itinerary);
let lng_from: number = +coordinatesFrom.lng; // console.log(coordinatesOrigin, coordinatesDestiny);
let lat_to: number = +coordinatesTo.lat;
let lng_to: number = +coordinatesTo.lng;
const { data, status } = await axios.get<Itinerary[]>( const lat_from: number = +coordinatesOrigin.lat;
'https://630d4f7fb37c364eb702a43d.mockapi.io/vehiclemos/itineraries', const lng_from: number = +coordinatesOrigin.lng;
{ const lat_to: number = +coordinatesDestination.lat;
headers: { const lng_to: number = +coordinatesDestination.lng;
Accept: 'application/json',
},
},
);
if (status !== 200) { const itineraries = await itinerariesRepository.find();
throw new AppError('Não foi possível recuperar a lista de modelos do veículo informado.', 200);
}
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 distance = 0;
var distance2 = 0; var distance2 = 0;
for (const i of x.bairros_atendidos) {
let lat2: number = +i.lat; for (const neighborhoodServed of itinerary.neighborhoodsServed) {
let lng2: number = +i.lgn; let lat2: number = +neighborhoodServed.latitude;
let lng2: number = +neighborhoodServed.longitude;
distance = CalculateDistanceBetweenCoords({ lat1: lat_from, lng1: lng_from, lat2, lng2 }); distance = CalculateDistanceBetweenCoords({ lat1: lat_from, lng1: lng_from, lat2, lng2 });
if (distance <= 10) break; if (distance <= maxRadius) break;
} }
for (const j of x.destinos) { for (const destination of itinerary.destinations) {
let lat2: number = +j.lat; let lat2: number = +destination.latitude;
let lng2: number = +j.lgn; let lng2: number = +destination.longitude;
distance2 = CalculateDistanceBetweenCoords({ lat1: lat_to, lng1: lng_to, lat2, lng2 }); 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) console.log(transportsFiltered)