viabiliza/controller/viabilidadeController.js
gabriel.pereira b3bca576da REFACTOR: Remoção de serviços obsoletos e implementação da nova funcionalidade de viabilidade pela API de contratação
- Removidos os arquivos não utilizados: fetchService, geocodeService, normalizeService e retryService.

- Adicionado o viabilidadeController para gerenciar consultas de viabilidade e upload de arquivos CSV.

- Criadas as viabilidadeRoutes para tratar as rotas da API relacionadas à viabilidade.

- Implementado o csvService para processamento de arquivos CSV e integração com as consultas de viabilidade.

- Criado o jobStore.service para gerenciamento do estado dos jobs durante o processamento do CSV.

- Desenvolvido o viabilidadeService para integração com a API de viabilidade.
2025-12-30 09:16:07 -03:00

54 lines
1.8 KiB
JavaScript

const { consultarViabilidade } = require('../service/viabilidadeService');
const { processCsvFile } = require('../service/csvService');
const { getJob } = require('../service/jobStore.service');
// Controlador para consultar viabilidade
async function consultarViabilidadeController(req, res) {
try {
const data = req.body;
const result = await consultarViabilidade(data);
res.json(result);
} catch (error) {
console.error("Erro ao consultar viabilidade:", error && (error.message || error));
res.status(500).json({ error: "Erro ao consultar viabilidade" });
}
}
async function uploadCsvFile(req, res) {
try {
// validação simples: verifica se multer populou req.file
if (!req.file) {
return res.status(400).json({ error: 'Nenhum arquivo enviado. Campo do form deve ser "csvfile".' });
}
const filePath = req.file.path;
const originalName = req.file.originalname || req.file.filename || 'input.csv';
const out = await processCsvFile(filePath, originalName);
// normaliza retorno (processCsvFile pode retornar string ou objeto)
const outputPath = (typeof out === 'string') ? out : (out && out.outputPath) || null;
return res.json({ outputPath });
} catch (error) {
console.error("Erro ao processar CSV:", error && (error.message || error));
return res.status(500).json({ error: 'Erro ao processar CSV' });
}
}
async function getJobController(req, res) {
try {
const jobId = req.params.jobId;
const job = getJob(jobId);
if (!job) {
return res.status(404).json({ error: 'Job não encontrado' });
}
res.json(job);
} catch (error) {
console.error("Erro ao obter job:", error && (error.message || error));
return res.status(500).json({ error: 'Erro ao obter job' });
}
}
module.exports = { consultarViabilidadeController, uploadCsvFile, getJobController };