diff --git a/src/libs/routes/classroomCount.js b/src/libs/routes/classroomCount.js index d28de14a3671b6cc0823491f853b2a403fe89030..6fc655c90c6a78dafafaa6bccab2d6419780f4b4 100644 --- a/src/libs/routes/classroomCount.js +++ b/src/libs/routes/classroomCount.js @@ -405,7 +405,14 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { total_classrooms_needed: 0 } schoolYearSet.add(schoolYearHash); - educationLevel.classes_school_year.push(school_year); + // Busca a posição para inserir + let k = 0; + let el = educationLevel.classes_school_year[k]; + while((typeof el !== 'undefined') && school_year.school_year_id > el.school_year_id) { + el = educationLevel.classes_school_year[++k]; + } + // educationLevel.classes_school_year.push(school_year); + educationLevel.classes_school_year.splice(k, 0, school_year); currentSchoolYear = school_year; } } @@ -558,25 +565,27 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { currentEducation.enrollment.day_classes += cityEducation.enrollment.day_classes; currentEducation.enrollment.night_classes += cityEducation.enrollment.night_classes; currentEducation.enrollment.total_classrooms_needed += cityEducation.enrollment.total_classrooms_needed; + // Insere as séries escolares, se existirem if((typeof cityEducation.classes_school_year !== 'undefined') && (typeof currentEducation.classes_school_year !== 'undefined')) { let n = 0; let o = 0; - let cityClass = null; - let currentClass = null; + let currentClass = currentEducation.classes_school_year[n]; + let cityClass = cityEducation.classes_school_year[o]; while((typeof cityClass !== 'undefined') && (typeof currentClass !== 'undefined')) { - cityClass = cityEducation.classes_school_year[o]; currentClass = currentEducation.classes_school_year[n]; + cityClass = cityEducation.classes_school_year[o]; // Se a série escolar é menor que a atual, ela não está no vetor, pois o vetor está ordenado e tem range limitado if(cityClass.school_year_id < currentClass.school_year_id) { currentEducation.classes_school_year.splice(n, 0, cityClass); + currentClass = currentEducation.classes_school_year[n]; cityClass = cityEducation.classes_school_year[++o]; continue; } else if(cityClass.school_year_id > currentClass.school_year_id) { currentClass = currentEducation.classes_school_year[++n]; - // Se o ano escolar da cidade é maior que a localidade do objeto atual E o vetor de ano escolar do objeto atual + // Se o ano escolar da cidade é maior que do objeto atual E o vetor de ano escolar do objeto atual // acaba, então este ano escolar falta no objeto atual, pois os anos escolares estão ordenados - if(typeof currentClass == 'undefined' && typeof cityClass !== 'undefined') { + if((typeof currentClass == 'undefined') && (typeof cityClass !== 'undefined')) { currentEducation.classes_school_year[n] = cityClass; currentClass = currentEducation.classes_school_year[n]; } @@ -616,7 +625,10 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { } } - req.result = reduction || result; + req.result = { + result: reduction || result, + leftovers + } next(); }, response('classroom_count'));