diff --git a/.gitignore b/.gitignore index 979717eb93b624b88c6749fccd981b0ccb7b2e8d..dd07fa6dbeaa86ae86247fb62fcb81cdcb47e33e 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ build/* config.json docs/ +.vscode/ \ No newline at end of file diff --git a/package.json b/package.json index 8a8785c3d4bd116589ec65d1fd8c5914a93db162..e53c9e9a959ee0fb7a0f50eb53525caa53d6c791 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "debug": "~2.3.x", "dirty-chai": "^1.2.2", "express": "^4.13.0", - "faker": "^3.1.0", "forever": "^0.15.2", "js2xmlparser": "^2.0.2", "jwt-simple": "^0.5.0", diff --git a/src/libs/convert/admDependencyPriv.js b/src/libs/convert/admDependencyPriv.js new file mode 100644 index 0000000000000000000000000000000000000000..62afaa8354d2ebabe30826e66aceeb2a8c036790 --- /dev/null +++ b/src/libs/convert/admDependencyPriv.js @@ -0,0 +1,18 @@ +module.exports = function admDependencyPriv(id) { + switch (id) { + case 1: + return 'Federal'; + case 2: + return 'Estadual'; + case 3: + return 'Municipal'; + case 4: + return 'Privada conveniada'; + case 5: + return 'Privada não conveniada sem fins lucrativos'; + case 6: + return 'Privada não conveniada com fins lucrativos'; + default: + return 'Não classificada'; + } +}; diff --git a/src/libs/convert/citySize.js b/src/libs/convert/citySize.js index 3f1c0ebdefb3499c3f6642287b7d4b6590de332a..819eb150e8a91e9546cf6935ce7b000b63242789 100644 --- a/src/libs/convert/citySize.js +++ b/src/libs/convert/citySize.js @@ -15,6 +15,6 @@ module.exports = function citySize(id) { case 7: return 'mais que 500000'; default: - return 'Não classificado'; + return 'Não classificada'; } }; diff --git a/src/libs/convert/educationLevelMod.js b/src/libs/convert/educationLevelMod.js index 4ee4b37674e130bfad9d0cf3e0c0e587075e06f5..e334e50bcff1665d2c90d2d8b504930a1019e719 100644 --- a/src/libs/convert/educationLevelMod.js +++ b/src/libs/convert/educationLevelMod.js @@ -23,6 +23,6 @@ module.exports = function educationLevelMod(id) { case 11: return 'Educação Profissional'; default: - return 'Não classificado'; + return 'Não classificada'; } }; diff --git a/src/libs/convert/educationLevelShort.js b/src/libs/convert/educationLevelShort.js index 3d543ee98690179952ab97b3b9a9ad6056741a3f..ee97e956453c30af7ae7d37d60a6e2708b5dab2c 100644 --- a/src/libs/convert/educationLevelShort.js +++ b/src/libs/convert/educationLevelShort.js @@ -15,6 +15,6 @@ module.exports = function educationLevelShort(id) { case 7: return 'EE exclusiva'; default: - return 'Não classificado'; + return 'Não classificada'; } }; diff --git a/src/libs/convert/idhmLevel.js b/src/libs/convert/idhmLevel.js index 310e9bf454838029d56058f83ad9f34142cceae7..c9f1845c6147e4f59bbbcf7aaecd5934ac5c8017 100644 --- a/src/libs/convert/idhmLevel.js +++ b/src/libs/convert/idhmLevel.js @@ -11,6 +11,6 @@ module.exports = function idhmLevel(id) { case 5: return 'Muito Alto'; default: - return 'Não classificado'; + return 'Não classificada'; } }; diff --git a/src/libs/convert/incomeLevel.js b/src/libs/convert/incomeLevel.js index 8d3677ef757a7827de0cf76a0a884e1128f2de49..c39106843027d91d628ec6bdda664507e660aae8 100644 --- a/src/libs/convert/incomeLevel.js +++ b/src/libs/convert/incomeLevel.js @@ -11,6 +11,6 @@ module.exports = function citySize(id) { case 5: return '5º quintil – 20% maiores'; default: - return 'Não classificado'; + return 'Não classificada'; } }; diff --git a/src/libs/convert/schoolYear.js b/src/libs/convert/schoolYear.js index 485364c86fef34df51eeaf050870d4e2e38f0202..f6b677ccd7c9ac39b8439504b0495e5d0e6dcbf0 100644 --- a/src/libs/convert/schoolYear.js +++ b/src/libs/convert/schoolYear.js @@ -49,6 +49,6 @@ module.exports = function schoolYear(id) { case 71: return 'Educação Profissional'; default: - return 'Não classificado'; + return 'Não classificada'; } }; diff --git a/src/libs/middlewares/id2str.js b/src/libs/middlewares/id2str.js index c1f4df1448db01b0d139060881ce354abad143a7..99c03e2d5a75c4a52f6ededc93c3d2e6904719df 100644 --- a/src/libs/middlewares/id2str.js +++ b/src/libs/middlewares/id2str.js @@ -3,6 +3,7 @@ const gender = require(`${libs}/convert/gender`); const period = require(`${libs}/convert/period`); const schoolYear = require(`${libs}/convert/schoolYear`); const admDependency = require(`${libs}/convert/admDependency`); +const admDependencyPriv = require(`${libs}/convert/admDependencyPriv`); const location = require(`${libs}/convert/location`); const ruralLocation = require(`${libs}/convert/ruralLocation`); const ethnicGroup = require(`${libs}/convert/ethnicGroup`); @@ -25,7 +26,7 @@ const ids = { education_level_mod_id: educationLevelMod, education_level_short_id: educationLevelShort, adm_dependency_id: admDependency, - adm_dependency_detailed_id: admDependency, + adm_dependency_detailed_id: admDependencyPriv, location_id: location, rural_location_id: ruralLocation, ethnic_group_id: ethnicGroup, diff --git a/src/libs/routes/class.js b/src/libs/routes/class.js index 382121b5f5f3de1cb47c80b6abc75297846beebc..8dde3a491f2027ea86f97d960686e8fb07c5b186 100644 --- a/src/libs/routes/class.js +++ b/src/libs/routes/class.js @@ -26,6 +26,12 @@ classApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +classApp.get('/years', (req, res, next) => { + req.sql.from('turma') + .field('DISTINCT turma.ano_censo', 'year'); + next(); +}, query, response('years')); + classApp.get('/location', (req, res, next) => { req.sql = squel.select() .field('id') @@ -57,7 +63,7 @@ classApp.get('/adm_dependency', (req, res, next) => { }, query, response('adm_dependency')); classApp.get('/adm_dependency_detailed', (req, res, next) => { - req.sql.from('dependencia_adm') + req.sql.from('dependencia_adm_priv') .field('id', 'id') .field('nome', 'name'); next(); @@ -91,7 +97,7 @@ classApp.get('/education_level_mod', (req, res, next) => { classApp.get('/education_level_short', (req, res, next) => { req.result = [ - {id: null, name: 'Não Classificado'}, + {id: null, name: 'Não classificada'}, {id: 1, name: 'Creche'}, {id: 2, name: 'Pré-Escola'}, {id: 3, name: 'Ensino Fundamental - anos iniciais'}, diff --git a/src/libs/routes/classroom.js b/src/libs/routes/classroom.js index 7a4f3ce278d1136a47dc08d642a47f56ba399880..3658a587167c24cc3a3afcc37e0dde4b4808a2ba 100644 --- a/src/libs/routes/classroom.js +++ b/src/libs/routes/classroom.js @@ -27,6 +27,12 @@ classroomApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +classroomApp.get('/years', (req, res, next) => { + req.sql.from('escola') + .field('DISTINCT escola.ano_censo', 'year'); + next(); +}, query, response('years')); + classroomApp.get('/adm_dependency', (req, res, next) => { req.sql.from('dependencia_adm') .field('id') diff --git a/src/libs/routes/enrollment.js b/src/libs/routes/enrollment.js index b7dc9b170db18b294fcdb222d4f9f24a88980e25..a8523ba967de2296e86297e5bb52500eae2cc63d 100644 --- a/src/libs/routes/enrollment.js +++ b/src/libs/routes/enrollment.js @@ -27,6 +27,12 @@ enrollmentApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +enrollmentApp.get('/years', (req, res, next) => { + req.sql.from('matricula') + .field('DISTINCT matricula.ano_censo', 'year'); + next(); +}, query, response('years')); + enrollmentApp.get('/location', (req, res, next) => { req.sql = squel.select() .field('id') @@ -74,7 +80,7 @@ enrollmentApp.get('/education_level_mod', (req, res, next) => { enrollmentApp.get('/education_level_short', (req, res, next) => { req.result = [ - {id: null, name: 'Não Classificado'}, + {id: null, name: 'Não classificada'}, {id: 1, name: 'Creche'}, {id: 2, name: 'Pré-Escola'}, {id: 3, name: 'Ensino Fundamental - anos iniciais'}, @@ -96,7 +102,7 @@ enrollmentApp.get('/adm_dependency', (req, res, next) => { }, query, response('adm_dependency')); enrollmentApp.get('/adm_dependency_detailed', (req, res, next) => { - req.sql.from('dependencia_adm') + req.sql.from('dependencia_adm_priv') .field('id', 'id') .field('nome', 'name'); next(); diff --git a/src/libs/routes/idhm.js b/src/libs/routes/idhm.js index ca88ba56e5807614104e08c3dca23fc7632649cf..e16c3613d3ac1aa62429d0f27ac650f3db3d16cc 100644 --- a/src/libs/routes/idhm.js +++ b/src/libs/routes/idhm.js @@ -41,9 +41,27 @@ idhmApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +idhmApp.get('/years', (req, res, next) => { + req.sql.from('adh_idh') + .field('DISTINCT adh_idh.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + req.oldResult = req.result; + + req.sql = squel.select(); + + req.sql.from('adh_idh_uf') + .field('DISTINCT adh_idh_uf.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + let result = Object.assign(req.oldResult, req.result); + req.result = result; + next(); +}, response('years')); + idhmApp.get('/IDHM_level', (req, res, next) => { req.result = [ - {id: null, name: 'Não Classificado'}, + {id: null, name: 'Não classificada'}, {id: 1, name: 'Muito Baixa'}, {id: 2, name: 'Baixo'}, {id: 3, name: 'Médio'}, diff --git a/src/libs/routes/idhme.js b/src/libs/routes/idhme.js index d762c95d7b2c6eb59478b2c49af54d4b712957c0..2a68bc9aedf20edaa01f7974dc6c8fd57e1517d7 100644 --- a/src/libs/routes/idhme.js +++ b/src/libs/routes/idhme.js @@ -39,6 +39,24 @@ idhmeApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +idhmeApp.get('/years', (req, res, next) => { + req.sql.from('adh_idh') + .field('DISTINCT adh_idh.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + req.oldResult = req.result; + + req.sql = squel.select(); + + req.sql.from('adh_idh_uf') + .field('DISTINCT adh_idh_uf.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + let result = Object.assign(req.oldResult, req.result); + req.result = result; + next(); +}, response('years')); + rqf.addField({ name: 'filter', field: false, diff --git a/src/libs/routes/idhml.js b/src/libs/routes/idhml.js index 81b920cdaefd83a7ab0a72f438c7d022f311c2e1..5ba3e12b704a0eb3ac3ae7c5119dcdf0093db21d 100644 --- a/src/libs/routes/idhml.js +++ b/src/libs/routes/idhml.js @@ -39,6 +39,24 @@ idhmlApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +idhmlApp.get('/years', (req, res, next) => { + req.sql.from('adh_idh') + .field('DISTINCT adh_idh.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + req.oldResult = req.result; + + req.sql = squel.select(); + + req.sql.from('adh_idh_uf') + .field('DISTINCT adh_idh_uf.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + let result = Object.assign(req.oldResult, req.result); + req.result = result; + next(); +}, response('years')); + rqf.addField({ name: 'filter', field: false, diff --git a/src/libs/routes/idhmr.js b/src/libs/routes/idhmr.js index 42b31c3c2541dfa7582fa8ee037289158ea90250..c8a0cba078bfc420973438f230209534d495f715 100644 --- a/src/libs/routes/idhmr.js +++ b/src/libs/routes/idhmr.js @@ -41,6 +41,24 @@ idhmrApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +idhmrApp.get('/years', (req, res, next) => { + req.sql.from('adh_idh') + .field('DISTINCT adh_idh.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + req.oldResult = req.result; + + req.sql = squel.select(); + + req.sql.from('adh_idh_uf') + .field('DISTINCT adh_idh_uf.ano_censo', 'year'); + next(); +}, query, (req, res, next) => { + let result = Object.assign(req.oldResult, req.result); + req.result = result; + next(); +}, response('years')); + rqf.addField({ name: 'filter', field: false, diff --git a/src/libs/routes/pibpercapita.js b/src/libs/routes/pibpercapita.js index 9195806ca1f26ac696162d48d78053d5c66fb326..aff7a7dfafb757815e4636c042d6b7e7bf8a8761 100644 --- a/src/libs/routes/pibpercapita.js +++ b/src/libs/routes/pibpercapita.js @@ -25,6 +25,12 @@ pibpercapitaApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +pibpercapitaApp.get('/years', (req, res, next) => { + req.sql.from('ibge_pib'). + field('DISTINCT ibge_pib.ano_censo', 'year'); + next(); +}, query, response('years')); + pibpercapitaApp.get('/income_level', (req, res, next) => { req.result = [ {id: 1, name: "1º quintil – 20% menores"}, diff --git a/src/libs/routes/population.js b/src/libs/routes/population.js index f7777c173d7e668f55eb79c3ec9b1a6b7055643f..3d05c3d0d06fd1630bdcf86df75ec4fba05eaa01 100644 --- a/src/libs/routes/population.js +++ b/src/libs/routes/population.js @@ -25,6 +25,12 @@ populationApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +populationApp.get('/years', (req, res, next) => { + req.sql.from('ibge_populacao'). + field('DISTINCT ibge_populacao.ano_censo', 'year'); + next(); +}, query, response('years')); + populationApp.get('/city_size', (req, res, next) => { req.result = [ {id: 1, name: "até 5000"}, diff --git a/src/libs/routes/school.js b/src/libs/routes/school.js index f963e23d2e60977209b46b507e980e0febf93e38..fce424982290c9fa7b5847d6dae8c0937f9c7e2d 100644 --- a/src/libs/routes/school.js +++ b/src/libs/routes/school.js @@ -25,6 +25,12 @@ schoolApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +schoolApp.get('/years', (req, res, next) => { + req.sql.from('escola'). + field('DISTINCT escola.ano_censo', 'year'); + next(); +}, query, response('years')); + schoolApp.get('/location', (req, res, next) => { req.result = [ {id: 1, name: 'Urbana'}, @@ -54,7 +60,7 @@ schoolApp.get('/adm_dependency', (req, res, next) => { }, query, response('adm_dependency')); schoolApp.get('/adm_dependency_detailed', (req, res, next) => { - req.sql.from('dependencia_adm') + req.sql.from('dependencia_adm_priv') .field('id', 'id') .field('nome', 'name'); next(); @@ -488,7 +494,7 @@ rqfCount.addField({ } }).addValue({ name: 'adm_dependency_detailed', - table: 'dependencia_adm', + table: 'dependencia_adm_priv', tableField: 'nome', resultField: 'adm_dependency_detailed_name', where: { diff --git a/src/libs/routes/teacher.js b/src/libs/routes/teacher.js index 29fdb4db8b171894cf15b6049afa34a0913eb5d0..294417dd1af605ae7a17a64d504269209121acd1 100644 --- a/src/libs/routes/teacher.js +++ b/src/libs/routes/teacher.js @@ -26,6 +26,12 @@ teacherApp.get('/year_range', (req, res, next) => { next(); }, query, response('range')); +teacherApp.get('/years', (req, res, next) => { + req.sql.from('docente'). + field('DISTINCT docente.ano_censo', 'year'); + next(); +}, query, response('years')); + teacherApp.get('/adm_dependency_detailed', (req, res, next) => { req.sql.from('dependencia_adm') .field('id', 'id') @@ -50,7 +56,7 @@ teacherApp.get('/education_level_mod', (req, res, next) => { teacherApp.get('/education_level_short', (req, res, next) => { req.result = [ - {id: null, name: 'Não Classificado'}, + {id: null, name: 'Não classificada'}, {id: 1, name: 'Creche'}, {id: 2, name: 'Pré-Escola'}, {id: 3, name: 'Ensino Fundamental - anos iniciais'}, diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js index 4e4dd72f2cf3ef2dd854f7ccaa4dacf9a642d9d2..0d04dfd0f799bbda44eb0dfccc5d9f5ea42f7fcd 100644 --- a/src/libs/routes/user.js +++ b/src/libs/routes/user.js @@ -12,6 +12,8 @@ const User = require(`${libs}/models/user`); const jwt = require('jwt-simple'); +const response = require(`${libs}/middlewares/response`); + const required_fields = ["email", "password", "name", "cpf", "schooling", "segment", "role", "institution_name", "state", "city"]; @@ -20,6 +22,51 @@ function emailSyntax(email) { return regex.test(email); } +userApp.get('/schooling', (req, res, next) => { + req.result = [ + 'Não estudou', + 'Ensino Fundamental Incompleto', + 'Ensino Fundamental Completo', + 'Ensino Médio', + 'Graduação', + 'Mestrado', + 'Doutorado' + ]; + next(); +}, response('schooling')); + +userApp.get('/segment', (req, res, next) => { + req.result = [ + 'Gestores e equipe gestora das secretarias e ministério da Educação', + 'Gestores dos órgãos de planejamento e finanças (das três esferas de governo)', + 'Agentes do poder legislativo', + 'Agentes dos conselhos de educação', + 'Profissionais da educação', + 'Sindicato', + 'Sociedade civil interessada no financiamento da Educação Básica de qualidade', + 'Comunidade acadêmica', + 'Imprensa', + 'Outro [citar segmento]' + ]; + next(); +}, response('segment')); + +userApp.get('/role', (req, res, next) => { + req.result = [ + {"Gestores e equipe gestora das secretarias e ministério da Educação" : ["Dirigente municipal, estadual e federal", "Secretário do MEC", "Servidor da área de planejamento educacional", "Membro de associação de gestores (Ex. Undime, Consed, etc)", "Outro [citar função]"]}, + {"Gestores dos órgãos de planejamento e finanças (das três esferas de governo)" : ["Equipe gestora dos órgãos de planejamento", "Equipe gestora dos órgãos de finanças", "Outro [citar função]"]}, + {"Agentes do poder legislativo" : ["Parlamentar", "Assessor/a parlamentar", "Auditor/a dos tribunais de conta", "Conselheiro/a de tribunais de conta.", "Outro [citar função]"]}, + {"Agentes dos conselhos de educação" : ["Conselheiro/a municipais, estaduais e federais", "Conselheiro/a do Fundeb", "Outro [citar função]"]}, + {"Profissionais da educação" : ["Professor/a da Educação Básica", "Profissional da educação não-docente", "Outro [citar função]"]}, + {"Sindicato" : ["Agente de sindicatos"]}, + {"Sociedade civil interessada no financiamento da Educação Básica de qualidade" : ["Membro de fóruns educacionais", "Membro de ONGs e demais entidades sem fins lucrativos", "Estudante da educação básica e membro de entidades estudantis", "Pais e membros de entidades de pais", "Outro [citar função]"]}, + {"Comunidade acadêmica" : ["Pesquisador/a", "Estudantes de graduação e pós-graduação", "Representantes de entidades de pesquisa (Ex.: ANPED, ANPAE e FINEDUCA)", "Outro [citar função]"]}, + {"Imprensa" : ["Jornalista", "Outro [citar função]"]}, + {"Outro [citar segmento]" : []} + ] + next(); +}, response('role')); + userApp.post('/', (req, res, next) => { if(req.body.email){ if(!emailSyntax(req.body.email)){