From 9d6c34c1d9e612d6c94e6210304ebf046cee8478 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Tue, 3 Jul 2018 10:35:17 -0300
Subject: [PATCH] Begin school infra

---
 src/libs/routes/school_infrastructure.js | 153 ++++++++++++++++-------
 1 file changed, 107 insertions(+), 46 deletions(-)

diff --git a/src/libs/routes/school_infrastructure.js b/src/libs/routes/school_infrastructure.js
index 290bf1a0..33d73165 100644
--- a/src/libs/routes/school_infrastructure.js
+++ b/src/libs/routes/school_infrastructure.js
@@ -280,140 +280,193 @@ infrastructureApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
     .field('escola.ano_censo', 'year')
     .group('escola.ano_censo')
     .where('escola.situacao_de_funcionamento = 1')
+    .where('escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1')
+    .where('escola.local_func_predio_escolar = 1')
+    .where('escola.dependencia_adm_id <= 3')
     .order('escola.ano_censo');
-    req.queryIndex.allSchools = req.querySet.push(allSchools) - 1;
-
-    let schoolPlace = allSchools.clone();
-    schoolPlace.where('escola.func_predio_escolar = 1 AND escola.func_salas_empresa = 0 AND escola.func_templo_igreja = 0 AND escola.func_casa_professor = 0 AND escola.func_galpao = 0 AND escola.biblioteca = 1');
-    req.queryIndex.schoolPlace = req.querySet.push(schoolPlace) - 1;
 
     // Bibliotecas
     let allLibraries = allSchools.clone();
-    allLibraries.where('escola.func_predio_escolar = 1 AND escola.cod_localizacao = 1');
+    allLibraries.where('escola.cod_localizacao = 1');
     req.queryIndex.allLibraries = req.querySet.push(allLibraries) - 1;
 
     let haveLibraries = allLibraries.clone();
     haveLibraries.where('escola.biblioteca = 1');
     req.queryIndex.haveLibraries = req.querySet.push(haveLibraries) - 1;
 
+    let needLibraries = allLibraries.clone();
+    needLibraries.where('escola.biblioteca = 0');
+    req.queryIndex.needLibraries = req.querySet.push(needLibraries) - 1;
+
     // Bibliotecas/Sala de leitura
     let allLibrariesReadingRoom = allSchools.clone();
-    allLibrariesReadingRoom.where('escola.func_predio_escolar = 1 AND escola.cod_localizacao = 2');
+    allLibrariesReadingRoom.where('escola.cod_localizacao = 2');
     req.queryIndex.allLibrariesReadingRoom = req.querySet.push(allLibrariesReadingRoom) - 1;
 
     let haveLibrariesReadingRoom = allLibrariesReadingRoom.clone();
-    haveLibrariesReadingRoom.where('escola.sala_leitura = 1');
+    haveLibrariesReadingRoom.where('escola.biblioteca_sala_leitura = 1');
     req.queryIndex.haveLibrariesReadingRoom = req.querySet.push(haveLibrariesReadingRoom) - 1;
 
+    let needLibrariesReadingRoom = allLibrariesReadingRoom.clone();
+    needLibrariesReadingRoom.where('escola.biblioteca_sala_leitura = 0');
+    req.queryIndex.needLibrariesReadingRoom = req.querySet.push(needLibrariesReadingRoom) - 1;
+
     // Laboratório de informática
     let allInfLab = allSchools.clone();
-    allInfLab.where('escola.func_predio_escolar = 1')
-    .where('escola.reg_fund_ai = 1 OR escola.reg_fund_af = 1 OR escola.reg_medio_medio = 1 OR escola.reg_medio_integrado = 1 OR escola.reg_medio_normal = 1 OR escola.ensino_eja_fund = 1 OR escola.ensino_eja_medio = 1 OR escola.ensino_eja_prof = 1');
+    allInfLab.where('escola.reg_infantil_preescola = 1 OR escola.reg_fund_ai = 1 OR escola.reg_fund_af = 1 OR escola.reg_medio_medio = 1 OR escola.reg_medio_integrado = 1 OR escola.reg_medio_normal = 1 OR escola.ensino_eja_fund = 1 OR escola.ensino_eja_medio = 1 OR escola.ensino_eja_prof = 1');
     req.queryIndex.allInfLab = req.querySet.push(allInfLab) - 1;
 
     let haveInfLab = allInfLab.clone();
     haveInfLab.where('escola.lab_informatica = 1');
     req.queryIndex.haveInfLab = req.querySet.push(haveInfLab) - 1;
 
