wip
This commit is contained in:
38
src/services/CreateUserSearchingService.ts
Normal file
38
src/services/CreateUserSearchingService.ts
Normal 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;
|
||||
20
src/services/GetAddressByCoordinates.ts
Normal file
20
src/services/GetAddressByCoordinates.ts
Normal 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;
|
||||
26
src/services/GetCoordinatesByAddress.ts
Normal file
26
src/services/GetCoordinatesByAddress.ts
Normal 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;
|
||||
Reference in New Issue
Block a user