From 6e60258cd671c69d95a19b3927951a2e9fcddb06 Mon Sep 17 00:00:00 2001 From: Lewis <lgtg20@inf.ufpr.br> Date: Thu, 27 Mar 2025 10:26:34 -0300 Subject: [PATCH] fix: update revenue labels and clean up console logs; add type endpoint to studentRevenue --- .gitignore | 1 + src/libs/convert/revenue.js | 18 ++----- src/libs/middlewares/aggregateData.js | 4 -- src/libs/routes_v1/activity.js | 1 - src/libs/routes_v1/studentRevenue.js | 71 ++++++++++++++++++++------- 5 files changed, 58 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index 2fa21185..780dbd8f 100644 --- a/.gitignore +++ b/.gitignore @@ -30,5 +30,6 @@ DockerfileAntigo src/libs/db/postgres.js docker-compose.yml entrypoint.sh +gulpfile* gulpfile.template.js diff --git a/src/libs/convert/revenue.js b/src/libs/convert/revenue.js index 18cfeb8c..006e2662 100644 --- a/src/libs/convert/revenue.js +++ b/src/libs/convert/revenue.js @@ -21,22 +21,14 @@ along with simcaq-node. If not, see <https://www.gnu.org/licenses/>. module.exports = function regionCode(id) { switch (id) { case 1: - return "Ano"; + return 'Receitas'; case 2: - return "Nome Ente" + return 'Rede pública (anual)' case 3: - return 'Receitas'; + return 'Rede pública (mensal)'; case 4: - return 'Matrículas Públicas'; + return 'Rede pública e conveniada (anual)'; case 5: - return 'Matrículas Públicas Mais Conveniada'; - case 6: - return 'Receita Aluno Ano Pública' - case 7: - return 'Receita Aluno Mês Pública'; - case 8: - return 'Receita Aluno Ano Pública Mais Conveniada'; - case 9: - return 'Receita Aluno Mês Pública Mais Conveniada'; + return 'Rede pública e conveniada (mensal)'; } }; diff --git a/src/libs/middlewares/aggregateData.js b/src/libs/middlewares/aggregateData.js index fccb7453..e004f653 100644 --- a/src/libs/middlewares/aggregateData.js +++ b/src/libs/middlewares/aggregateData.js @@ -42,7 +42,6 @@ const convert = { } function aggregateData(req, res, next) { - console.log("Teste if agg"); if (req.query.dims) { const newResult = [] const aggregateFields = [ @@ -78,12 +77,9 @@ function aggregateData(req, res, next) { let currentNonAggregateField; // Verifica se o filtro passado está presente nos filtros agregados - console.log("fields:"); - console.log(fields); fields.forEach(field => {if (aggregateFields.includes(field)) currentAggregateField = field; else currentNonAggregateField = field}); if (currentAggregateField) { req.result.forEach((r) => { - console.log("aggregate data aaa"); // Alguns filtros começam com o id = 0 outros id = 1 id = ['ethnic_group', 'integral_time_agg'].includes(currentAggregateField) ? 0 : 1; for (const property in r) { diff --git a/src/libs/routes_v1/activity.js b/src/libs/routes_v1/activity.js index cb35c2de..1cc63016 100644 --- a/src/libs/routes_v1/activity.js +++ b/src/libs/routes_v1/activity.js @@ -199,7 +199,6 @@ activityApp.put('/:id', passport.authenticate('bearer', { session: false }), aut } }); } - console.log("TEste"); act.type = req.body.tipo || act.type; act.title = req.body.titulo || act.title; act.subtitle = req.body.subtitulo || act.subtitle; diff --git a/src/libs/routes_v1/studentRevenue.js b/src/libs/routes_v1/studentRevenue.js index b595fb00..17da5f27 100644 --- a/src/libs/routes_v1/studentRevenue.js +++ b/src/libs/routes_v1/studentRevenue.js @@ -36,9 +36,9 @@ const aggregateData = require(`${libs}/middlewares/aggregateData`); const id2str = require(`${libs}/middlewares/id2str`); -const config = require(`${libs}/config`); +const config = require(`${libs}/config`); -const cache = require('apicache').options({ debug: config.debug, statusCodes: {include: [200]} }).middleware; +const cache = require('apicache').options({ debug: config.debug, statusCodes: { include: [200] } }).middleware; let rqf = new ReqQueryFields(); @@ -46,11 +46,19 @@ studentRevenueApp.use(cache('15 day')); studentRevenueApp.get('/years', (req, res, next) => { req.sql.from('receitas') - .field('DISTINCT receitas.ano', 'year') - .where('receitas.ano is not null') + .field('DISTINCT receitas.ano', 'year') + .where('receitas.ano is not null') next(); }, query, response('years')); +studentRevenueApp.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, @@ -96,9 +104,13 @@ rqf.addField({ } }) -studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { +studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { if (req.query.dims && req.query.dims.includes('receitas')) { + let obj = {}; + console.log(req.query.filter) let whereCondition = req.query.filter.includes("region") ? "" : "receitas.cod_ibge = 0"; + + let typeFilter = false; let filterId; const filters = req.query.filter.split(","); filters.forEach((filter) => { @@ -108,20 +120,41 @@ studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { } }) - req.sql.from('receitas') - .field('receitas.ano', 'year') - .field('receitas.ano', 'total_ano') - .field('receitas.nome_ente', 'total_nome_ente') - .field('receitas.receitas', 'total_receitas') - .field('matriculas_publica', 'total_matriculas_publica') - .field('matriculas_publicas_mais_conveniada', 'total_matriculas_publicas_mais_conveniada') - .field('receuta_aluno_ano_publica', 'total_receita_aluno_ano_publica') - .field('receita_aluno_mes_publica', 'total_receita_aluno_mes_publica') - .field('receita_aluno_ano_publica_mais_conveniada', 'total_receita_aluno_ano_publica_mais_conveniada') - .field('receita_aluno_mes_publica_mais_conveniada', 'total_receita_aluno_mes_publica_mais_conveniada') - .where(`${whereCondition}`) - .order('receitas.cod_ibge') - .order('receitas.ano') + 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 = "receitas.cod_ibge >= 11 and receitas.cod_ibge <= 53" + else if (obj.type.includes("2") && !obj.type.includes("1")) + whereCondition = "receitas.cod_ibge > 53" + + typeFilter = true; + } + } + if (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') + .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') + } 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') + + } } next(); -- GitLab