+    let needInfLab = allInfLab.clone();
+    needInfLab.where('escola.lab_informatica = 0');
+    req.queryIndex.needInfLab = req.querySet.push(needInfLab) - 1;
+
     // Laboratório de ciências
-    let allScienceLab = allInfLab.clone();
+    let allScienceLab = allSchools.clone();
+    allScienceLab.where('escola.reg_fund_af = 1 OR escola.reg_medio_medio = 1 OR escola.reg_medio_integrado = 1 OR escola.reg_medio_normal = 1 OR escola.ensino_eja_fund = 1 OR escola.ensino_eja_medio = 1 OR escola.ensino_eja_prof = 1');
     req.queryIndex.allScienceLab = req.querySet.push(allScienceLab) - 1;
 
     let haveScienceLab = allScienceLab.clone();
     haveScienceLab.where('escola.lab_ciencias = 1');
     req.queryIndex.haveScienceLab = req.querySet.push(haveScienceLab) - 1;
 
+    let needScienceLab = allScienceLab.clone();
+    needScienceLab.where('escola.lab_ciencias = 0');
+    req.queryIndex.needScienceLab = req.querySet.push(needScienceLab) - 1;
+
     // Parque infantil
     let allKidsPark = allSchools.clone();
-    allKidsPark.where('escola.func_predio_escolar = 1')
-    .where('escola.reg_infantil_creche = 1 OR escola.reg_infantil_preescola = 1 OR escola.reg_fund_ai = 1 OR escola.esp_infantil_creche = 1 OR escola.esp_exclusiva_creche = 1 OR escola.reg_esp_exclusiva_fund_ai = 1');
+    allKidsPark.where('escola.reg_infantil_creche = 1 OR escola.reg_infantil_preescola = 1 OR escola.reg_fund_ai = 1');
     req.queryIndex.allKidsPark = req.querySet.push(allKidsPark) - 1;
 
     let haveKidsPark = allKidsPark.clone();
     haveKidsPark.where('escola.parque_infantil = 1');
     req.queryIndex.haveKidsPark = req.querySet.push(haveKidsPark) - 1;
 
+    let needKidsPark = allKidsPark.clone();
+    needKidsPark.where('escola.parque_infantil = 0');
+    req.queryIndex.needKidsPark = req.querySet.push(needKidsPark) - 1;
+
     // Berçário
     let allCribs = allSchools.clone();
-    allCribs.where('escola.func_predio_escolar = 1')
-    .where('escola.reg_infantil_creche = 1 OR escola.esp_infantil_creche = 1');
+    allCribs.where('escola.reg_infantil_creche = 1');
     req.queryIndex.allCribs = req.querySet.push(allCribs) - 1;
 
     let haveCribs = allCribs.clone();
     haveCribs.where('escola.bercario = 1');
     req.queryIndex.haveCribs = req.querySet.push(haveCribs) - 1;
 
-    // Quadra
-    let allSportsCourt = allScienceLab.clone();
-    allSportsCourt.where('escola.cod_localizacao = 1');
+    let needCribs = allCribs.clone();
+    needCribs.where('escola.bercario = 0');
+    req.queryIndex.needCribs = req.querySet.push(needCribs) - 1;
+
+    // Quadra Coberta
+    let allSportsCourt = allSchools.clone();
+    allSportsCourt.where('escola.reg_fund_ai = 1 OR escola.reg_fund_af = 1 OR escola.reg_medio_medio = 1 OR escola.reg_medio_integrado OR escola.reg_medio_normal = 1 OR escola.ensino_eja_fund = 1 OR escola.ensino_eja_medio = 1 OR escola.ensino_eja_prof = 1');
     req.queryIndex.allSportsCourt = req.querySet.push(allSportsCourt) - 1;
 
     let haveSportsCourt = allSportsCourt.clone();
     haveSportsCourt.where('escola.quadra_esportes = 1');
     req.queryIndex.haveSportsCourt = req.querySet.push(haveSportsCourt) - 1;
 
