FEAT: Adicionei as váriaveis de Siglas de pastas no .env e adicionei o campo de "provedor na resposta da API, quando o provedor bater com as siglas de pasta do .env ele retornará "Sothis".
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
parent
b75345bb8c
commit
77eff96195
@ -1,6 +1,6 @@
|
||||
// classe construtor para o modelo de viabilidade
|
||||
class ViabilidadeModel {
|
||||
constructor(nome, email, telefone, logradouro, numero, bairro, city, state, cep, naoDedicado, dedicado, distancia) {
|
||||
constructor(nome, email, telefone, logradouro, numero, bairro, city, state, cep, naoDedicado, dedicado, distancia, provedor) {
|
||||
// Inicialização de propriedades do modelo pode ser feita aqui
|
||||
this.nome = nome;
|
||||
this.email = email;
|
||||
@ -14,16 +14,18 @@ class ViabilidadeModel {
|
||||
this.naoDedicado = naoDedicado;
|
||||
this.dedicado = dedicado;
|
||||
this.distancia = distancia;
|
||||
this.provedor = provedor;
|
||||
}
|
||||
}
|
||||
|
||||
class ViabilidadeReverseGeocodeModel {
|
||||
constructor(endereco, naoDedicado, dedicado, distancia) {
|
||||
constructor(endereco, naoDedicado, dedicado, distancia, provedor) {
|
||||
// Inicialização de propriedades do modelo pode ser feita aqui
|
||||
this.endereco = endereco;
|
||||
this.naoDedicado = naoDedicado;
|
||||
this.dedicado = dedicado;
|
||||
this.distancia = distancia;
|
||||
this.provedor = provedor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -99,7 +99,7 @@ async function verificarViabilidade(rawViabilidadeData) {
|
||||
|
||||
|
||||
|
||||
const viabilidadeResult = new ViabilidadeModel(rawViabilidadeData.nome, rawViabilidadeData.email, rawViabilidadeData.telefone, street, rawNumero, neighborhood, city, state, cep, naoDedicado, dedicado, distancia || null);
|
||||
const viabilidadeResult = new ViabilidadeModel(rawViabilidadeData.nome, rawViabilidadeData.email, rawViabilidadeData.telefone, street, rawNumero, neighborhood, city, state, cep, naoDedicado, dedicado, distancia || null, viabilidade.data.pasta.sigla || null);
|
||||
|
||||
if (source) {
|
||||
return viabilidadeResult;
|
||||
|
||||
@ -23,9 +23,6 @@ const consultaViabilidade = async (lat, lon) => {
|
||||
consultarIndividual: "S"
|
||||
};
|
||||
|
||||
// const urlParams = qs.stringify(params, { arrayFormat: 'brackets' });
|
||||
// logger.info(`Chamada à API GeoGrid: ${url}?${urlParams}`);
|
||||
|
||||
const response = await axios.get(url, {
|
||||
params,
|
||||
// força a serialização do tipo `itens[]=caixa`
|
||||
@ -41,11 +38,19 @@ const consultaViabilidade = async (lat, lon) => {
|
||||
|
||||
const registrosFiltrados = registros.filter(r => {
|
||||
const sigla = r.pasta && r.pasta.sigla;
|
||||
return sigla === "São Bernardo do Campo - SP" || sigla === "São Paulo - SP" || sigla === "Barueri - São Paulo" || sigla === "TMC";
|
||||
const isAuthorized = apiConfig.geogridAuthorizedSiglasPastas.includes(sigla);
|
||||
|
||||
const isParceiro = sigla.toLowerCase().includes("- parceiro") || sigla.toLowerCase().includes("parceiros - outros");
|
||||
|
||||
return isAuthorized || isParceiro;
|
||||
});
|
||||
|
||||
const primeiro = registrosFiltrados[0];
|
||||
|
||||
if (apiConfig.geogridAuthorizedSiglasPastas.includes(primeiro.pasta.sigla)) {
|
||||
primeiro.pasta.sigla = "Sothis";
|
||||
}
|
||||
|
||||
// Retorna no formato esperado pelo controller (viabilidade.data.distancia)
|
||||
return { data: primeiro };
|
||||
} catch (error) {
|
||||
@ -56,26 +61,3 @@ const consultaViabilidade = async (lat, lon) => {
|
||||
|
||||
module.exports = { consultaViabilidade };
|
||||
|
||||
/*
|
||||
DESCRIÇÃO:
|
||||
Este arquivo define um serviço para consultar a API "GeoGrid", que parece ser um sistema de geolocalização para verificar a viabilidade de serviço em um determinado local.
|
||||
|
||||
FLUXO:
|
||||
1. É chamado pelo `contratacao.service.js`, recebendo coordenadas de latitude e longitude.
|
||||
2. Busca as credenciais da API (URL, chave e cookie) a partir do `apiConfig`.
|
||||
3. Monta um objeto de parâmetros para a requisição GET, incluindo:
|
||||
- `raio`: um raio de busca de 5000 metros.
|
||||
- `latitude` e `longitude`: as coordenadas do ponto de consulta.
|
||||
- `itens[]`: especifica o que procurar (neste caso, "caixa").
|
||||
- Parâmetros de ordenação e consulta.
|
||||
4. Utiliza a biblioteca `qs` para serializar os parâmetros corretamente, especialmente o array `itens[]`.
|
||||
5. Loga no console um comando `curl` equivalente, o que é uma excelente prática para depuração, permitindo replicar a requisição fora da aplicação.
|
||||
6. Executa a requisição GET para a URL do GeoGrid usando `axios`, passando os parâmetros e os cabeçalhos de autenticação (`api-key` and `Cookie`).
|
||||
7. Processa a resposta:
|
||||
- Extrai o array `registros` da resposta.
|
||||
- Pega apenas o primeiro item desse array.
|
||||
- Retorna o primeiro registro encontrado, encapsulado em um objeto `{ data: primeiro }` para manter consistência com o que o `contratacao.service` espera (`viabilidade.data`).
|
||||
8. Em caso de erro na requisição, loga a mensagem de erro e lança uma exceção.
|
||||
|
||||
Este serviço abstrai a interação com a API GeoGrid, expondo uma função simples (`consultaViabilidade`) para o resto da aplicação.
|
||||
*/
|
||||
@ -8,6 +8,7 @@ const googleApiKey = process.env.GOOGLE_API_KEY;
|
||||
const geogridApiUrl = process.env.GEOGRID_API_URL;
|
||||
const geogridApiKey = process.env.GEOGRID_API_KEY;
|
||||
const geogridApiCookie = process.env.GEOGRID_API_COOKIE;
|
||||
const geogridAuthorizedSiglasPastas = process.env.GEOGRID_AUTHORIZED_SIGLAS_PASTAS ? process.env.GEOGRID_AUTHORIZED_SIGLAS_PASTAS.split(',').map(s => s.trim()) : [];
|
||||
|
||||
// Hubsoft API Configs
|
||||
const hubsoftUrl = process.env.HUBSOFT_URL;
|
||||
@ -23,6 +24,7 @@ module.exports = {
|
||||
geogridApiUrl: geogridApiUrl,
|
||||
geogridApiKey: geogridApiKey,
|
||||
geogridApiCookie: geogridApiCookie,
|
||||
geogridAuthorizedSiglasPastas: geogridAuthorizedSiglasPastas,
|
||||
hubsoftUrl: hubsoftUrl,
|
||||
|
||||
hubsoftAuthUrl: hubsoftAuthUrl,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user