From 3d39bf79a5695739df33229e6546c404a3031af3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Victor=20Risso?= <joaovictor.risso@gmail.com>
Date: Fri, 28 Oct 2016 11:56:39 -0200
Subject: [PATCH] Add enrollment queries for a given state in location module
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: João Victor Risso <joaovictor.risso@gmail.com>
---
 src/libs/routes/location.js | 62 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 61 insertions(+), 1 deletion(-)

diff --git a/src/libs/routes/location.js b/src/libs/routes/location.js
index e5629e66..39b5b6d9 100644
--- a/src/libs/routes/location.js
+++ b/src/libs/routes/location.js
@@ -715,7 +715,67 @@ locationApp.get('/educational/state/:id', (req, res, next) => {
         .group('escola.tipo_localizacao')
         .group('escola.ano_censo');
 
-    const queries = [totalSchoolsQry, schoolsPerLocationQry].map((qry) => {
+    const schoolClassYearQry = squel.select()
+        .field('MAX(turma.ano_censo)')
+        .from('turma')
+        .toString();
+
+    const enrollmentsQry = squel.select()
+        .field('estado.nome', 'name')
+        .field('COALESCE(SUM(turma.num_matriculas), 0)', 'total')
+        .field('turma.ano_censo', 'census_year')
+        .field('\'Total\'', 'adm_dependency')
+        .from('turma')
+        .from('estado')
+        .where('turma.fk_estado_id = estado.pk_estado_id')
+        .where(`turma.fk_estado_id = ${stateId}`)
+        .where(`turma.ano_censo IN (${schoolClassYearQry})`)
+        .where('turma.fk_tipo_turma_id <= 3')
+        .group('turma.ano_censo')
+        .group('estado.nome');
+
+    const enrollmentsPerAdmDepQry = squel.select()
+        .field('estado.nome', 'name')
+        .field('COALESCE(SUM(turma.num_matriculas), 0)', 'total')
+        .field('turma.ano_censo', 'census_year')
+        .field('dependencia_adm.nome', 'adm_dependency')
+        .from('turma')
+        .from('dependencia_adm')
+        .from('estado')
+        .where('turma.fk_estado_id = estado.pk_estado_id')
+        .where(`turma.fk_estado_id = ${stateId}`)
+        .where('turma.fk_dependencia_adm_id = dependencia_adm.pk_dependencia_adm_id')
+        .where('turma.fk_tipo_turma_id <= 3')
+        .where(`turma.ano_censo IN (${schoolClassYearQry})`)
+        .group('turma.ano_censo')
+        .group('dependencia_adm.nome')
+        .group('estado.nome');
+
+    const enrollmentsPerSchoolLevelQry = squel.select()
+        .field('estado.nome', 'name')
+        .field('COALESCE(SUM(turma.num_matriculas), 0)', 'total')
+        .field('turma.ano_censo', 'census_year')
+        .field('dependencia_adm.nome', 'adm_dependency')
+        .field('etapa_ensino.desc_etapa', 'school_level')
+        .from('turma')
+        .from('dependencia_adm')
+        .from('etapa_ensino')
+        .from('estado')
+        .where('turma.fk_estado_id = estado.pk_estado_id')
+        .where(`turma.fk_estado_id = ${stateId}`)
+        .where('turma.fk_dependencia_adm_id = dependencia_adm.pk_dependencia_adm_id')
+        .where('turma.fk_etapa_ensino_id = etapa_ensino.pk_etapa_ensino_id')
+        .where('turma.fk_tipo_turma_id <= 3')
+        .where(`turma.ano_censo IN (${schoolClassYearQry})`)
+        .group('turma.ano_censo')
+        .group('dependencia_adm.nome')
+        .group('etapa_ensino.desc_etapa')
+        .group('estado.nome')
+        .order('estado.nome')
+        .order('dependencia_adm.nome')
+        .order('etapa_ensino.desc_etapa');
+
+    const queries = [totalSchoolsQry, schoolsPerLocationQry, enrollmentsQry, enrollmentsPerAdmDepQry, enrollmentsPerSchoolLevelQry].map((qry) => {
         return sqlQuery(qry.toString());
     });
 
-- 
GitLab