-    // Quadra coberta
-    req.queryIndex.allCoveredSportsCourt = req.queryIndex.allSportsCourt;
+    let needSportsCourt = allSportsCourt.clone();
+    needSportsCourt.where('escola.quadra_esportes = 0');
+    req.queryIndex.needSportsCourt = req.querySet.push(needSportsCourt) - 1;
+
+    // Cobertura de quadra esportiva
+    // FIXME: possível fixme no where
+    req.queryIndex.allSportsCourtCoverage = req.queryIndex.allSportsCourt;
+
+    let haveSportsCourtCoverage = allSportsCourt.clone();
+    haveSportsCourtCoverage.where('escola.quadra_esportes_descoberta = 1');
+    req.queryIndex.haveSportsCourtCoverage = req.querySet.push(haveSportsCourtCoverage) - 1;
+
+    let needSportsCourtCoverage = allSportsCourt.clone();
+    needSportsCourtCoverage.where('escola.quadra_esportes_descoberta = 0');
 
-    let haveCoveredSportsCourt = allSportsCourt.clone();
-    haveCoveredSportsCourt.where('escola.quadra_esportes_coberta = 1');
-    req.queryIndex.haveCoveredSportsCourt = req.querySet.push(haveCoveredSportsCourt) - 1;
+    // Pátio
+    req.queryIndex.allCourtyard = req.queryIndex.allSchools;
 
-    // Quadra Descoberta
-    let allUncoveredSportsCourt = allSportsCourt.clone();
-    allUncoveredSportsCourt.where('escola.quadra_esportes_coberta = 0');
-    req.queryIndex.allUncoveredSportsCourt = req.querySet.push(allUncoveredSportsCourt) - 1;
+    let haveCourtyard = allSchools.clone();
+    haveCourtyard.where('escola.patio_coberto = 1');
+    req.queryIndex.haveCourtyard = req.querySet.push(haveCourtyard) - 1;
 
-    let haveUncoveredSportsCourt = allUncoveredSportsCourt.clone();
-    haveUncoveredSportsCourt.where('escola.quadra_esportes_descoberta = 1');
-    req.queryIndex.haveUncoveredSportsCourt = req.querySet.push(haveUncoveredSportsCourt) - 1;
+    let needCourtyard = allSchools.clone();
+    needCourtyard.where('escola.patio_descoberto = 0');
+    req.queryIndex.needCourtyard = req.querySet.push(needCourtyard) - 1;
+
+    // Cobertura do Pátio
+    // TODO:
 
     // Sala de direção
-    let allDirectorRoom = allSchools.clone();
-    allDirectorRoom.where('escola.func_predio_escolar = 1 AND escola.cod_localizacao = 1');
-    req.queryIndex.allDirectorRoom = req.querySet.push(allDirectorRoom) - 1;
+    req.queryIndex.allDirectorRoom = req.queryIndex.allLibraries;
 
-    let haveDirectorRoom = allDirectorRoom.clone();
+    let haveDirectorRoom = allLibraries.clone();
     haveDirectorRoom.where('escola.sala_diretoria = 1');
     req.queryIndex.haveDirectorRoom = req.querySet.push(haveDirectorRoom) - 1;
 
+    let needDirectorRoom = allLibraries.clone();
+    needDirectorRoom.where('escola.sala_diretoria = 0');
+    req.queryIndex.needDirectorRoom = req.querySet.push(needDirectorRoom) - 1;
+
     // Secretaria
-    let allSecretary = allSchools.clone();
-    allSecretary.where('escola.func_predio_escolar = 1');
-    req.queryIndex.allSecretary = req.querySet.push(allSecretary) - 1;
+    req.queryIndex.allSecretary = req.queryIndex.allSchools;
 
-    let haveSecretary = allSecretary.clone();
+    let haveSecretary = allSchools.clone();
     haveSecretary.where('escola.secretaria = 1');
     req.queryIndex.haveSecretary = req.querySet.push(haveSecretary) - 1;
 
