FEAT: Implementa nova funcionalidade de viabilidade com integração à API e ajustes na estrutura do projeto
This commit is contained in:
parent
1d2636926e
commit
84f925b3cb
2
.env
2
.env
@ -4,6 +4,8 @@ API_KEY="6d717e972ba17c7cf0ab731801b8bbeac2f281e5"
|
||||
COOKIE="PHPSESSID=6d717e972ba17c7cf0ab731801b8bbeac2f281e5"
|
||||
PORT="3000"
|
||||
|
||||
API_VIABILIDADE_URL="https://api.sothis.com.br/api/viabilidade"
|
||||
|
||||
DATABASE_HOST = 'crash.sothistelecom.com'
|
||||
DATABASE_PORT = '3306'
|
||||
DATABASE_NAME = 'viabilidade_data'
|
||||
|
||||
@ -7,35 +7,55 @@ document.getElementById('btnConsultaCep').addEventListener('click', async () =>
|
||||
const naoDedicado = document.getElementById('link-nao-dedicado');
|
||||
endereco.innerText = 'Consultando...';
|
||||
try {
|
||||
const resp = await fetch(`/consulta-cep?cep=${encodeURIComponent(cep)}&numero=${encodeURIComponent(numero)}`);
|
||||
const resp = await fetch(`/viabilidade?cep=${encodeURIComponent(cep)}&numero=${encodeURIComponent(numero)}`);
|
||||
const data = await resp.json();
|
||||
if (data && data.endereco !== undefined) {
|
||||
if (data && data.logradouro !== undefined) {
|
||||
// colocar o card-results__container (resultados) com display block
|
||||
endereco.innerHTML = `<strong>Endereço:</strong> ${data.endereco}.`;
|
||||
endereco.innerHTML = `<strong>Endereço:</strong> ${data.logradouro} ${data.numero} ${data.bairro} ${data.cidade} ${data.estado} ${data.cep} .`;
|
||||
resultados.style.display = 'block';
|
||||
|
||||
// insere nos spans link-dedicado e link-nao-dedicado os textos de viabilidade e se for viavel adicionar classe "viavel" e se for inviavel adicionar classe "inviavel"
|
||||
dedicado.innerText = data.dedicado;
|
||||
naoDedicado.innerText = data.naoDedicado;
|
||||
if (data.dedicado === 'Viável') {
|
||||
// precisa remover a classe inviavel se existir
|
||||
if (data.dedicado) {
|
||||
dedicado.innerText = "Viável";
|
||||
dedicado.classList.remove('inviavel');
|
||||
dedicado.classList.add('viavel');
|
||||
} else if (data.dedicado === 'Não viável') {
|
||||
// precisa remover a classe viavel se existir
|
||||
} else {
|
||||
dedicado.innerText = "Não viável";
|
||||
dedicado.classList.remove('viavel');
|
||||
dedicado.classList.add('inviavel');
|
||||
}
|
||||
|
||||
if (data.naoDedicado === 'Viável') {
|
||||
// precisa remover a classe inviavel se existir
|
||||
}
|
||||
|
||||
if (data.naoDedicado) {
|
||||
naoDedicado.innerText = "Viável";
|
||||
naoDedicado.classList.remove('inviavel');
|
||||
naoDedicado.classList.add('viavel');
|
||||
} else if (data.naoDedicado === 'Não viável') {
|
||||
// precisa remover a classe viavel se existir
|
||||
} else {
|
||||
naoDedicado.innerText = "Não viável";
|
||||
naoDedicado.classList.remove('viavel');
|
||||
naoDedicado.classList.add('inviavel');
|
||||
}
|
||||
|
||||
// // insere nos spans link-dedicado e link-nao-dedicado os textos de viabilidade e se for viavel adicionar classe "viavel" e se for inviavel adicionar classe "inviavel"
|
||||
// dedicado.innerText = data.dedicado;
|
||||
// naoDedicado.innerText = data.naoDedicado;
|
||||
// if (data.dedicado === 'Viável') {
|
||||
// // precisa remover a classe inviavel se existir
|
||||
// dedicado.classList.remove('inviavel');
|
||||
// dedicado.classList.add('viavel');
|
||||
// } else if (data.dedicado === 'Não viável') {
|
||||
// // precisa remover a classe viavel se existir
|
||||
// dedicado.classList.remove('viavel');
|
||||
// dedicado.classList.add('inviavel');
|
||||
// }
|
||||
|
||||
// if (data.naoDedicado === 'Viável') {
|
||||
// // precisa remover a classe inviavel se existir
|
||||
// naoDedicado.classList.remove('inviavel');
|
||||
// naoDedicado.classList.add('viavel');
|
||||
// } else if (data.naoDedicado === 'Não viável') {
|
||||
// // precisa remover a classe viavel se existir
|
||||
// naoDedicado.classList.remove('viavel');
|
||||
// naoDedicado.classList.add('inviavel');
|
||||
// }
|
||||
} else if (data.error) {
|
||||
endereco.innerText = 'Erro: ' + data.error;
|
||||
} else {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
const dotenv = require("dotenv");
|
||||
const path = require("path");
|
||||
|
||||
dotenv.config();
|
||||
|
||||
@ -10,7 +11,8 @@ function createApp() {
|
||||
const app = express();
|
||||
|
||||
app.use(express.json());
|
||||
app.use(router);
|
||||
app.use(express.static(path.join(__dirname, "../public")));
|
||||
app.use("/", router);
|
||||
app.use(cors());
|
||||
|
||||
return app;
|
||||
|
||||
10
src/config/apiConfig.js
Normal file
10
src/config/apiConfig.js
Normal file
@ -0,0 +1,10 @@
|
||||
const dotenv = require("dotenv");
|
||||
const path = require("path");
|
||||
|
||||
dotenv.config({ path: path.join(__dirname, '../../.env') }); // Caminho para .env na raiz
|
||||
|
||||
const API_URL = process.env.API_VIABILIDADE_URL;
|
||||
|
||||
module.exports = {
|
||||
API_URL
|
||||
};
|
||||
20
src/controllers/viabilidadeController.js
Normal file
20
src/controllers/viabilidadeController.js
Normal file
@ -0,0 +1,20 @@
|
||||
const viabilidadeService = require("../services/viabilidadeService");
|
||||
|
||||
async function getViabilidade(req, res) {
|
||||
const { cep, numero } = req.query;
|
||||
|
||||
if (!cep || !numero) {
|
||||
return res.status(400).json({ error: "CEP e número são obrigatórios." });
|
||||
}
|
||||
|
||||
const data = await viabilidadeService.getViabilidadeData(cep, numero);
|
||||
console.log(data);
|
||||
|
||||
if (data) {
|
||||
res.json(data);
|
||||
} else {
|
||||
res.status(500).json({ error: "Falha ao obter dados de viabilidade." });
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { getViabilidade };
|
||||
@ -1,11 +1,14 @@
|
||||
const express = require("express");
|
||||
const consultaCepController = require("./controllers/consultaCepController");
|
||||
const viabilidadeController = require("./controllers/viabilidadeController");
|
||||
const path = require("path");
|
||||
const { Router } = express;
|
||||
const router = Router();
|
||||
|
||||
router.use(express.static(path.join(__dirname, "..", "public")));
|
||||
router.get('/consulta-cep', consultaCepController.getConsultaCep);
|
||||
router.get("/viabilidade", viabilidadeController.getViabilidade);
|
||||
|
||||
router.get("/", (req, res) => {
|
||||
res.sendFile(path.join(__dirname, "../public/index.html"));
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
|
||||
@ -5,5 +5,5 @@ const app = createApp();
|
||||
const PORT = process.env.PORT || 3000;
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server running on http://localhost:${PORT}`)
|
||||
console.log(`Server running on ${PORT}`)
|
||||
});
|
||||
|
||||
@ -42,6 +42,7 @@ async function getMinDistance(lat, lon) {
|
||||
|
||||
const data = resp.data || {};
|
||||
const registros = data.registros || [];
|
||||
console.log(data.registros[0]);
|
||||
console.info(
|
||||
`[INFO] API resp. raio=${raio} lat=${lat} lon=${lon} registros=${registros.length}`
|
||||
);
|
||||
|
||||
19
src/services/viabilidadeService.js
Normal file
19
src/services/viabilidadeService.js
Normal file
@ -0,0 +1,19 @@
|
||||
const axios = require('axios');
|
||||
const apiConfig = require('../config/apiConfig');
|
||||
|
||||
async function getViabilidadeData(cep, numero) {
|
||||
try {
|
||||
const data = {
|
||||
cep,
|
||||
numero
|
||||
};
|
||||
const url = apiConfig.API_URL;
|
||||
const response = await axios.post(url, data);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error(`[ERROR] Falha ao obter dados de viabilidade: ${error.message}`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { getViabilidadeData };
|
||||
Loading…
Reference in New Issue
Block a user