dashboard: reimaginacao
Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
0963cab395
commit
285d829c27
2 files changed
+101
No files matched your search
@@ -8,6 +8,7 @@ import provasRoutes from './routes/provas';
|
||||
import calculosJudiciaisRoutes from './routes/calculosJudiciais';
|
||||
import indicesMonetariosRoutes from './routes/indicesMonetarios';
|
||||
import pensaoAlimenticiaRoutes from './routes/pensaoAlimenticia';
|
||||
import financeiroPainelRoutes from './routes/financeiroPainel';
|
||||
|
||||
dotenv.config();
|
||||
|
||||
@@ -27,6 +28,7 @@ app.use('/api/provas', provasRoutes);
|
||||
app.use('/api/calculos', calculosJudiciaisRoutes);
|
||||
app.use('/api/indices', indicesMonetariosRoutes);
|
||||
app.use('/api/pensao-alimenticia', pensaoAlimenticiaRoutes);
|
||||
app.use('/api/financeiro-painel', financeiroPainelRoutes);
|
||||
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
app.set('trust proxy', true); // Importante para obter o IP real em ambientes com proxy
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
import express from 'express';
|
||||
import { prisma } from '../app';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// GET /api/financeiro-painel?mes=6&ano=2024
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
const mes = parseInt(req.query.mes as string) || (new Date().getMonth() + 1);
|
||||
const ano = parseInt(req.query.ano as string) || (new Date().getFullYear());
|
||||
if (isNaN(mes) || isNaN(ano)) {
|
||||
return res.status(400).json({ error: 'Parâmetros de mês e ano inválidos.' });
|
||||
}
|
||||
// Datas para filtro
|
||||
const dataInicio = new Date(ano, mes - 1, 1);
|
||||
const dataFim = new Date(ano, mes, 1);
|
||||
|
||||
// Honorários a receber: parcelas pendentes ou vencidas
|
||||
const honorariosAReceber = await prisma.parcelaHonorario.aggregate({
|
||||
_sum: { valor: true },
|
||||
where: {
|
||||
OR: [{ status: 'PENDENTE' }, { status: 'VENCIDO' }],
|
||||
},
|
||||
});
|
||||
|
||||
// Honorários recebidos no mês
|
||||
const honorariosRecebidosMes = await prisma.parcelaHonorario.aggregate({
|
||||
_sum: { valorPago: true },
|
||||
where: {
|
||||
status: 'PAGO',
|
||||
dataPagamento: {
|
||||
gte: dataInicio,
|
||||
lt: dataFim,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// Detalhes das parcelas recebidas no mês
|
||||
const detalhesHonorarios = await prisma.parcelaHonorario.findMany({
|
||||
where: {
|
||||
status: 'PAGO',
|
||||
dataPagamento: {
|
||||
gte: dataInicio,
|
||||
lt: dataFim,
|
||||
},
|
||||
},
|
||||
include: { honorario: true },
|
||||
orderBy: { dataPagamento: 'desc' },
|
||||
take: 10,
|
||||
});
|
||||
|
||||
// Custas a pagar
|
||||
const custasAPagar = await prisma.custaProcessual.aggregate({
|
||||
_sum: { valor: true },
|
||||
where: {
|
||||
OR: [{ status: 'PENDENTE' }, { status: 'VENCIDO' }],
|
||||
},
|
||||
});
|
||||
|
||||
// Custas pagas no mês
|
||||
const custasPagasMes = await prisma.custaProcessual.aggregate({
|
||||
_sum: { valor: true },
|
||||
where: {
|
||||
status: 'PAGO',
|
||||
dataPagamento: {
|
||||
gte: dataInicio,
|
||||
lt: dataFim,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// Detalhes das custas pagas no mês
|
||||
const detalhesCustas = await prisma.custaProcessual.findMany({
|
||||
where: {
|
||||
status: 'PAGO',
|
||||
dataPagamento: {
|
||||
gte: dataInicio,
|
||||
lt: dataFim,
|
||||
},
|
||||
},
|
||||
orderBy: { dataPagamento: 'desc' },
|
||||
take: 10,
|
||||
});
|
||||
|
||||
res.json({
|
||||
honorariosAReceber: honorariosAReceber._sum.valor || 0,
|
||||
honorariosRecebidosMes: honorariosRecebidosMes._sum.valorPago || 0,
|
||||
custasAPagar: custasAPagar._sum.valor || 0,
|
||||
custasPagasMes: custasPagasMes._sum.valor || 0,
|
||||
detalhesHonorarios,
|
||||
detalhesCustas,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Erro no financeiroPainel:', error);
|
||||
res.status(500).json({ error: 'Erro ao buscar dados financeiros.' });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
Reference in new issue
Block a user