diff --git a/src/libs/routes/classroomCount.js b/src/libs/routes/classroomCount.js index 65fbceedfcb1e8ce21060b249f20851873dce367..efb64d267dc622d1bb9c41059d2c25a205e2dd85 100644 --- a/src/libs/routes/classroomCount.js +++ b/src/libs/routes/classroomCount.js @@ -286,13 +286,25 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { j = 0; let educationLevelSet = new Set(); let enrollment = enrollments[j]; + while(enrollmentMatch && j < enrollments.length) { enrollment = enrollments[j]; + + // Remove se o perÃodo é nulo (não dá pra usar no cálculo) + if(enrollment.period_id == null) { + enrollments.splice(j, 1); + continue; + } + if(typeof enrollment === 'undefined') { ++j; continue; } - if(enrollment.city_id != classroom.city_id) { // Se as cidades não são iguais, já passamos do range + + if(classroom.city_name < enrollment.city_name) { // Se as cidades não são iguais, já passamos do range + enrollmentMatch = false; + continue; + } else if(classroom.city_name > enrollment.city_name) { ++j; continue; } @@ -302,11 +314,6 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { continue; } - // Remove se o perÃodo é nulo (não dá pra usar no cálculo) - if(enrollment.period_id == null) { - enrollments.splice(j, 1); - continue; - } // Temos uma matrÃcula com cidade, ano e localidades certos // "Consome" a matrÃcula (remove do vetor de matrÃculas) @@ -371,7 +378,8 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { educationLevel.enrollment.full_period_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (enrollmentEducationLevel.offerGoal/100)) / enrollmentEducationLevel.numberStudentClass); // Turmas diurnas - educationLevel.enrollment.day_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day / enrollmentEducationLevel.numberStudentClass) - educationLevel.enrollment.full_period_classes); + // MatrÃculas diurnas - matrÃculas integrais + educationLevel.enrollment.day_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (1 - enrollmentEducationLevel.offerGoal/100)) / enrollmentEducationLevel.numberStudentClass); // Turmas noturnas educationLevel.enrollment.night_classes = Math.ceil((educationLevel.enrollment.total_enrollment_night / enrollmentEducationLevel.numberStudentClass)); @@ -428,6 +436,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { // Fazer "merge" do array locations da cidade com o da agregação if(currentObj.locations.length == 0) { + // Pode ser que a cidade atual tenha menos localidades que o total (só urbana ou só rural) currentObj.locations = [...city.locations]; } else { let j = 0; @@ -444,10 +453,16 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { } else if(cityLocation.location_id > currentLocation.location_id) { ++k; currentLocation = currentObj.locations[k]; + // Se a localidade da cidade é maior que a localidade do objeto atual E o vetor de localidades do objeto atual + // acaba, então esta localidade falta no objeto atual, pois as localidades estão ordenadas + if(typeof currentLocation == 'undefined' && typeof cityLocation !== 'undefined') { + currentObj.locations[k] = cityLocation; + currentLocation = currentObj.locations[k]; + } continue; } - // Fazer merge do array education_level + // Fazer "merge" do array education_level if(currentLocation.education_level.length == 0) { currentLocation.education_level = [...cityLocation.education_level]; } else { @@ -492,7 +507,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { } } - req.result = /*{result, enrollments} //*/ reduction || result; + req.result = reduction || result; next(); }, response('classroom_count'));