viabiliza/controller/viabilidadeController.js

54 lines
1.8 KiB
JavaScript
Raw Normal View History

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 };