+    let needSecretary = allSchools.clone();
+    needSecretary.where('escola.secretaria = 0');
+    req.queryIndex.needSecretary = req.querySet.push(needSecretary) - 1;
+
     // Sala de professores
-    req.queryIndex.allTeacherRoom = req.queryIndex.allSecretary;
+    req.queryIndex.allTeacherRoom = req.queryIndex.allSchools;
 
-    let haveTeacherRoom = allSecretary.clone();
+    let haveTeacherRoom = allSchools.clone();
     haveTeacherRoom.where('escola.sala_professor = 1');
     req.queryIndex.haveTeacherRoom = req.querySet.push(haveTeacherRoom) - 1;
 
+    let needTeacherRoom = allSchools.clone();
+    needTeacherRoom.where('escola.sala_professor = 0');
+    req.queryIndex.needTeacherRoom = req.querySet.push(needTeacherRoom) - 1;
+
     // Cozinha
-    req.queryIndex.allKitchen = req.queryIndex.allSecretary;
+    req.queryIndex.allKitchen = req.queryIndex.allSchools;
 
-    let haveKitchen = allSecretary.clone();
+    let haveKitchen = allSchools.clone();
     haveKitchen.where('escola.cozinha = 1');
     req.queryIndex.haveKitchen = req.querySet.push(haveKitchen) - 1;
 
+    let needKitchen = allSchools.clone();
+    needKitchen.where('escola.cozinha = 0');
+    req.queryIndex.needKitchen = req.querySet.push(needKitchen) - 1;
+
     // Despensa
-    req.queryIndex.allStoreroom = req.queryIndex.allSecretary;
+    req.queryIndex.allStoreroom = req.queryIndex.allSchools;
 
-    let haveStoreroom = allSecretary.clone();
+    let haveStoreroom = allSchools.clone();
     haveStoreroom.where('escola.despensa = 1');
     req.queryIndex.haveStoreroom = req.querySet.push(haveStoreroom) - 1;
 
+    let needStoreroom = allSchools.clone();
+    needStoreroom.where('escola.despensa = 0');
+    req.queryIndex.needStoreroom = req.querySet.push(needStoreroom) - 1;
+
     // Almoxarifado
-    req.queryIndex.allWarehouse = req.queryIndex.allSecretary;
+    req.queryIndex.allWarehouse = req.queryIndex.allSchools;
 
-    let haveWarehouse = allSecretary.clone();
+    let haveWarehouse = allSchools.clone();
     haveWarehouse.where('escola.almoxarifado = 1');
     req.queryIndex.haveWarehouse = req.querySet.push(haveWarehouse) - 1;
 
+    let needWarehouse = allSchools.clone();
+    needWarehouse.where('escola.almoxarifado = 1');
+    req.queryIndex.needWarehouse = req.querySet.push(needWarehouse) - 1;
+
     // Internet
     req.queryIndex.allInternet = req.queryIndex.allLibrariesReadingRoom;
 
@@ -421,6 +474,10 @@ infrastructureApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
     haveInternet.where('escola.internet = 1');
     req.queryIndex.haveInternet = req.querySet.push(haveInternet) - 1;
 
+    let needInternet = allLibrariesReadingRoom.clone();
+    needInternet.where('escola.internet = 0');
+    req.queryIndex.needInternet = req.querySet.push(needInternet) - 1;
+
     // Internet banda larga
     req.queryIndex.allBroadbandInternet = req.queryIndex.allLibraries;
 
@@ -428,6 +485,10 @@ infrastructureApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
     haveBroadbandInternet.where('escola.internet_banda_larga = 1');
     req.queryIndex.haveBroadbandInternet = req.querySet.push(haveBroadbandInternet) - 1;
 
+    let needBroadbandInternet = allLibraries.clone();
+    needBroadbandInternet.where('escola.internet_banda_larga = 0');
+    req.queryIndex.needBroadbandInternet = req.querySet.push(needBroadbandInternet) - 1;
+
     // Banheiro dentro do prédio
     req.queryIndex.allInsideBathroom = req.queryIndex.allSecretary;
 
-- 
GitLab