187 lines
4.2 KiB
JavaScript
187 lines
4.2 KiB
JavaScript
const movimentosService = require('../services/movimentos.service');
|
|
|
|
function validarDadosMovimento(dados) {
|
|
if (!dados.movimento) {
|
|
return 'Movimento é obrigatório.';
|
|
}
|
|
|
|
if (!['Entrada', 'Saida', 'Sangria', 'Estorno'].includes(dados.movimento)) {
|
|
return 'Movimento inválido.';
|
|
}
|
|
|
|
if (dados.valor === undefined || dados.valor === null || dados.valor === '') {
|
|
return 'Valor é obrigatório.';
|
|
}
|
|
|
|
if (Number(dados.valor) <= 0) {
|
|
return 'Valor deve ser maior que zero.';
|
|
}
|
|
|
|
if (!dados.status) {
|
|
return 'Situação é obrigatória.';
|
|
}
|
|
|
|
if (!['Pago', 'A pagar', 'Recebido', 'A receber'].includes(dados.status)) {
|
|
return 'Situação inválida.';
|
|
}
|
|
|
|
if (!dados.descricao || !String(dados.descricao).trim()) {
|
|
return 'Descrição é obrigatória.';
|
|
}
|
|
|
|
if (!dados.dataentrada) {
|
|
return 'Data de entrada é obrigatória.';
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
async function listar(req, res) {
|
|
try {
|
|
const resultado = await movimentosService.listarMovimentos({
|
|
limite: req.query.limite,
|
|
offset: req.query.offset,
|
|
page: req.query.page,
|
|
movimento: req.query.movimento,
|
|
status: req.query.status,
|
|
idbancos: req.query.idbancos,
|
|
idcentrodecustos: req.query.idcentrodecustos,
|
|
idclientes: req.query.idclientes,
|
|
idbancos_p: req.query.idbancos_p,
|
|
referenciaTipo: req.query.referenciaTipo,
|
|
dataCampo: req.query.dataCampo,
|
|
dataInicio: req.query.dataInicio,
|
|
dataFim: req.query.dataFim,
|
|
busca: req.query.busca,
|
|
orderBy: req.query.orderBy,
|
|
orderDirection: req.query.orderDirection,
|
|
});
|
|
|
|
return res.json({
|
|
ok: true,
|
|
data: resultado.data,
|
|
pagination: resultado.pagination,
|
|
summary: resultado.summary,
|
|
});
|
|
} catch (error) {
|
|
console.error('Erro ao listar movimentos:', error);
|
|
|
|
return res.status(500).json({
|
|
ok: false,
|
|
message: 'Erro ao listar movimentos.',
|
|
});
|
|
}
|
|
}
|
|
|
|
async function buscarPorId(req, res) {
|
|
try {
|
|
const id = Number(req.params.id);
|
|
|
|
if (!id) {
|
|
return res.status(400).json({
|
|
ok: false,
|
|
message: 'ID inválido.',
|
|
});
|
|
}
|
|
|
|
const movimento = await movimentosService.buscarMovimentoPorId(id);
|
|
|
|
if (!movimento) {
|
|
return res.status(404).json({
|
|
ok: false,
|
|
message: 'Movimento não encontrado.',
|
|
});
|
|
}
|
|
|
|
return res.json({
|
|
ok: true,
|
|
data: movimento,
|
|
});
|
|
} catch (error) {
|
|
console.error('Erro ao buscar movimento:', error);
|
|
|
|
return res.status(500).json({
|
|
ok: false,
|
|
message: 'Erro ao buscar movimento.',
|
|
});
|
|
}
|
|
}
|
|
|
|
async function criar(req, res) {
|
|
try {
|
|
const erroValidacao = validarDadosMovimento(req.body);
|
|
|
|
if (erroValidacao) {
|
|
return res.status(400).json({
|
|
ok: false,
|
|
message: erroValidacao,
|
|
});
|
|
}
|
|
|
|
const novoMovimento = await movimentosService.criarMovimento(req.user.id, req.body);
|
|
|
|
return res.status(201).json({
|
|
ok: true,
|
|
message: 'Movimento cadastrado com sucesso.',
|
|
data: novoMovimento,
|
|
});
|
|
} catch (error) {
|
|
console.error('Erro ao criar movimento:', error);
|
|
|
|
return res.status(500).json({
|
|
ok: false,
|
|
message: 'Erro ao criar movimento.',
|
|
});
|
|
}
|
|
}
|
|
|
|
async function atualizar(req, res) {
|
|
try {
|
|
const id = Number(req.params.id);
|
|
|
|
if (!id) {
|
|
return res.status(400).json({
|
|
ok: false,
|
|
message: 'ID inválido.',
|
|
});
|
|
}
|
|
|
|
const erroValidacao = validarDadosMovimento(req.body);
|
|
|
|
if (erroValidacao) {
|
|
return res.status(400).json({
|
|
ok: false,
|
|
message: erroValidacao,
|
|
});
|
|
}
|
|
|
|
const movimentoAtualizado = await movimentosService.atualizarMovimento(id, req.body);
|
|
|
|
if (!movimentoAtualizado) {
|
|
return res.status(404).json({
|
|
ok: false,
|
|
message: 'Movimento não encontrado.',
|
|
});
|
|
}
|
|
|
|
return res.json({
|
|
ok: true,
|
|
message: 'Movimento atualizado com sucesso.',
|
|
data: movimentoAtualizado,
|
|
});
|
|
} catch (error) {
|
|
console.error('Erro ao atualizar movimento:', error);
|
|
|
|
return res.status(500).json({
|
|
ok: false,
|
|
message: 'Erro ao atualizar movimento.',
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
listar,
|
|
buscarPorId,
|
|
criar,
|
|
atualizar,
|
|
}; |