This commit is contained in:
Hugo Falcao
2022-06-18 14:11:43 -03:00
parent bf5620a5fc
commit 2ff921ee24
11 changed files with 362 additions and 1 deletions

View File

@@ -0,0 +1,38 @@
import { getRepository } from 'typeorm';
import AppError from '../errors/AppError';
import User from '../models/User';
import UserSearching from '../models/UsersSearching';
interface Request {
id_user: string;
latitude_from: string;
longitude_from: string;
latitude_to: string;
longitude_to: string;
}
class CreateUserSearchingService {
public async execute({ id_user, latitude_from, longitude_from, latitude_to, longitude_to }: Request): Promise<UserSearching> {
const usersRepository = getRepository(User);
const usersSearchingRepository = getRepository(UserSearching);
const user = await usersRepository.findOne({
where: { id_user },
});
if (!user) {
throw new AppError('Usuário inválido!', 200);
}
const search = usersSearchingRepository.create({
user, latitude_from, longitude_from, latitude_to, longitude_to
});
await usersSearchingRepository.save(search);
return search;
}
}
export default CreateUserSearchingService;

View File

@@ -0,0 +1,20 @@
import axios from 'axios';
import AppError from '../errors/AppError';
interface Request {
latitude: string;
longitude: string;
}
class GetAddressByCoordinates {
public async execute({ latitude, longitude }: Request): Promise<JSON> {
const response = await axios.get(`https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${latitude}&lon=${longitude}`)
if (!response.data) {
throw new AppError('Não foi possível encontrar o endereço para a coordenada informada!', 200);
}
return response.data;
}
}
export default GetAddressByCoordinates;

View File

@@ -0,0 +1,26 @@
import axios from 'axios';
import AppError from '../errors/AppError';
interface Request {
address_to: string;
}
class GetCoordinatesByAddress{
public async execute({ address_to }: Request): Promise<any> {
// let endereco = address_to.replace(/[^a-z0-9+ ]/gi,'')
let endereco = address_to.replace(/[^a-z0-9+áàâãéèêíïóôõöúçñ ]/gi,'')
console.log(endereco)
endereco = endereco.replace(/ /gi,'+')
endereco = endereco.replace(/\+\+/g, '+')
// console.log(endereco)
const response = await axios.get(`https://nominatim.openstreetmap.org/?addressdetails=1&q=${endereco}&format=json&limit=1`)
if (!response.data || !response.data.length) {
throw new AppError('Não foi possível encontrar coordenadas para o endereço informado!', 400);
}
console.log(response.data)
return response.data;
}
}
export default GetCoordinatesByAddress;