Cria branch VAN-45-create-view-search-itinerary

This commit is contained in:
Matheus Albino Brunhara
2022-08-29 20:10:02 -03:00
parent 64dc999ba4
commit 36e4464669
3 changed files with 151 additions and 2 deletions

47
src/models/Itinerary.ts Normal file
View File

@@ -0,0 +1,47 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
OneToMany,
} from 'typeorm';
import Van from './Van';
@Entity('itineraries')
class User {
@PrimaryGeneratedColumn('increment')
id_itinerary: number;
@Column()
van_plate: string;
@Column()
price: number;
@Column()
days_of_week: number;
@Column()
specific_day: Date;
@Column()
estimated_departure_time: Date;
@Column()
estimated_arrival_time: Date;
@Column()
available_seats: number;
@Column()
itinerary_nickname: string;
@CreateDateColumn()
created_at: Date;
@UpdateDateColumn()
updated_at: Date;
}
export default User;

View File

@@ -2,7 +2,7 @@ import { Router } from 'express';
import searchRoutes from './search.routes'; import searchRoutes from './search.routes';
import sessionsRouter from './sessions.routes'; import sessionsRouter from './sessions.routes';
import transportsRouter from './transports.routes'; import itinerariesRouter from './itineraries.routes';
import usersRouter from './users.routes'; import usersRouter from './users.routes';
import carsRouter from './cars.routes'; import carsRouter from './cars.routes';
import vansRouter from './vans.routes'; import vansRouter from './vans.routes';
@@ -12,7 +12,7 @@ const routes = Router();
routes.use('/users', usersRouter); routes.use('/users', usersRouter);
routes.use('/sessions', sessionsRouter); routes.use('/sessions', sessionsRouter);
routes.use('/search', searchRoutes); routes.use('/search', searchRoutes);
routes.use('/transports', transportsRouter); routes.use('/transports', itinerariesRouter);
routes.use('/cars', carsRouter); routes.use('/cars', carsRouter);
routes.use('/vans', vansRouter); routes.use('/vans', vansRouter);

View File

@@ -0,0 +1,102 @@
import { Router } from 'express';
import { getRepository } from 'typeorm';
import CalculateDistanceBetweenCoords from '../services/CalculateDistanceBetweenCoords';
const itinerariesRouter = Router();
itinerariesRouter.post('/', async (request, response) => {
const data = [
{
motorista: 'João',
valor: 'R$ 150,00',
lugares: '2',
avaliacao: '4.5',
bairros_atendidos: [{lat:-22.873432, lgn:-47.142274}],
destinos: [{lat:-22.833645, lgn:-47.048905}],
},
{
motorista: 'Ricardo',
valor: 'R$ 180,00',
lugares: '5',
avaliacao: '4.0',
bairros_atendidos: [{lat:-22.873432, lgn:-47.142274}],
destinos: [{lat:-22.833645, lgn:-47.048905}],
},
{
motorista: 'Luiz',
valor: 'R$ 200,00',
lugares: '1',
avaliacao: '4.3',
bairros_atendidos: [{lat:-22.873432, lgn:-47.142274}],
destinos: [{lat:-22.833645, lgn:-47.048905}],
},
{
motorista: 'Marcos',
valor: 'R$ 199,00',
lugares: '6',
avaliacao: '4.9',
bairros_atendidos: [{lat:-22.873432, lgn:-47.142274}],
destinos: [{lat:-22.833645, lgn:-47.048905}],
},
{
motorista: 'Orandi',
valor: 'R$ 210,00',
lugares: '8',
avaliacao: '5.0',
bairros_atendidos: [{lat:-22.873432, lgn:-47.142274}],
destinos: [{lat:-22.833645, lgn:-47.048905}],
},
{
motorista: 'Pedro',
valor: 'R$ 189,00',
lugares: '4',
avaliacao: '4.1',
bairros_atendidos: [{lat:-22.873432, lgn:-47.142274}],
destinos: [{lat:-22.833645, lgn:-47.048905}],
},
{
motorista: 'Pericles',
valor: 'R$ 220,00',
lugares: '19',
avaliacao: '4.5',
bairros_atendidos: [{lat:-23.873432, lgn:-47.142274}],
destinos: [{lat:-22.833645, lgn:-47.048905}],
},
];
})
itinerariesRouter.post('/', async (request, response) => {
const { coordinatesFrom, coordinatesTo } = request.body;
console.log(coordinatesFrom, coordinatesTo);
let lat_from:number = +coordinatesFrom.lat;
let lng_from:number = +coordinatesFrom.lng;
let lat_to:number = +coordinatesTo.lat;
let lng_to:number = +coordinatesTo.lng;
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;
distance = CalculateDistanceBetweenCoords({lat1:lat_from, lng1:lng_from, lat2, lng2});
if (distance <= 10) break;
}
for (const j of x.destinos) {
let lat2:number = +j.lat;
let lng2:number = +j.lgn;
distance2 = CalculateDistanceBetweenCoords({lat1:lat_to, lng1:lng_to, lat2, lng2});
if (distance2 <= 10) break;
}
return (distance <= 10 && distance2 <= 10);
});
console.log(transportsFiltered)
return response.json(transportsFiltered);
});
export default itinerariesRouter;