diff --git a/src/libs/convert/educationLevelBasic.js b/src/libs/convert/educationLevelBasic.js new file mode 100644 index 0000000000000000000000000000000000000000..d667d09d57aa5cbe0b38d36f5f9a5aaece124fd8 --- /dev/null +++ b/src/libs/convert/educationLevelBasic.js @@ -0,0 +1,16 @@ +module.exports = function educationLevelBasic(id) { + switch (id) { + case 1: + return 'Creche'; + case 2: + return 'Pré-Escola'; + case 4: + return 'Ensino Fundamental - anos iniciais'; + case 5: + return 'Ensino Fundamental - anos finais'; + case 6: + return 'Ensino Médio'; + default: + return 'Não classificada'; + } +}; diff --git a/src/libs/middlewares/id2str.js b/src/libs/middlewares/id2str.js index dc820eada0e5785fc4414a55955310dd7a3c7862..a6c4af2ed6a429baaeffc90d2a0ec220ba4eea58 100644 --- a/src/libs/middlewares/id2str.js +++ b/src/libs/middlewares/id2str.js @@ -23,12 +23,14 @@ const ageRange = require(`${libs}/convert/ageRange`); const genderPnad = require(`${libs}/convert/genderPnad`); const fifthHouseholdIncome = require(`${libs}/convert/fifthHouseholdIncome`); const extremesHouseholdIncome = require(`${libs}/convert/extremesHouseholdIncome`); +const educationLevelBasic = require(`${libs}/convert/educationLevelBasic`); const ids = { gender_id: gender, period_id: period, school_year_id: schoolYear, education_level_id: educationLevel, + education_level_basic_id: educationLevelBasic, education_level_mod_id: educationLevelMod, education_level_short_id: educationLevelShort, adm_dependency_id: admDependency, @@ -102,6 +104,7 @@ module.exports = { period, schoolYear, educationLevel, + educationLevelBasic, educationLevelMod, educationLevelShort, admDependency, diff --git a/src/libs/routes/liquidEnrollmentRatio.js b/src/libs/routes/liquidEnrollmentRatio.js index 3a2d0bc8fb5cfd7adb1cb4d05bd1638c48bf44ab..55b1f2d566b34ff2ee9bd3267378b1ee5b581b55 100644 --- a/src/libs/routes/liquidEnrollmentRatio.js +++ b/src/libs/routes/liquidEnrollmentRatio.js @@ -1,6 +1,6 @@ const express = require('express'); -const glossEnrollmentRatioApp = express.Router(); +const liquidEnrollmentRatioApp = express.Router(); const libs = `${process.cwd()}/libs`; @@ -30,11 +30,11 @@ const cache = require('apicache').options({ debug: config.debug, statusCodes: {i let rqf = new ReqQueryFields(); -glossEnrollmentRatioApp.use(cache('15 day')); +liquidEnrollmentRatioApp.use(cache('15 day')); // Complete range of the enrollments dataset. // Returns a tuple of start and ending years of the complete enrollments dataset. -glossEnrollmentRatioApp.get('/year_range', (req, res, next) => { +liquidEnrollmentRatioApp.get('/year_range', (req, res, next) => { req.sql.from('pnad') .field('DISTINCT pnad.ano_censo', 'year'); next(); @@ -61,7 +61,7 @@ glossEnrollmentRatioApp.get('/year_range', (req, res, next) => { next(); }, response('range')); -glossEnrollmentRatioApp.get('/years', (req, res, next) => { +liquidEnrollmentRatioApp.get('/years', (req, res, next) => { req.sql.from('pnad') .field('DISTINCT pnad.ano_censo', 'year'); next(); @@ -86,14 +86,14 @@ glossEnrollmentRatioApp.get('/years', (req, res, next) => { next(); }, response('years')); -glossEnrollmentRatioApp.get('/source', (req, res, next) => { +liquidEnrollmentRatioApp.get('/source', (req, res, next) => { req.sql.from('fonte') .field('fonte', 'source') .where('tabela = \'pnad\''); next(); }, query, response('source')); -glossEnrollmentRatioApp.get('/education_level_short', (req, res, next) => { +liquidEnrollmentRatioApp.get('/education_level_basic', (req, res, next) => { req.result = [ {id: null, name: 'Não classificada'}, {id: 1, name: 'Creche'}, @@ -103,9 +103,9 @@ glossEnrollmentRatioApp.get('/education_level_short', (req, res, next) => { {id: 6, name: 'Ensino Médio'} ]; next(); -}, response('education_level_short')); +}, response('education_level_basic')); -glossEnrollmentRatioApp.get('/gender', (req, res, next) => { +liquidEnrollmentRatioApp.get('/gender', (req, res, next) => { req.result = [ {id: 1, name: 'Masculino'}, {id: 2, name: 'Feminino'} @@ -113,7 +113,7 @@ glossEnrollmentRatioApp.get('/gender', (req, res, next) => { next(); }, response('gender')); -glossEnrollmentRatioApp.get('/ethnic_group', (req, res, next) => { +liquidEnrollmentRatioApp.get('/ethnic_group', (req, res, next) => { req.result = [ {id: 0, name: 'Sem declaração'}, {id: 1, name: 'Branca'}, @@ -125,7 +125,7 @@ glossEnrollmentRatioApp.get('/ethnic_group', (req, res, next) => { next(); }, response('ethnic_group')); -glossEnrollmentRatioApp.get('/location', (req, res, next) => { +liquidEnrollmentRatioApp.get('/location', (req, res, next) => { req.result = [ {id: 1, name: 'Urbana'}, {id: 2, name: 'Rural'} @@ -224,10 +224,10 @@ rqf.addField({ field: 'localizacao_id' } }).addValue({ - name: 'education_level_short', + name: 'education_level_basic', table: 'matricula', tableField: 'etapa_resumida', - resultField: 'education_level_short_id', + resultField: 'education_level_basic_id', where: { relation: '=', type: 'integer', @@ -237,48 +237,62 @@ rqf.addField({ function matchQueries(queryTotal, queryPartial) { let match = []; - queryTotal.forEach((result) => { + queryPartial.forEach((result) => { let newObj = {}; let keys = Object.keys(result); keys.forEach((key) => { newObj[key] = result[key]; }); + // console.log('NEW OBJ'); + // console.log(newObj); + // remove total let index = keys.indexOf('total'); if(index > -1) keys.splice(index, 1); + // remove education_level_basic_id + index = keys.indexOf('education_level_basic_id'); + if(index > -1) keys.splice(index, 1); + // remove education_level_basic_name + index = keys.indexOf('education_level_basic_name'); + if(index > -1) keys.splice(index, 1); let objMatch = null; - for(let i = 0; i < queryPartial.length; ++i) { - let partial = queryPartial[i]; + for(let i = 0; i < queryTotal.length; ++i) { + let total = queryTotal[i]; let foundMatch = true; for(let j = 0; j < keys.length; ++j) { let key = keys[j]; - if(partial[key] !== result[key]) { + if(total[key] !== result[key]) { foundMatch = false; break; } } if(foundMatch) { - objMatch = partial; + objMatch = total; break; } } if(objMatch) { - newObj.total = (objMatch.total / result.total) * 100; - newObj.partial = objMatch.total; - newObj.denominator = result.total + // console.log('MATCH!!!!'); + // console.log(objMatch); + newObj.total = (result.total / objMatch.total) * 100; + newObj.partial = result.total; + newObj.denominator = objMatch.total match.push(newObj); } }); - + // console.log('TAMANHOS'); + // console.log(queryTotal.length); + // console.log(queryPartial.length); + // console.log(match.length); return match; } -glossEnrollmentRatioApp.get('/', rqf.parse(),(req, res, next) => { +liquidEnrollmentRatioApp.get('/', rqf.parse(),(req, res, next) => { req.numerator = {}; req.denominator = {}; - let glossEnrollmentRatioApp = {}; + let liquidEnrollmentRatioApp = {}; log.debug(req.sql.toParam()); req.sql.from('matricula') @@ -300,13 +314,13 @@ glossEnrollmentRatioApp.get('/', rqf.parse(),(req, res, next) => { return 'matricula.faixa_etaria_31_03 = 5' } } - if ("education_level_short" in req.filter) { - if (Array.isArray(req.filter.education_level_short)) + if ("education_level_basic" in req.filter) { + if (Array.isArray(req.filter.education_level_basic)) var string_query_enrollment = ''; - for(let i = 0; i < req.filter.education_level_short.length - 1; i++) { - string_query_enrollment = string_query_enrollment + ConvertMatricula(req.filter.education_level_short[i]) + ' OR '; + for(let i = 0; i < req.filter.education_level_basic.length - 1; i++) { + string_query_enrollment = string_query_enrollment + ConvertMatricula(req.filter.education_level_basic[i]) + ' OR '; } - string_query_enrollment = string_query_enrollment + ConvertMatricula(req.filter.education_level_short[req.filter.education_level_short.length - 1]); + string_query_enrollment = string_query_enrollment + ConvertMatricula(req.filter.education_level_basic[req.filter.education_level_basic.length - 1]); req.sql.where(string_query_enrollment); } else { res.status(400); @@ -317,7 +331,7 @@ glossEnrollmentRatioApp.get('/', rqf.parse(),(req, res, next) => { } next(); -}, rqf.build(), query, (req, res, next) => { +}, rqf.build(), query, id2str.transform(), (req, res, next) => { req.numerator = req.result; req.resetSql(); log.debug(req.sql.toParam()); @@ -341,26 +355,29 @@ glossEnrollmentRatioApp.get('/', rqf.parse(),(req, res, next) => { } } - //remove education_level_short how filter and add faixa_etaria_31_03 in filter - if ("education_level_short" in req.filter) { - if (Array.isArray(req.filter.education_level_short)) + //remove education_level_basic how filter and add faixa_etaria_31_03 in filter + if ("education_level_basic" in req.filter) { + if (Array.isArray(req.filter.education_level_basic)) var string_query = ''; - for(let i = 0; i < req.filter.education_level_short.length - 1; i++) { - string_query = string_query + convertPnad(req.filter.education_level_short[i]) + ' OR '; + for(let i = 0; i < req.filter.education_level_basic.length - 1; i++) { + string_query = string_query + convertPnad(req.filter.education_level_basic[i]) + ' OR '; } - string_query = string_query + convertPnad(req.filter.education_level_short[req.filter.education_level_short.length - 1]); + string_query = string_query + convertPnad(req.filter.education_level_basic[req.filter.education_level_basic.length - 1]); req.sql.where(string_query); } else { - req.sql.where(convertPnad(req.filter.education_level_short)); + req.sql.where(convertPnad(req.filter.education_level_basic)); } next(); }, rqf.parse(), (req, res, next) => { - if ("education_level_short" in req.filter) { - delete req.filter.education_level_short; + if ("education_level_basic" in req.filter) { + delete req.filter.education_level_basic; + } + if ("education_level_basic" in req.dims) { + delete req.dims.education_level_basic; } next(); -}, rqf.build(), query, (req, res, next) => { +}, rqf.build(), query, id2str.transform(), (req, res, next) => { req.denominator = req.result; log.debug(req.numerator); log.debug(req.denominator); @@ -368,9 +385,9 @@ glossEnrollmentRatioApp.get('/', rqf.parse(),(req, res, next) => { //division to generate req.result final req.result = [] log.debug(Object.keys(req.dims)) - let school_place = matchQueries(req.denominator, req.numerator); - req.result = school_place; + let liquidEnrollment = matchQueries(req.denominator, req.numerator); + req.result = liquidEnrollment; next(); }, response('liquuidEnrollmentRatio')); -module.exports = glossEnrollmentRatioApp; +module.exports = liquidEnrollmentRatioApp;