From 8d8d390e2d2a5277ea6efcbe4cc5a56c8c3923b8 Mon Sep 17 00:00:00 2001
From: Victor Picussa <vic_picussa2@hotmail.com>
Date: Thu, 7 May 2020 17:45:04 -0300
Subject: [PATCH] Added CINE dimension

---
 src/libs/convert/cineDetailed.js | 199 +++++++++++++++++++++++++++++++
 src/libs/convert/cineGeral.js    |  48 ++++++++
 src/libs/convert/cineSpecific.js |  99 +++++++++++++++
 src/libs/middlewares/id2str.js   |  15 ++-
 src/libs/routes/courseCount.js   |  49 ++++++++
 5 files changed, 408 insertions(+), 2 deletions(-)
 create mode 100644 src/libs/convert/cineDetailed.js
 create mode 100644 src/libs/convert/cineGeral.js
 create mode 100644 src/libs/convert/cineSpecific.js

diff --git a/src/libs/convert/cineDetailed.js b/src/libs/convert/cineDetailed.js
new file mode 100644
index 00000000..e1211704
--- /dev/null
+++ b/src/libs/convert/cineDetailed.js
@@ -0,0 +1,199 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of simcaq-node.
+
+simcaq-node is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+simcaq-node is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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 cineDetailed(id) {
+	switch (id) {
+		case 11: 
+        return 'Programas básicos';                                              
+        case 111: 
+        return 'Ciência da educação';                                            
+        case 112: 
+        return 'Formação de professores de educação infantil';
+        case 113: 
+        return 'Formação de professores sem áreas específicas';                  
+        case 114: 
+        return 'Formação de professores em áreas específicas (exceto Letras)';   
+        case 115: 
+        return 'Formação de professores de letras';                              
+        case 188: 
+        return 'Programas interdisciplinares abrangendo educação';               
+        case 211: 
+        return 'Produção audiovisual, de mídia e cultural';                      
+        case 212: 
+        return 'Moda, design de interiores e desenho industrial';                
+        case 213: 
+        return 'Belas artes';                                                    
+        case 214: 
+        return 'Artesanato';                                                     
+        case 215: 
+        return 'Música e artes cênicas';                                         
+        case 221: 
+        return 'Religião e teologia';                                            
+        case 222: 
+        return 'História e arqueologia';                                         
+        case 223: 
+        return 'Filosofia e ética';                                              
+        case 231: 
+        return 'Letras';                                                         
+        case 288: 
+        return 'Programas interdisciplinares abrangendo artes e humanidades';    
+        case 311: 
+        return 'Economia';                                                       
+        case 312: 
+        return 'Ciências sociais e políticas';                                   
+        case 313: 
+        return 'Psicologia';                                                     
+        case 321: 
+        return 'Jornalismo e reportagem';                                        
+        case 322: 
+        return 'Biblioteconomia, informação e estudos arquivísticos';            
+        case 388: 
+        return 'Programas interdisciplinares abrangendo ciências sociais, jornalismo e informação';                                               
+        case 411: 
+        return 'Contabilidade e tributação';                                     
+        case 412: 
+        return 'Finanças, bancos e seguros';                                     
+        case 413: 
+        return 'Gestão e administração';                                         
+        case 414: 
+        return 'Marketing e propaganda';                                         
+        case 415: 
+        return 'Secretariado e trabalhos de escritório';                         
+        case 416: 
+        return 'Gestão comercial';                                               
+        case 421: 
+        return 'Direito';                                                        
+        case 488: 
+        return 'Programas interdisciplinares abrangendo negócios, administração e direito';                                                       
+        case 511: 
+        return 'Biologia';                                                       
+        case 512: 
+        return 'Bioquímica e biotecnologia';                                     
+        case 521: 
+        return 'Ciências ambientais';                                            
+        case 531: 
+        return 'Química';                                                        
+        case 532: 
+        return 'Ciências da terra';                                              
+        case 533: 
+        return 'Física';                                                         
+        case 541: 
+        return 'Matemática';                                                     
+        case 542: 
+        return 'Estatística';                                                    
+        case 588: 
+        return 'Programas interdisciplinares abrangendo ciências naturais, matemática e estatística';                                             
+        case 612: 
+        return 'Infraestrutura e gestão de TIC';                                 
+        case 613: 
+        return 'Produção de software';                                           
+        case 614: 
+        return 'Ciência da computação';                                          
+        case 615: 
+        return 'Gestão e desenvolvimento de sistemas de informação';             
+        case 616: 
+        return 'Desenvolvimento de sistemas que integram software e hardware';   
+        case 688: 
+        return 'Programas interdisciplinares abrangendo computação e Tecnologias da Informação e Comunicação (TIC)';                              
+        case 710: 
+        return 'Engenharia e profissões correlatas sem definição precisa';       
+        case 711: 
+        return 'Engenharia química e de processos';                              
+        case 712: 
+        return 'Tecnologia de proteção ambiental';                               
+        case 713: 
+        return 'Eletricidade e energia';                                         
+        case 714: 
+        return 'Eletrônica e automação';                                         
+        case 715: 
+        return 'Engenharia mecânica e metalurgia';                               
+        case 716: 
+        return 'Veículos a motor, construção naval, aeronáutica, ferroviária e metroviária';                                                      
+        case 721: 
+        return 'Processamento de alimentos';                                     
+        case 722: 
+        return 'Materiais';                                                      
+        case 723: 
+        return 'Têxteis (vestuário, calçados e couro)';                          
+        case 724: 
+        return 'Mineração e extração';                                           
+        case 725: 
+        return 'Produção e processos de fabricação';                             
+        case 731: 
+        return 'Arquitetura e planejamento urbano';                              
+        case 732: 
+        return 'Engenharia civil e construção';                                  
+        case 788: 
+        return 'Programas interdisciplinares abrangendo engenharia, produção e construção';                                                       
+        case 811: 
+        return 'Produção agrícola, agropecuária e zootecnia';                    
+        case 812: 
+        return 'Horticultura';                                                   
+        case 821: 
+        return 'Silvicultura';                                                   
+        case 831: 
+        return 'Pesca';                                                          
+        case 841: 
+        return 'Veterinária';                                                    
+        case 888: 
+        return 'Programas interdisciplinares abrangendo agricultura, silvicultura, pesca e veterinária';                                          
+        case 911: 
+        return 'Odontologia';                                                    
+        case 912: 
+        return 'Medicina';                                                       
+        case 913: 
+        return 'Enfermagem';                                                     
+        case 914: 
+        return 'Tecnologia de diagnóstico e tratamento médico';                  
+        case 915: 
+        return 'Promoção, prevenção, terapia e reabilitação';                    
+        case 916: 
+        return 'Farmácia';                                                       
+        case 917: 
+        return 'Medicina e terapia tradicional e complementar';                  
+        case 918: 
+        return 'Saúde pública e saúde coletiva';                                 
+        case 921: 
+        return 'Assistência a idosos e a deficientes';                           
+        case 923: 
+        return 'Serviço social';                                                 
+        case 988: 
+        return 'Programas interdisciplinares abrangendo saúde e bem-estar';      
+        case 1011: 
+        return 'Serviços domésticos';                                            
+        case 1012: 
+        return 'Serviços de beleza';                                             
+        case 1013: 
+        return 'Serviços de alimentação';                                        
+        case 1014: 
+        return 'Esportes e lazer';                                               
+        case 1015: 
+        return 'Turismo e hotelaria';                                            
+        case 1022: 
+        return 'Saúde e segurança no trabalho';                                  
+        case 1031: 
+        return 'Setor militar e de defesa';                                      
+        case 1032: 
+        return 'Proteção de pessoas e de propriedades';                          
+        case 1041: 
+        return 'Serviços de transporte';
+        default:
+        return 'Não classificada';
+	}
+};
\ No newline at end of file
diff --git a/src/libs/convert/cineGeral.js b/src/libs/convert/cineGeral.js
new file mode 100644
index 00000000..4f38e88a
--- /dev/null
+++ b/src/libs/convert/cineGeral.js
@@ -0,0 +1,48 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of simcaq-node.
+
+simcaq-node is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+simcaq-node is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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 cineGeral(id) {
+    switch (id) {
+        case 0:
+        return 'Programas básicos';
+        case 1:
+        return 'Educação';
+        case 2:
+        return 'Artes e humanidades';
+        case 3:
+        return 'Ciências sociais, jornalismo e informação';
+        case 4:
+        return 'Negócios, administração e direito';
+        case 5:
+        return 'Ciências naturais, matemática e estatística';
+        case 6:
+        return 'Computação e Tecnologias da Informação e Comunicação (TIC)';
+        case 7:
+        return 'Engenharia, produção e construção';
+        case 8:
+        return 'Agricultura, silvicultura, pesca e veterinária';
+        case 9:
+        return 'Saúde e bem-estar';
+        case 10:
+        return 'Serviços';
+        default:
+        return 'Não classificada';
+    }
+};
diff --git a/src/libs/convert/cineSpecific.js b/src/libs/convert/cineSpecific.js
new file mode 100644
index 00000000..8c900c35
--- /dev/null
+++ b/src/libs/convert/cineSpecific.js
@@ -0,0 +1,99 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of simcaq-node.
+
+simcaq-node is free software:
+return 'you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+simcaq-node is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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 cineSpecific(id) {
+    switch (id) {
+        case 1:
+        return 'Programas básicos';                                            
+        case 11:
+        return 'Educação';                                                      
+        case 18:
+        return 'Programas interdisciplinares abrangendo educação';              
+        case 21:
+        return 'Artes';                                                         
+        case 22:
+        return 'Humanidades (exceto línguas)';                                  
+        case 23:
+        return 'Línguas';                                                       
+        case 28:
+        return 'Programas interdisciplinares abrangendo artes e humanidades';   
+        case 31:
+        return 'Ciências sociais e comportamentais';                            
+        case 32:
+        return 'Jornalismo e informação';                                       
+        case 38:
+        return 'Programas interdisciplinares abrangendo ciências sociais, jornalismo e informação';                                              
+        case 41:
+        return 'Negócios e administração';                                      
+        case 42:
+        return 'Direito';                                                       
+        case 48:
+        return 'Programas interdisciplinares abrangendo negócios, administração e direito';                                                      
+        case 51:
+        return 'Ciências biológicas e correlatas';                              
+        case 52:
+        return 'Meio ambiente';                                                 
+        case 53:
+        return 'Ciências físicas';                                              
+        case 54:
+        return 'Matemática e estatística';                                      
+        case 58:
+        return 'Programas interdisciplinares abrangendo ciências naturais, matemática e estatística';                                            
+        case 61:
+        return 'Computação e Tecnologias da Informação e Comunicação (TIC)';    
+        case 68:
+        return 'Programas interdisciplinares abrangendo computação e Tecnologias da Informação e Comunicação (TIC)';                             
+        case 71:
+        return 'Engenharia e profissões correlatas';                            
+        case 72:
+        return 'Produção e processamento';                                      
+        case 73:
+        return 'Arquitetura e construção';                                      
+        case 78:
+        return 'Programas interdisciplinares abrangendo engenharia, produção e construção';                                                      
+        case 81:
+        return 'Agricultura';                                                   
+        case 82:
+        return 'Silvicultura';                                                 
+        case 83:
+        return 'Pesca';                                                         
+        case 84:
+        return 'Veterinária';                                                   
+        case 88:
+        return 'Programas interdisciplinares abrangendo agricultura, silvicultura, pesca e veterinária';                                         
+        case 91:
+        return 'Saúde';                                                         
+        case 92:
+        return 'Bem-estar';                                                     
+        case 98:
+        return 'Programas interdisciplinares abrangendo saúde e bem-estar';     
+        case 101:
+        return 'Serviços pessoais';                                             
+        case 102:
+        return 'Higiene e serviços de saúde ocupacional';                       
+        case 103:
+        return 'Serviços de segurança';                                         
+        case 104:
+        return 'Serviços de transporte';
+        default:
+        return 'Não classificada';
+    }
+};
diff --git a/src/libs/middlewares/id2str.js b/src/libs/middlewares/id2str.js
index 327ce2a4..78fd170d 100644
--- a/src/libs/middlewares/id2str.js
+++ b/src/libs/middlewares/id2str.js
@@ -61,6 +61,9 @@ const academicOrganization = require(`${libs}/convert/academicOrganization`);
 const ocdeSpecific = require(`${libs}/convert/ocdeSpecific`);
 const ocdeGeral = require(`${libs}/convert/ocdeGeral`);
 const ocdeDetailed = require(`${libs}/convert/ocdeDetailed`);
