From c0ec051cf1063ee0653eadfdf10d41d926e1d1dd Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Tue, 4 Dec 2018 15:39:12 -0200
Subject: [PATCH 1/4] Change 0 and 1 to true and false in schoolInfrastructure

Related: simcaq/SCRUM#421
---
 src/libs/routes/schoolInfrastructure.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/libs/routes/schoolInfrastructure.js b/src/libs/routes/schoolInfrastructure.js
index c53a02af..bfffc444 100644
--- a/src/libs/routes/schoolInfrastructure.js
+++ b/src/libs/routes/schoolInfrastructure.js
@@ -340,11 +340,11 @@ infrastructureApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
     req.queryIndex.allLibrariesReadingRoom = req.queryIndex.allCountrySchools;
 
     let haveLibrariesReadingRoom = allCountrySchools.clone();
-    haveLibrariesReadingRoom.where('escola.biblioteca_sala_leitura = 1');
+    haveLibrariesReadingRoom.where('escola.biblioteca_sala_leitura = true');
     req.queryIndex.haveLibrariesReadingRoom = req.querySet.push(haveLibrariesReadingRoom) - 1;
 
     let needLibrariesReadingRoom = allCountrySchools.clone();
-    needLibrariesReadingRoom.where('escola.biblioteca_sala_leitura = 0');
+    needLibrariesReadingRoom.where('escola.biblioteca_sala_leitura = false');
     req.queryIndex.needLibrariesReadingRoom = req.querySet.push(needLibrariesReadingRoom) - 1;
 
     // Laboratório de informática
@@ -366,11 +366,11 @@ infrastructureApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
     req.queryIndex.allScienceLab = req.querySet.push(allScienceLab) - 1;
 
     let haveScienceLab = allScienceLab.clone();
-    haveScienceLab.where('escola.lab_ciencias = 1');
+    haveScienceLab.where('escola.lab_ciencias = true');
     req.queryIndex.haveScienceLab = req.querySet.push(haveScienceLab) - 1;
 
     let needScienceLab = allScienceLab.clone();
-    needScienceLab.where('escola.lab_ciencias = 0');
+    needScienceLab.where('escola.lab_ciencias = false');
     req.queryIndex.needScienceLab = req.querySet.push(needScienceLab) - 1;
 
     // Parque infantil
-- 
GitLab


From 5d9e329eb1ef388df953173cefa03875bdf9d981 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Tue, 4 Dec 2018 16:15:01 -0200
Subject: [PATCH 2/4] Fix query match in schoolInfrastructure

Related: simcaq/SCRUM#421
---
 src/libs/routes/schoolInfrastructure.js | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/libs/routes/schoolInfrastructure.js b/src/libs/routes/schoolInfrastructure.js
index bfffc444..4a219930 100644
--- a/src/libs/routes/schoolInfrastructure.js
+++ b/src/libs/routes/schoolInfrastructure.js
@@ -259,6 +259,11 @@ function matchQueries(queryTotal, queryPartial, queryNeeded, zeroPercentage=fals
             }
         }
 
+        if(queryPartial.length == 0) {
+            partialMatch = JSON.parse(JSON.stringify(result));
+            partialMatch.total = 0;
+        }
+
         for(let i = 0; i < queryNeeded.length; ++i) {
             let needed = queryNeeded[i];
             let foundMatch = true;
@@ -275,6 +280,11 @@ function matchQueries(queryTotal, queryPartial, queryNeeded, zeroPercentage=fals
             }
         }
 
