From 90979225bcb09b879dbe7aa36548986714e48385 Mon Sep 17 00:00:00 2001 From: Lewis <lgtg20@inf.ufpr.br> Date: Thu, 27 Mar 2025 11:28:49 -0300 Subject: [PATCH] feat: update region codes and add type endpoint; enhance student revenue and cost queries --- src/libs/convert/expenses.js | 18 +++-------- src/libs/routes_v1/studentCost.js | 47 +++++++++++++++++++--------- src/libs/routes_v1/studentRevenue.js | 14 +-------- 3 files changed, 38 insertions(+), 41 deletions(-) diff --git a/src/libs/convert/expenses.js b/src/libs/convert/expenses.js index 5cd28c4e..2d8ff384 100644 --- a/src/libs/convert/expenses.js +++ b/src/libs/convert/expenses.js @@ -21,23 +21,13 @@ along with simcaq-node. If not, see <https://www.gnu.org/licenses/>. module.exports = function regionCode(id) { switch (id) { case 1: - return "Ano"; + return 'Rede pública (anual)' case 2: - return "Entidade"; + return 'Rede pública (mensal)'; case 3: - return 'Despesas'; + return 'Rede pública e conveniada (anual)'; case 4: - return 'Matrículas Públicas'; - case 5: - return 'Matrículas Públicas Mais Conveniada'; - case 6: - return 'Despesas Aluno Ano Pública' - case 7: - return 'Despesas Aluno Mês Pública'; - case 8: - return 'Despesas Aluno Ano Pública Mais Conveniada'; - case 9: - return 'Despesas Aluno Mês Pública Mais Conveniada'; + return 'Rede pública e conveniada (mensal)'; } }; diff --git a/src/libs/routes_v1/studentCost.js b/src/libs/routes_v1/studentCost.js index fdcf7270..74aa91a2 100644 --- a/src/libs/routes_v1/studentCost.js +++ b/src/libs/routes_v1/studentCost.js @@ -51,6 +51,14 @@ studentCostApp.get('/years', (req, res, next) => { next(); }, query, response('years')); +studentCostApp.get('/type', (req, res, next) => { + req.result = [] + + req.result.push({ id: 1, name: "Rede Estadual" }); + req.result.push({ id: 2, name: "Rede Municipal" }); + next(); +}, response('type')); + rqf.addField({ name: 'filter', field: false, @@ -98,8 +106,10 @@ rqf.addField({ studentCostApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { if (req.query.dims && req.query.dims.includes('despesas')) { + let obj = {}; let whereCondition = req.query.filter.includes("region") ? "" : "despesas.cod_ibge = 0"; let filterId; + let typeFilter = false; const filters = req.query.filter.split(","); filters.forEach((filter) => { if (filter.includes("state") || filter.includes("city")) { @@ -108,20 +118,29 @@ studentCostApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { } }) - req.sql.from('despesas') - .field('despesas.ano_censo', 'year') - .field('despesas.ano_censo', 'total_ano') - .field('despesas.nome_ente', 'total_nome_ente') - .field('despesas.despesas', 'total_despesas') - .field('matriculas_publica', 'total_matriculas_publica') - .field('matriculas_publicas_mais_conveniada', 'total_matriculas_publicas_mais_conveniada') - .field('gasto_aluno_ano_publica', 'total_gasto_aluno_ano_publica') - .field('gasto_aluno_mes_publica', 'total_gasto_aluno_mes_publica') - .field('gasto_aluno_ano_publica_mais_conveniada', 'total_gasto_aluno_ano_publica_mais_conveniada') - .field('gasto_aluno_mes_publica_mais_conveniada', 'total_gasto_aluno_mes_publica_mais_conveniada') - .where(`${whereCondition}`) - .order('despesas.cod_ibge') - .order('despesas.ano_censo') + if (req.query.filter) { + const jsonString = `{${req.query.filter.replace(/(\w+):/g, '"$1":')}}`; + obj = JSON.parse(jsonString); + if (obj.type) { + if (obj.type.includes("1") && !obj.type.includes("2")) + whereCondition = "despesas.cod_ibge >= 11 and despesas.cod_ibge <= 53" + else if (obj.type.includes("2") && !obj.type.includes("1")) + whereCondition = "despesas.cod_ibge > 53" + + typeFilter = true; + } + } + + if (!typeFilter || (typeFilter && (!obj.state && !obj.city && !obj.region))) { + req.sql.from('despesas') + .field('despesas.ano_censo', 'year') + .field('SUM(gasto_aluno_ano_publica)', 'total_gasto_aluno_ano_publica') + .field('SUM(gasto_aluno_mes_publica)', 'total_gasto_aluno_mes_publica') + .field('SUM(gasto_aluno_ano_publica_mais_conveniada)', 'total_gasto_aluno_ano_publica_mais_conveniada') + .field('SUM(gasto_aluno_mes_publica_mais_conveniada)', 'total_gasto_aluno_mes_publica_mais_conveniada') + .where(`${whereCondition}`) + .group('despesas.ano_censo') + } } next(); diff --git a/src/libs/routes_v1/studentRevenue.js b/src/libs/routes_v1/studentRevenue.js index 17da5f27..2b62671d 100644 --- a/src/libs/routes_v1/studentRevenue.js +++ b/src/libs/routes_v1/studentRevenue.js @@ -132,10 +132,9 @@ studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { typeFilter = true; } } - if (typeFilter && (!obj.state && !obj.city && !obj.region)) { + if (!typeFilter || (typeFilter && (!obj.state && !obj.city && !obj.region))) { req.sql.from('receitas') .field('receitas.ano', 'year') - // .field('receitas.ano', 'total_ano') .field('SUM(receitas.receitas)', 'total_receitas') .field('SUM(receuta_aluno_ano_publica)', '(total_receita_aluno_ano_publica)') .field('SUM(receita_aluno_mes_publica)', 'total_receita_aluno_mes_publica') @@ -143,17 +142,6 @@ studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { .field('SUM(receita_aluno_mes_publica_mais_conveniada)', 'total_receita_aluno_mes_publica_mais_conveniada') .where(`${whereCondition}`) .group('receitas.ano') - } else if (!typeFilter) { - req.sql.from('receitas') - .field('receitas.ano', 'year') - .field('SUM(receitas.receitas)', 'total_receitas') - .field('SUM(receuta_aluno_ano_publica)', '(total_receita_aluno_ano_publica)') - .field('SUM(receita_aluno_mes_publica)', 'total_receita_aluno_mes_publica') - .field('SUM(receita_aluno_ano_publica_mais_conveniada)', 'total_receita_aluno_ano_publica_mais_conveniada') - .field('SUM(receita_aluno_mes_publica_mais_conveniada)', 'total_receita_aluno_mes_publica_mais_conveniada') - .where(`${whereCondition}`) - .group('receitas.ano') - } } -- GitLab