From ea1a0a37a6771feaca1cacb4845bc0c721e26ef5 Mon Sep 17 00:00:00 2001
From: tgcl21 <tgcl21@inf.ufpr.br>
Date: Fri, 16 May 2025 15:48:00 -0300
Subject: [PATCH 1/7] Fixed the the wrong total errors

---
 src/libs/routes_v1/instructionLevel.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/libs/routes_v1/instructionLevel.js b/src/libs/routes_v1/instructionLevel.js
index d3cb7d0c..aa083380 100644
--- a/src/libs/routes_v1/instructionLevel.js
+++ b/src/libs/routes_v1/instructionLevel.js
@@ -291,7 +291,6 @@ NivelInstrucao.get('/', rqf.parse(), rqf.build(),  (req, res, next) => {
         .field('nivel_de_instrucao', 'nivel')
         .field('round(sum(peso_domicilio_pessoas_com_cal), 0)', 'total')
         .field('ano_ref', 'year')
-        .where('nivel_de_instrucao <> 99')
         .where('faixa_etaria <> 99')
         .group('pnad_novo.ano_ref')
         .group('pnad_novo.nivel_de_instrucao')
-- 
GitLab


From a1a27edd3b3949da3028505d140bb8a4eb18d0f4 Mon Sep 17 00:00:00 2001
From: es23 <es23@inf.ufpr.br>
Date: Tue, 20 May 2025 10:22:51 -0300
Subject: [PATCH 2/7] fix income range null field

---
 src/libs/routes_v1/studentsReceivingAidTax.js | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/libs/routes_v1/studentsReceivingAidTax.js b/src/libs/routes_v1/studentsReceivingAidTax.js
index c4509cf8..b515e376 100644
--- a/src/libs/routes_v1/studentsReceivingAidTax.js
+++ b/src/libs/routes_v1/studentsReceivingAidTax.js
@@ -578,8 +578,21 @@ function matchQueries(queryPartial, queryTotal) {
     return match;
 }
 
+function whereCondition(req) {
+    let where = "";
+
+    const dims = req.query.dims;
+	if (dims && dims.includes("income_range")){
+		where += `pnad_novo.faixa_rendimento_aux_tx is not null`;
+	}
+
+    
+    return where;
+}
+
 studentsReceivingAidTaxApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
     req.querySet = [];
+    let where = whereCondition(req);
     
     // Subquery para total_pop_maior_25 com filtros dinâmicos
     let totalEstudantesQueRecebemAuxilio = req.sql.clone();
@@ -587,6 +600,7 @@ studentsReceivingAidTaxApp.get('/', rqf.parse(), rqf.build(), (req, res, next) =
         .field("ano_ref", "year")
         .field("SUM(peso_domicilio_pessoas_com_cal)", "total")
         .where("recebeu_rendimentos_de_programa_bolsa_familia = 1")
+		.where(`${where}`)
         .where("frequenta_escola = 1")
         .where("ano_ref >= 2019")
         .group("ano_ref")
@@ -598,7 +612,9 @@ studentsReceivingAidTaxApp.get('/', rqf.parse(), rqf.build(), (req, res, next) =
         totalEstudantes.from("pnad_novo")
         .field("ano_ref", "year")
         .field("SUM(peso_domicilio_pessoas_com_cal)", "total")
+		.where(`${where}`)
         .where("frequenta_escola = 1")
+        .where("ano_ref >= 2019")
         .group("ano_ref")
         .order("ano_ref");
 
-- 
GitLab


From f7240405b47b5de5f633ce5a92ae14623366ca39 Mon Sep 17 00:00:00 2001
From: es23 <es23@inf.ufpr.br>
Date: Wed, 21 May 2025 10:24:44 -0300
Subject: [PATCH 3/7] fix age range filter

---
 src/libs/convert/ageRangeAll.js               | 2 +-
 src/libs/routes_v1/studentsReceivingAidTax.js | 5 ++---
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/libs/convert/ageRangeAll.js b/src/libs/convert/ageRangeAll.js
index 1ad1c54e..ebc2336a 100644
--- a/src/libs/convert/ageRangeAll.js
+++ b/src/libs/convert/ageRangeAll.js
@@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License
 along with simcaq-node.  If not, see <https://www.gnu.org/licenses/>.
 */
 
-module.exports = function ageRange(id) {
+module.exports = function ageRangeAll(id) {
     switch (id) {
         case 1:
         return '0 a 3 anos';
diff --git a/src/libs/routes_v1/studentsReceivingAidTax.js b/src/libs/routes_v1/studentsReceivingAidTax.js
index b515e376..16547bfd 100644
--- a/src/libs/routes_v1/studentsReceivingAidTax.js
+++ b/src/libs/routes_v1/studentsReceivingAidTax.js
@@ -242,7 +242,7 @@ studentsReceivingAidTaxApp.get('/state', (req, res, next) => {
     next();
 }, response('state'));
 
-studentsReceivingAidTaxApp.get('/age_range', (req, res, next) => {
+studentsReceivingAidTaxApp.get('/age_range_all', (req, res, next) => {
     req.result = []
     for (let i = 1; i < 12; i++) {
         req.result.push({
@@ -251,7 +251,7 @@ studentsReceivingAidTaxApp.get('/age_range', (req, res, next) => {
     }
 
     next();
-}, response('age_range'));
+}, response('age_range_all'));
 
 studentsReceivingAidTaxApp.get('/location', (req, res, next) => {
     req.result = []
@@ -618,7 +618,6 @@ studentsReceivingAidTaxApp.get('/', rqf.parse(), rqf.build(), (req, res, next) =
         .group("ano_ref")
         .order("ano_ref");
 
-
     req.querySet.push(totalEstudantesQueRecebemAuxilio);
     req.querySet.push(totalEstudantes);
 
-- 
GitLab


From 877de5b65ab37df70734f25153d6b64a1c38c263 Mon Sep 17 00:00:00 2001
From: Joao Pedro <jpv.ramalho2013@gmail.com>
Date: Thu, 22 May 2025 09:24:54 -0300
Subject: [PATCH 4/7] [fix] arredondando para duas casas decimais

---
 src/libs/routes_v1/expenses.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/libs/routes_v1/expenses.js b/src/libs/routes_v1/expenses.js
index 36248659..624609e8 100644
--- a/src/libs/routes_v1/expenses.js
+++ b/src/libs/routes_v1/expenses.js
@@ -126,13 +126,13 @@ ExpensesApp.get('/', rqf.parse(), rqf.build(),  (req, res, next) => {
         .field('despesas.ano_censo', 'year')
         .field('despesas.ano_censo', 'total_ano')
         .field('despesas.nome_ente', 'total_nome_ente')
-        .field('despesas.despesas', 'total_despesas')
+        .field('round(despesas.despesas,2)', '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')
+        .field('round(gasto_aluno_ano_publica,2)', 'total_gasto_aluno_ano_publica')
+        .field('round(gasto_aluno_mes_publica,2)', 'total_gasto_aluno_mes_publica')
+        .field('round(gasto_aluno_ano_publica_mais_conveniada,2)', 'total_gasto_aluno_ano_publica_mais_conveniada')
+        .field('round(gasto_aluno_mes_publica_mais_conveniada,2)', 'total_gasto_aluno_mes_publica_mais_conveniada')
         .where(`${whereCondition}`)
         .order('despesas.ano_censo')
     }
-- 
GitLab


From c31b81cc1dbe1695f5424cd973ca423d8fea855d Mon Sep 17 00:00:00 2001
From: Joao Pedro <jpv.ramalho2013@gmail.com>
Date: Wed, 28 May 2025 09:32:16 -0300
Subject: [PATCH 5/7] [fix] retirou as colunas desnecessarias da tabela

---
 src/libs/middlewares/aggregateData.js |  2 ++
 src/libs/routes_v1/expenses.js        | 44 +++++++++++----------------
 2 files changed, 20 insertions(+), 26 deletions(-)

diff --git a/src/libs/middlewares/aggregateData.js b/src/libs/middlewares/aggregateData.js
index 8dbf01d7..0aab0341 100644
--- a/src/libs/middlewares/aggregateData.js
+++ b/src/libs/middlewares/aggregateData.js
@@ -78,6 +78,7 @@ function aggregateData(req, res, next) {
         let currentAggregateField;
         let currentNonAggregateField;
     
+        console.log("data pre aggregate" ,req.result)
         // Verifica se o filtro passado está presente nos filtros agregados
         fields.forEach(field => {if (aggregateFields.includes(field)) currentAggregateField = field; else currentNonAggregateField = field});
         if (currentAggregateField) {
@@ -109,6 +110,7 @@ function aggregateData(req, res, next) {
             req.result = newResult;
         }
     }
+    console.log("data pos aggregate" ,req.result)
     next();
 }
 
diff --git a/src/libs/routes_v1/expenses.js b/src/libs/routes_v1/expenses.js
index 624609e8..40f41166 100644
--- a/src/libs/routes_v1/expenses.js
+++ b/src/libs/routes_v1/expenses.js
@@ -111,33 +111,25 @@ rqf.addField({
 
 ExpensesApp.get('/', rqf.parse(), rqf.build(),  (req, res, next) => {
 
-    if (req.query.dims && req.query.dims.includes('despesas')) {
-        let whereCondition = req.query.filter.includes("region") ? "" : "despesas.cod_ibge = 0";
-        let filterId;
-        const filters = req.query.filter.split(",");
-        filters.forEach((filter) => {
-            if (filter.includes("state") || filter.includes("city")) {
-                filterId = Number(filter.split(":")[1].replace(/"/g, ""));
-                whereCondition = `despesas.cod_ibge = ${filterId}`
-            }
-        })
-
-        req.sql.from('despesas')
-        .field('despesas.ano_censo', 'year')
-        .field('despesas.ano_censo', 'total_ano')
-        .field('despesas.nome_ente', 'total_nome_ente')
-        .field('round(despesas.despesas,2)', 'total_despesas')
-        .field('matriculas_publica', 'total_matriculas_publica')
-        .field('matriculas_publicas_mais_conveniada', 'total_matriculas_publicas_mais_conveniada')
-        .field('round(gasto_aluno_ano_publica,2)', 'total_gasto_aluno_ano_publica')
-        .field('round(gasto_aluno_mes_publica,2)', 'total_gasto_aluno_mes_publica')
-        .field('round(gasto_aluno_ano_publica_mais_conveniada,2)', 'total_gasto_aluno_ano_publica_mais_conveniada')
-        .field('round(gasto_aluno_mes_publica_mais_conveniada,2)', 'total_gasto_aluno_mes_publica_mais_conveniada')
-        .where(`${whereCondition}`)
-        .order('despesas.ano_censo')
-    }
+    let whereCondition = req.query.filter.includes("region") ? "" : "despesas.cod_ibge = 0";
+    let filterId;
+    const filters = req.query.filter.split(",");
+    filters.forEach((filter) => {
+        if (filter.includes("state") || filter.includes("city")) {
+            filterId = Number(filter.split(":")[1].replace(/"/g, ""));
+            whereCondition = `despesas.cod_ibge = ${filterId}`
+        }
+    })
 
+    req.sql.from('despesas')
+    .field('despesas.ano_censo', 'year')
+    .field('despesas.ano_censo', 'total_ano')
+    .field('despesas.nome_ente', 'total_nome_ente')
+    .field('round(despesas.despesas,2)', 'total')
+    .where(`${whereCondition}`)
+    .order('despesas.ano_censo')
+    
     next();
-}, query, aggregateData, id2str.transform(false), response('expenses'));
+}, query, id2str.transform(false), response('expenses'));
 
 module.exports = ExpensesApp;
\ No newline at end of file
-- 
GitLab


From 537bdef25e53cdf2bf3e8996c204db5d46b23465 Mon Sep 17 00:00:00 2001
From: Joao Pedro <jpv.ramalho2013@gmail.com>
Date: Wed, 28 May 2025 11:19:38 -0300
Subject: [PATCH 6/7] [fix] filtros por rede

---
 src/libs/routes_v1/expenses.js | 43 +++++++++++++++++++++++++++-------
 1 file changed, 35 insertions(+), 8 deletions(-)

diff --git a/src/libs/routes_v1/expenses.js b/src/libs/routes_v1/expenses.js
index 40f41166..0e578f2e 100644
--- a/src/libs/routes_v1/expenses.js
+++ b/src/libs/routes_v1/expenses.js
@@ -51,6 +51,14 @@ ExpensesApp.get('/years', (req, res, next) => {
     next();
 }, query, response('years'))
 
+ExpensesApp.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.addValue({
 //     name: 'location',
 //     table: 'despesas',
@@ -111,6 +119,8 @@ rqf.addField({
 
 ExpensesApp.get('/', rqf.parse(), rqf.build(),  (req, res, next) => {
 
+    let obj = {}
+    let typeFilter = false;
     let whereCondition = req.query.filter.includes("region") ? "" : "despesas.cod_ibge = 0";
     let filterId;
     const filters = req.query.filter.split(",");
@@ -121,14 +131,31 @@ ExpensesApp.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('round(despesas.despesas,2)', 'total')
-    .where(`${whereCondition}`)
-    .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('despesas.ano_censo', 'total_ano')
+        .field('despesas.nome_ente', 'total_nome_ente')
+        .field('round(despesas.despesas,2)', 'total')
+        .where(`${whereCondition}`)
+        .order('despesas.ano_censo')
+    }
+
     next();
 }, query, id2str.transform(false), response('expenses'));
 
-- 
GitLab


From 125b8a4d593e97682419824b1b6e5bd0f06ba85f Mon Sep 17 00:00:00 2001
From: Fernando Gbur dos Santos <fgs21@inf.ufpr.br>
Date: Wed, 28 May 2025 14:43:56 +0000
Subject: [PATCH 7/7] Edit aggregateData.js

---
 src/libs/middlewares/aggregateData.js | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/libs/middlewares/aggregateData.js b/src/libs/middlewares/aggregateData.js
index 0aab0341..8dbf01d7 100644
--- a/src/libs/middlewares/aggregateData.js
+++ b/src/libs/middlewares/aggregateData.js
@@ -78,7 +78,6 @@ function aggregateData(req, res, next) {
         let currentAggregateField;
         let currentNonAggregateField;
     
-        console.log("data pre aggregate" ,req.result)
         // Verifica se o filtro passado está presente nos filtros agregados
         fields.forEach(field => {if (aggregateFields.includes(field)) currentAggregateField = field; else currentNonAggregateField = field});
         if (currentAggregateField) {
@@ -110,7 +109,6 @@ function aggregateData(req, res, next) {
             req.result = newResult;
         }
     }
-    console.log("data pos aggregate" ,req.result)
     next();
 }
 
-- 
GitLab