+        if(queryNeeded.length == 0) {
+            needMatch = JSON.parse(JSON.stringify(result));
+            needMatch.total = 0;
+        }
+
         if(partialMatch && needMatch) {
             newObj.percentage = (partialMatch.total / result.total) * 100;
             if(zeroPercentage) newObj.percentage = 0;
-- 
GitLab


From 82d1c8d0ca2aeb1ccc0059892c58fdf789a128fa Mon Sep 17 00:00:00 2001
From: Victor Picussa <vp16@inf.ufpr.br>
Date: Thu, 6 Dec 2018 10:53:14 -0200
Subject: [PATCH 3/4] [da_merge]Double column doesnt work

---
 src/libs/middlewares/query.js        |  1 +
 src/libs/routes/dailyChargeAmount.js | 34 ++++++++++++++++++++++++----
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/src/libs/middlewares/query.js b/src/libs/middlewares/query.js
index ae002df2..b724d93d 100644
--- a/src/libs/middlewares/query.js
+++ b/src/libs/middlewares/query.js
@@ -6,6 +6,7 @@ const db = require(`${libs}/db/query_exec`);
 function query(req, res, next) {
     let sql = req.sql.toParam();
     log.info(`Executando query ${req.sql.toString()}`);
+    sql.text = sql.text.replace(/`/g, "");
     execute(sql.text, sql.values, (err, result) => {
         if(err) {
             log.error(err.stack);
diff --git a/src/libs/routes/dailyChargeAmount.js b/src/libs/routes/dailyChargeAmount.js
index 54ef5bea..d9a02d77 100644
--- a/src/libs/routes/dailyChargeAmount.js
+++ b/src/libs/routes/dailyChargeAmount.js
@@ -284,6 +284,7 @@ rqf.addField({
     table: 'turma',
     tableField: 'etapas_mod_ensino_segmento_id',
     resultField: 'education_level_mod_id',
+    dontGroup: true,
     where: {
         relation: '=',
         type: 'integer',
@@ -380,7 +381,7 @@ dailyChargeAmountApp.get('/', rqf.parse(), (req, res, next) => {
     next();
 }, id2str.transform(), response('turma'));
 
-dailyChargeAmountApp.get('/average', rqf.parse(), (req, res, next) => {
+dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) => {
     var status = 0;
     if (('education_level_mod' in req.filter || 'education_level_mod' in req.dims)
     && ('integral_time' in req.filter)) {
@@ -401,11 +402,34 @@ dailyChargeAmountApp.get('/average', rqf.parse(), (req, res, next) => {
     }
 
     if (status) {
-        req.sql.from('turma')
+        let baseQ = req.sql.clone();
+
+        let tableR = baseQ.clone();
+        tableR.from('turma')
+        .field('duracao_turma')
+        .field('ROW_NUMBER() OVER(PARTITION BY etapas_mod_ensino_segmento_id ORDER BY duracao_turma)', 'rowno')
+        .where('tipo_turma_id <= 3')
+
+        let tableG = baseQ.clone();
+        tableG.from('turma')
+        .field('1+COUNT(*)', 'counter')
+        .where('tipo_turma_id <= 3')
+        .group('etapas_mod_ensino_segmento_id')
+
+        let joinRG = squel.select();
+        joinRG.from(tableR, 'R')
+        .field('R.education_level_mod_id')
+        .field('AVG(1.0*R.duracao_turma)/60', 'median_value')
+        .join(tableG, 'G', 'R.education_level_mod_id = G.education_level_mod_id AND R.rowNo BETWEEN G.counter/2 AND G.counter/2+G.counter%2')
+        .group('R.education_level_mod_id')
+
+        req.sql
+        .from('turma')
+        .from(joinRG, 'm')
         .field('turma.ano_censo', 'year')
         .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id')
         .field('AVG(turma.duracao_turma)/60.0', 'average_class_duration')
-        .field('MEDIAN(turma.duracao_turma)/60.0', 'median_class_duration')
+        .field('AVG(m.median_value)', 'median_class_duration')
         .field('STDDEV_SAMP(turma.duracao_turma)/60.0', 'std_class_duration')
         .field('QUANTILE(turma.duracao_turma, 0.25)/60.0', 'fstqt_class_duration')
         .field('QUANTILE(turma.duracao_turma, 0.75)/60.0', 'thdqt_class_duration')
@@ -413,7 +437,7 @@ dailyChargeAmountApp.get('/average', rqf.parse(), (req, res, next) => {
         .group('turma.etapas_mod_ensino_segmento_id')
         .order('turma.ano_censo')
         .order('turma.etapas_mod_ensino_segmento_id')
-        .where('turma.tipo_turma_id <= 3')
+        .where('turma.tipo_turma_id <= 3 and m.education_level_mod_id = turma.etapas_mod_ensino_segmento_id')
     } else {
         res.status(400);
         next({
@@ -423,6 +447,6 @@ dailyChargeAmountApp.get('/average', rqf.parse(), (req, res, next) => {
     }
 
     next();
-}, rqf.build(), query, addMissing(rqf), id2str.transform(), response('turma'));
+}, query, addMissing(rqf), id2str.transform(), response('turma'));
 
 module.exports = dailyChargeAmountApp;
-- 
GitLab


From 84d2106dfc0d33310757d0d4db9cfe0aa9e65a6e Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Thu, 6 Dec 2018 11:03:57 -0200
Subject: [PATCH 4/4] Update CHANGELOG

---
 CHANGELOG.md | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 39263084..6d3dbb01 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](http://keepachangelog.com/)
 and this project adheres to [Semantic Versioning](http://semver.org/).
 
+## 1.9.0 - 2018-11-24
+## Changed
+- Fix school infrastructure results when partial or needed schools query return empty
+- Block 2 or more dimensions in daily_charge_amount/average
+
 ## 1.8.3 - 2018-11-24
 ### Changed
 - Fixed reulst return in classroom count
-- 
GitLab