+const cineSpecific = require(`${libs}/convert/cineSpecific`);
+const cineGeral = require(`${libs}/convert/cineGeral`);
+const cineDetailed = require(`${libs}/convert/cineDetailed`);
 const academicLevel = require(`${libs}/convert/academicLevel`);
 const upperEducationMod = require(`${libs}/convert/upperEducationMod`);
 const studentDeficiency = require(`${libs}/convert/studentDeficiency`);
@@ -80,6 +83,7 @@ const genderIES = require(`${libs}/convert/genderIES`);
 const deficiency = require(`${libs}/convert/studentDeficiency`);
 const govermentAgreement = require(`${libs}/convert/govermentAgreement`);
 const arrangement = require(`${libs}/convert/arrangement`);
+const nightTime = require(`${libs}/convert/nightTime`);
 
 const ids = {
     gender_id: gender,
@@ -129,13 +133,16 @@ const ids = {
     ocde_specific_id: ocdeSpecific,
     ocde_geral_id: ocdeGeral,
     ocde_detailed_id: ocdeDetailed,
+    cine_specific_id: cineSpecific,
+    cine_geral_id: cineGeral,
+    cine_detailed_id: cineDetailed,
     academic_level_id: academicLevel,
     upper_education_mod_id: upperEducationMod,
     student_deficiency_id: studentDeficiency,
     school_type_id: schoolType,
     upper_turn_id: upperTurn,
     is_free_id: booleanVariable,
-    night_time_id: booleanVariable,
+    night_time_id: nightTime,
     capital_id: booleanVariable,
     ethnic_group_ies_id: ethnicGroupIES,
     teacher_situation_id: teacherSituation,
@@ -231,6 +238,9 @@ module.exports = {
     ocdeSpecific,
     ocdeGeral,
     ocdeDetailed,
+    cineSpecific,
+    cineGeral,
+    cineDetailed,
     academicLevel,
     upperEducationMod,
     studentDeficiency,
@@ -251,5 +261,6 @@ module.exports = {
     deficiency,
     transport,
     govermentAgreement,
-    arrangement
+    arrangement,
+    nightTime
 };
diff --git a/src/libs/routes/courseCount.js b/src/libs/routes/courseCount.js
index 15cb9a16..53b33ede 100644
--- a/src/libs/routes/courseCount.js
+++ b/src/libs/routes/courseCount.js
@@ -127,6 +127,55 @@ courseCountApp.get('/ocde_detailed', (req, res, next) => {
     next();
 }, response('ocde_detailed'));
 
+courseCountApp.get('/cine_geral', (req, res, next) => {
+    req.result = [];
+    for(let i = 0; i <= 10; ++i) {
+        req.result.push({
+            id: i,
+            name: id2str.cineGeral(i)
+        });
+    };
+    next();
+}, response('cine_geral'));
+
+courseCountApp.get('/cine_specific', (req, res, next) => {
+    req.result = [];
+    const defaultCase = null;
+    for(let i = 1; i <= 104; ++i) {
+        let obj = {
+            id: i,
+            name: id2str.cineSpecific(i)
+        };
+        if (obj.name !== id2str.cineSpecific(defaultCase)){
+            req.result.push(obj);
+        }
+    };
+    req.result.push({
+        id: defaultCase,
+        name: id2str.cineSpecific(defaultCase)
+    });
+    next();
+}, response('cine_specific'));
+
+courseCountApp.get('/cine_detailed', (req, res, next) => {
+    req.result = [];
+    const defaultCase = null;
+    for(let i = 11; i <= 1041; ++i) {
+        let obj = {
+            id: i,
+            name: id2str.cineDetailed(i)
+        };
+        if (obj.name !== id2str.cineDetailed(defaultCase)){
+            req.result.push(obj);
+        }
+    };
+    req.result.push({
+        id: defaultCase,
+        name: id2str.cineDetailed(defaultCase)
+    });
+    next();
+}, response('cine_detailed'));
+
 courseCountApp.get('/academic_level', (req, res, next) => {
     req.result = [];
     for(let i = 1; i <= 4; ++i) {
-- 
GitLab