diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a5ddfd545be90a692c88153e58daedcb58c83cf..9565b7c3410a9a65280623a83095150c844cde2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## 1.7.0 - 2018-09-20 +### Changed +- Fix return string in contract type id 1 +- Fix out of school route +- Fix pib-per-capita route +- Fix filters in infrastructure route +- Remove filters in transport route + ## 1.6.1 - 2018-08-23 # Changed - Fix return json name in transport route diff --git a/src/libs/convert/citySize.js b/src/libs/convert/citySize.js index 819eb150e8a91e9546cf6935ce7b000b63242789..3f50462b097d9340a0d7973460412a463aca7a17 100644 --- a/src/libs/convert/citySize.js +++ b/src/libs/convert/citySize.js @@ -1,7 +1,7 @@ module.exports = function citySize(id) { switch (id) { case 1: - return 'até 5000'; + return '0 - 5000'; case 2: return '5001 - 10000'; case 3: diff --git a/src/libs/convert/contractType.js b/src/libs/convert/contractType.js index 6c9167ce6e3758feb8de1d20c7a3b228be1e4f17..a20ab853531d6fde809b7f85ff197ab0a003a268 100644 --- a/src/libs/convert/contractType.js +++ b/src/libs/convert/contractType.js @@ -1,7 +1,7 @@ -module.exports = function idhmLevel(id) { +module.exports = function contractType(id) { switch (id) { case 1: - return 'Concursado/Efetivo/Estavél'; + return 'Concursado/Efetivo/Estável'; case 2: return 'Contrato temporário'; case 3: diff --git a/src/libs/routes/api.js b/src/libs/routes/api.js index 9d87348408354548ad57e9bec031bfbb71839fec..165f947ec7cedacd66008383042bcca6552712bc 100644 --- a/src/libs/routes/api.js +++ b/src/libs/routes/api.js @@ -76,6 +76,8 @@ const dailyChargeAmount = require(`${libs}/routes/dailyChargeAmount`); const cub = require(`${libs}/routes/cub`); +const classCount = require(`${libs}/routes/classCount`); + const portalMecInep = require(`${libs}/routes/portalMecInep`); @@ -119,6 +121,7 @@ api.use('/transport', transport); api.use('/cub', cub); api.use('/auxiliar', auxiliar); api.use('/verify_teacher', verifyTeacher); +api.use('/class_count', classCount); api.use('/portal_mec_inep', portalMecInep); module.exports = api; diff --git a/src/libs/routes/classCount.js b/src/libs/routes/classCount.js index d415d5a3fdf40d15a70be2a15b505adbeed79901..71b7ab36a540d3e6dff748d7840b3e5e815f0a04 100644 --- a/src/libs/routes/classCount.js +++ b/src/libs/routes/classCount.js @@ -298,27 +298,39 @@ classCountApp.get('/source', (req, res, next) => { next(); }, query, response('source')); -function mediaCalc(response) { - let obj = []; - response.forEach((result) => { - let newObj = {}; - let keys = Object.keys(result); - keys.forEach((key) => { - if(key !== "total_classes" && key !== "total_enrollment") - newObj[key] = result[key] - }) - newObj.total = result.total_enrollment / result.total_classes; - obj.push(newObj); +// Se a dimensão obrigatória do LDE (etapa de ensino) possui alguma etapa sem nenhum valor, então é criado um objeto +// com média 0.0 e é inserido no resultado. Usada para não quebrar a sequência de etapas na tabela do LDE. +function addNullFields(result) { + const firstYear = result[0].year; + var obj = result.filter(res => res.year == firstYear); + var prevFirstDimId = obj[0]; + obj.forEach((d) => { + if((d["education_level_mod_id"] > prevFirstDimId["education_level_mod_id"]) && (prevFirstDimId["education_level_mod_id"] != 10) && + (d["education_level_mod_id"] != prevFirstDimId["education_level_mod_id"] + 1)) { + let newObj = {}; + Object.keys(prevFirstDimId).forEach((key) => { + newObj[key] = prevFirstDimId[key]; + }); + newObj.education_level_mod_id = d["education_level_mod_id"] - 1; + newObj.education_level_mod_name = id2str.educationLevelMod(d["education_level_mod_id"] - 1); + newObj.average = 0.0; + result.splice(result.indexOf(prevFirstDimId) + 1, 0, newObj); + } + prevFirstDimId = d; }); - return(obj); } +// LDE classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { + // Faz a consulta do número de alunos pelas dimensões if(("education_level_mod" in req.dims) || ("education_level_mod" in req.filter)) { - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') + req.sql.field("'Brasil'", 'name') .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') .from('turma') .group('turma.ano_censo') .order('turma.ano_censo') @@ -332,75 +344,116 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { }); } }, rqf.build(), query, id2str.transform(), (req, res, next) => { - req.partial = req.result; - req.resetSql(); - req.dims = {}; - req.filter = {}; - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') - .field('turma.ano_censo', 'year') - .from('turma') - .group('turma.ano_censo') - .order('turma.ano_censo') - .where('turma.tipo_turma_id = 0 AND turma.etapas_mod_ensino_segmento_id >= 1 AND turma.etapas_mod_ensino_segmento_id <= 10'); - next(); -}, query, addMissing(rqf), id2str.transform(), (req, res, next) => { - const classCount = mediaCalc(req.partial); - const yearClassCount = mediaCalc(req.result); - req.result = classCount; - yearClassCount.forEach((result) => { - let obj = {}; - obj = result; - obj.label = "total_year_media"; - req.result.push(obj); - }) + req.partial = []; + + // Caso tenha apenas uma dimensão, o indicador possuirá uma linha de total + if((req.dims) && (req.dims.size == 1)) { + req.partial = req.result; + + // A linha de total deverá conter o valor total do ano que está no banco de dados, então usa o mesmo filtro de anos da consulta anterior + let yearFilter = {}; + if("min_year" in req.filter) + yearFilter.min_year = req.filter.min_year; + if("max_year" in req.filter) + yearFilter.max_year = req.filter.max_year; + + // Faz a consulta sem dimensões, do total do(s) ano(s) escolhido(s) + req.resetSql(); + req.dims = {}; + req.filter = yearFilter; + req.sql.field("'Brasil'", 'name') + .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') + .from('turma') + .group('turma.ano_censo') + .order('turma.ano_censo') + .where('turma.tipo_turma_id = 0 AND turma.etapas_mod_ensino_segmento_id >= 1 AND turma.etapas_mod_ensino_segmento_id <= 10'); + } + next(); +}, rqf.build(), query, addMissing(rqf), id2str.transform(), (req, res, next) => { + // Se tem apenas uma dimensão + if(req.partial.length > 0) { + const yearClassCount = req.result; + req.result = req.partial; + + // Como a linha de total deve aparecer em um caso especÃfico, ela é adicionada junto com a dimensão obrigatória + yearClassCount.forEach((result) => { + let obj = {}; + obj = result; + obj.education_level_mod_name = "Total"; + req.result.push(obj); + }) + } + // Caso tenha mais de uma dimensão, retorna a consulta só pelas dimensões, sem linha de total + else + addNullFields(req.result); + next(); }, response('class_count')); +// SimCAQ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') + req.sql.field("'Brasil'", 'name') .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') .from('turma') .group('turma.ano_censo') .order('turma.ano_censo') .where('turma.tipo_turma_id = 0 AND turma.dependencia_adm_id <= 3 AND ((turma.etapa_resumida >= 1 AND turma.etapa_resumida <= 7) OR turma.etapa_resumida = 99)'); next(); -}, query, id2str.transform(), (req, res, next) => { +}, rqf.build(), query, id2str.transform(), (req, res, next) => { req.partial = []; - if(Object.keys(req.dims).length > 0 || Object.keys(req.filter).length > 0) { + if((req.dims) && (req.dims.size == 1)) { req.partial = req.result; + + // Se a consulta anterior selecionou dimensão: + // Considera apenas os anos escolhidos na consulta anterior para contar o número total de alunos + let yearFilter = {}; + if("min_year" in req.filter) + yearFilter.min_year = req.filter.min_year; + if("max_year" in req.filter) + yearFilter.max_year = req.filter.max_year; + req.resetSql(); req.dims = {}; - req.filter = {}; - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') + req.filter = yearFilter; + req.sql.field("'Brasil'", 'name') .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') .from('turma') .group('turma.ano_censo') .order('turma.ano_censo') .where('turma.tipo_turma_id = 0 AND turma.dependencia_adm_id <= 3 AND ((turma.etapa_resumida >= 1 AND turma.etapa_resumida <= 7) OR turma.etapa_resumida = 99)'); } next(); -}, query, addMissing(rqf), id2str.transform(), (req, res, next) => { +}, rqf.build(), query, addMissing(rqf), id2str.transform(), (req, res, next) => { + // Se possui apenas uma dimensão if(req.partial.length > 0) { - const classCount = mediaCalc(req.partial); - const yearClassCount = mediaCalc(req.result); - req.result = classCount; + const yearClassCount = req.result; + req.result = req.partial; + + // Adiciona os totais por anos ao fim da consulta + // Como esse tipo de total é especÃfico desse indicador, um label foi adicionado para indicar yearClassCount.forEach((result) => { let obj = {}; - obj = result; - obj.label = "total_year_media"; + obj = result; + obj.label = "total_year_average"; req.result.push(obj); }) } - else { - const classCount = mediaCalc(req.result); - req.result = classCount; - } + // Caso tenha mais de uma dimensão, retorna a consulta só pelas dimensões, sem linha de total (req.result) next(); }, response('class_count')); diff --git a/src/libs/routes/dailyChargeAmount.js b/src/libs/routes/dailyChargeAmount.js index 2bf1f513ab9b006eb14a2c76bdc9c7a53cc3fa43..33d914fcaea2d95976140b6a704217001b0285a3 100644 --- a/src/libs/routes/dailyChargeAmount.js +++ b/src/libs/routes/dailyChargeAmount.js @@ -404,7 +404,11 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) req.sql.from('turma') .field('turma.ano_censo', 'year') .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id') - .field('AVG(turma.duracao_turma)/60.0', 'total') + .field('AVG(turma.duracao_turma)/60.0', 'average_class_duration') + .field('MEDIAN(turma.duracao_turma)/60.0', 'median_class_duration') + .field('STDDEV_POP(turma.duracao_turma)/60.0', 'std_class_duration') + .field('QUANTILE(turma.duracao_turma, 0.25)/60.0', 'fstqt_class_duration') + .field('QUANTILE(turma.duracao_turma, 0.75)/60.0', 'thdqt_class_duration') .group('turma.ano_censo') .group('turma.etapas_mod_ensino_segmento_id') .order('turma.ano_censo') @@ -419,21 +423,6 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) } next(); - -}, query, addMissing(rqf), (req, res, next) => { - - function sliced(object) { - return object['education_level_mod_id'] > 4; - } - - if ('period' in req.filter || 'period' in req.dims) { - req.filter['period'].forEach((element) => { - if (element == '3') - req.result = req.result.filter(sliced); - }); - } - - next(); -}, id2str.transform(), response('turma')); +}, query, addMissing(rqf), id2str.transform(), response('turma')); module.exports = dailyChargeAmountApp; diff --git a/src/libs/routes/infrastructure.js b/src/libs/routes/infrastructure.js index 290bf1a0c393db0545c3e4d88dfc736dc6be5b0d..8b01e338f0c7785a14fe29f93a7f54f2fc2c6582 100644 --- a/src/libs/routes/infrastructure.js +++ b/src/libs/routes/infrastructure.js @@ -67,19 +67,26 @@ infrastructureApp.get('/rural_location', (req, res, next) => { }, response('rural_location')); infrastructureApp.get('/adm_dependency', (req, res, next) => { - req.sql.from('dependencia_adm') - .field('id') - .field('nome', 'name') - .where('id <= 4'); + req.result = []; + for(let i = 1; i <= 4; ++i) { + req.result.push({ + id: i, + name: id2str.admDependency(i) + }); + }; next(); -}, query, response('adm_dependency')); +}, response('adm_dependency')); infrastructureApp.get('/adm_dependency_detailed', (req, res, next) => { - req.sql.from('dependencia_adm_priv') - .field('id', 'id') - .field('nome', 'name'); + req.result = []; + for(let i = 1; i <= 6; ++i) { + req.result.push({ + id: i, + name: id2str.admDependencyPriv(i) + }); + }; next(); -}, query, response('adm_dependency_detailed')); +}, response('adm_dependency_detailed')); rqf.addField({ name: 'filter', diff --git a/src/libs/routes/pibpercapita.js b/src/libs/routes/pibpercapita.js index bfe2c4dde740ff787eb7c5bb1d03f34ccd1d0207..de1ec7d60b1699675701ac8c7906a6b24052eaff 100644 --- a/src/libs/routes/pibpercapita.js +++ b/src/libs/routes/pibpercapita.js @@ -155,6 +155,7 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { .group('ibge_pib.ano_censo') .group('ibge_pib.pib_per_capita') .order('ibge_pib.ano_censo') + console.log("CiTy") } else { req.sql.from('ibge_pib') .field('SUM(ibge_pib.pib)/SUM(ibge_pib.populacao)', 'total') @@ -165,8 +166,13 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { next(); }, query, (req, res, next) => { req.result.forEach((i) => { - let value = i.total; + let value = parseFloat(i.total); + let isnum = /^\d+$/.test(value); + if (isnum == true) { + value = value.toFixed(2) + } // console.log(i.total); + let res = value.toString().split("."); //rounding decimal. let decimal = Math.round(res[1].toString().substring(0,2) + (".") + res[1].toString().substring(2,3)); diff --git a/src/libs/routes/population.js b/src/libs/routes/population.js index cd307cdbcbb70b797c76d92b3550a0e3d9306604..f0402daa73c13eb6453b4e3d584bfe11b8145a01 100644 --- a/src/libs/routes/population.js +++ b/src/libs/routes/population.js @@ -41,7 +41,7 @@ populationApp.get('/years', (req, res, next) => { populationApp.get('/city_size', (req, res, next) => { req.result = [ - {id: 1, name: "até 5000"}, + {id: 1, name: "0 - 5000"}, {id: 2, name: "5001 - 10000"}, {id: 3, name: "10001 - 20000"}, {id: 4, name: "20001 - 50000"}, diff --git a/src/libs/routes/schoolInfrastructure.js b/src/libs/routes/schoolInfrastructure.js index c53a02afcef8f9a29c3089ec70241341d030d1fd..0c617883cba003bc894bc09be1ddb7a3bd1fa327 100644 --- a/src/libs/routes/schoolInfrastructure.js +++ b/src/libs/routes/schoolInfrastructure.js @@ -425,16 +425,16 @@ infrastructureApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { req.queryIndex.allCourtyard = req.queryIndex.allSchools; let haveCourtyard = allSchools.clone(); - haveCourtyard.where('escola.patio_coberto = 1 OR escola.patio_descoberto = 1'); + haveCourtyard.where('escola.patio = 2 OR escola.patio = 1'); req.queryIndex.haveCourtyard = req.querySet.push(haveCourtyard) - 1; let needCourtyard = allSchools.clone(); - needCourtyard.where('escola.patio_descoberto = 0 AND escola.patio_descoberto = 0'); + needCourtyard.where('escola.patio = 1'); req.queryIndex.needCourtyard = req.querySet.push(needCourtyard) - 1; // Cobertura do Pátio let allCourtyardCoverage = allSchools.clone(); - allCourtyardCoverage.where('escola.patio_coberto=0 AND escola.patio_descoberto = 1'); + allCourtyardCoverage.where('escola.patio = 1'); req.queryIndex.allCourtyardCoverage = req.querySet.push(allCourtyardCoverage) - 1; req.queryIndex.haveCourtyardCoverage = req.queryIndex.allCourtyardCoverage; diff --git a/src/libs/routes/transport.js b/src/libs/routes/transport.js index 266b1400abedce27f9529903cee9c7611e98fd89..449895d0c5ea618daf6114f7cf105de67ee3456e 100644 --- a/src/libs/routes/transport.js +++ b/src/libs/routes/transport.js @@ -373,14 +373,14 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Vans e Kombi let goVansAndKombi = allTransports.clone(); goVansAndKombi.field('matricula.transporte_vans_kombi','use_transport_id') - goVansAndKombi.where('matricula.transporte_vans_kombi = 1 OR matricula.transporte_vans_kombi = 0'); + goVansAndKombi.where('matricula.transporte_vans_kombi = 1'); goVansAndKombi.group('matricula.transporte_vans_kombi'); req.queryIndex.goVansAndKombi = req.querySet.push(goVansAndKombi) - 1; // Micro let goMicroBus = allTransports.clone(); goMicroBus.field('matricula.transporte_micro_onibus', 'use_transport_id') - goMicroBus.where('matricula.transporte_micro_onibus = 1 OR matricula.transporte_micro_onibus = 0'); + goMicroBus.where('matricula.transporte_micro_onibus = 1'); goMicroBus.group('matricula.transporte_micro_onibus'); req.queryIndex.goMicroBus = req.querySet.push(goMicroBus) - 1; @@ -388,63 +388,63 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Ônibus let goBus = allTransports.clone(); goBus.field("matricula.transporte_onibus", 'use_transport_id') - goBus.where('matricula.transporte_onibus = 1 OR matricula.transporte_onibus = 0'); + goBus.where('matricula.transporte_onibus = 1'); goBus.group('matricula.transporte_onibus') req.queryIndex.goBus = req.querySet.push(goBus) - 1; // Bicicleta let goBikes = allTransports.clone(); goBikes.field('matricula.transporte_bicicleta', 'use_transport_id') - goBikes.where('matricula.transporte_bicicleta = 1 OR matricula.transporte_bicicleta = 0'); + goBikes.where('matricula.transporte_bicicleta = 1'); goBikes.group('matricula.transporte_bicicleta') req.queryIndex.goBikes = req.querySet.push(goBikes) - 1; // Tração Animal let goAnimalTraction = allTransports.clone(); goAnimalTraction.field('matricula.transporte_animal', 'use_transport_id') - goAnimalTraction.where('matricula.transporte_animal = 1 OR matricula.transporte_animal = 0'); + goAnimalTraction.where('matricula.transporte_animal = 1'); goAnimalTraction.group('matricula.transporte_animal') req.queryIndex.goAnimalTraction = req.querySet.push(goAnimalTraction) - 1; // Outro VeÃculo let goOtherVehicle = allTransports.clone(); goOtherVehicle.field('matricula.transporte_outro', 'use_transport_id') - goOtherVehicle.where('matricula.transporte_outro = 1 OR matricula.transporte_outro = 0'); + goOtherVehicle.where('matricula.transporte_outro = 1'); goOtherVehicle.group('matricula.transporte_outro') req.queryIndex.goOtherVehicle = req.querySet.push(goOtherVehicle) - 1; // Aquaviário/ Embarcação (capacidade até 5 alunos) let goWaterway_5_Students = allTransports.clone(); goWaterway_5_Students.field('matricula.transporte_embar_0_5','use_transport_id') - goWaterway_5_Students.where('matricula.transporte_embar_0_5 = 1 OR matricula.transporte_embar_0_5 = 0'); + goWaterway_5_Students.where('matricula.transporte_embar_0_5 = 1'); goWaterway_5_Students.group('matricula.transporte_embar_0_5') req.queryIndex.goWaterway_5_Students = req.querySet.push(goWaterway_5_Students) - 1; // Aquaviário/ Embarcação (capacidade de 5 até 15 alunos) let goWaterway_15_Students = allTransports.clone(); goWaterway_15_Students.field('matricula.transporte_embar_5_15', 'use_transport_id') - goWaterway_15_Students.where('matricula.transporte_embar_5_15 = 1 OR matricula.transporte_embar_5_15 = 0'); + goWaterway_15_Students.where('matricula.transporte_embar_5_15 = 1'); goWaterway_15_Students.group('matricula.transporte_embar_5_15') req.queryIndex.goWaterway_15_Students = req.querySet.push(goWaterway_15_Students) - 1; // Aquaviário/ Embarcação (capacidade de 15 até 35 alunos)r let goWaterway_35_Students = allTransports.clone(); goWaterway_35_Students.field('matricula.transporte_embar_15_35', 'use_transport_id') - goWaterway_35_Students.where('matricula.transporte_embar_15_35 = 1 OR matricula.transporte_embar_15_35 = 0'); + goWaterway_35_Students.where('matricula.transporte_embar_15_35 = 1'); goWaterway_35_Students.group('matricula.transporte_embar_15_35') req.queryIndex.goWaterway_35_Students = req.querySet.push(goWaterway_35_Students) - 1; // Aquaviário/ Embarcação (capacidade mais 35 alunos) let goWaterwayMoreThan_35 = allTransports.clone(); goWaterwayMoreThan_35.field('matricula.transporte_embar_35', 'use_transport_id') - goWaterwayMoreThan_35.where('matricula.transporte_embar_35 = 1 OR matricula.transporte_embar_35 = 0'); + goWaterwayMoreThan_35.where('matricula.transporte_embar_35 = 1'); goWaterwayMoreThan_35.group('matricula.transporte_embar_35') req.queryIndex.goWaterwayMoreThan_35 = req.querySet.push(goWaterwayMoreThan_35) - 1; // Trêm / Metrô let goSubwayAndTrain = allTransports.clone(); goSubwayAndTrain.field('matricula.transporte_trem_metro', 'use_transport_id') - goSubwayAndTrain.where('matricula.transporte_trem_metro = 1 OR matricula.transporte_trem_metro = 0'); + goSubwayAndTrain.where('matricula.transporte_trem_metro = 1'); goSubwayAndTrain.group('matricula.transporte_trem_metro') req.queryIndex.goSubwayAndTrain = req.querySet.push(goSubwayAndTrain) - 1; @@ -463,8 +463,8 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { for (let i = 0; i < transport_match_0.length; i++) { transport_match_0[i].use_transport_id = true; transport_match.push(transport_match_0[i]) - transport_match_1[i].use_transport_id = false; - transport_match.push(transport_match_1[i]) + // transport_match_1[i].use_transport_id = false; + // transport_match.push(transport_match_1[i]) } //modifica adicionando use_transport_id=false, com os mesmos valores @@ -472,8 +472,8 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { for (let i = 0; i < all_enrollment_match_0.length; i++) { all_enrollment_match_0[i].use_transport_id = true; all_enrollment_match.push(all_enrollment_match_0[i]) - all_enrollment_match_1[i].use_transport_id = false; - all_enrollment_match.push(all_enrollment_match_1[i]) + // all_enrollment_match_1[i].use_transport_id = false; + // all_enrollment_match.push(all_enrollment_match_1[i]) } let public_transport = matchQueries(all_enrollment_match, req.result[req.queryIndex.allEnrollmentTransport]); diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js index ee5ddf0171999840a2bdd4fec9a7a2e1ef234713..af123a588d41a37c1e64fb0cfa20abe3928a84b4 100644 --- a/src/libs/routes/user.js +++ b/src/libs/routes/user.js @@ -141,76 +141,54 @@ userApp.post('/', (req, res, next) => { admin: false }); - let emailAddress = req.body.email; - let origin = req.body.origin; - User.findOne({email: emailAddress}, (err, find)=> { - if(err) { + if (typeof req.body.password === 'undefined' || !req.body.password) { + res.statusCode = 400; + return res.json({errors: ["O campo senha é obrigatório"]}); + } else { + user.save((err) => { + if(err) { log.error(err); let errors = []; for(let errName in err.errors) { errors.push(err.errors[errName].message); } + log.error(errors); res.statusCode = 400; return res.json({err, errors}); - } else if (find) { - if (find.origin != origin) { - res.statusCode = 400; - return res.json({errors:["Identificamos que esta conta já existe em outra plataforma.\n\nVocê pode realizar o login com a conta do SimCAQ ou criar uma conta nova com outros dados"]}); - } else { - res.statusCode = 400; - return res.json({errors:["Identificamos que esta conta já existe nesta plataforma"]}); - } - } else { - if (typeof req.body.password === 'undefined' || !req.body.password) { - res.statusCode = 400; - return res.json({errors: ["O campo senha é obrigatório"]}); - } else { - user.save((err) => { - if(err) { - log.error(err); - let errors = []; - for(let errName in err.errors) { - errors.push(err.errors[errName].message); - } - log.error(errors); - res.statusCode = 400; - return res.json({err, errors}); - } + } - // Create verification token - let verificationToken = new VerificationToken({ - userId: user._id - }); + // Create verification token + let verificationToken = new VerificationToken({ + userId: user._id + }); - verificationToken.createVerificationToken((err, token) => { - if(err) { - log.error(err); - return next(err); - } - let url = config.default.lde.url + '/verify'; - let text = `Olá, ${user.name}, seja bem vindo/a ao Laboratório de Dados Educacionais.\n\nClique neste link para confirmar sua conta: ${url}/${token}`; - // Send confirmation email - let mailOptions = { - to: `"${user.name} <${user.email}>"`, - subject: "Confirme seu cadastro - Laboratório de Dados Educacionais", - text - } - email(mailOptions, (err, info) => { - if(err) { - log.error(err); - res.json({msg: 'User created'}); - } - if(info) { - log.info(`Message ${info.messageId} sent: ${info.response}`); - log.info(`Usuário ${user.email} foi criado`); - } - res.json({msg: 'User created'}); - }); - }); - }); + verificationToken.createVerificationToken((err, token) => { + if(err) { + log.error(err); + return next(err); + } + let url = config.default.lde.url + '/verify'; + let text = `Olá, ${user.name}, seja bem vindo/a ao Laboratório de Dados Educacionais.\n\nClique neste link para confirmar sua conta: ${url}/${token}`; + // Send confirmation email + let mailOptions = { + to: `"${user.name} <${user.email}>"`, + subject: "Confirme seu cadastro - Laboratório de Dados Educacionais", + text + } + email(mailOptions, (err, info) => { + if(err) { + log.error(err); + res.json({msg: 'User created'}); } - } - }) + if(info) { + log.info(`Message ${info.messageId} sent: ${info.response}`); + log.info(`Usuário ${user.email} foi criado`); + } + res.json({msg: 'User created'}); + }); + }); + }); + } });