Commit d3832cbc authored by Vytor Calixto's avatar Vytor Calixto 👾

Basic aggregation

parent 727e2536
Pipeline #15455 failed with stage
in 60 minutes and 4 seconds
......@@ -330,8 +330,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
}
};
// location.education_level.push(educationLevel);
// Para manter a orde da etapa de ensino
// Para manter a ordem da etapa de ensino
if (location.education_level.length == 0) {
location.education_level.push(educationLevel);
} else {
......@@ -390,7 +389,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
++i;
}
// TODO: agregar por estado e brasil
// Agregar por estado e brasil
let reduction = null;
if(req.dims.state || !req.dims.city) { // Se um dos dois acontecer, sabemos que devemos agregar
let i = 0;
......@@ -422,8 +421,64 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
currentObj = reduction[reduction.length - 1];
}
// TODO: Fazer "merge" do array locations da cidade com o da agregação
// TODO: Somar total de turmas, matrículas e salas a serem construídas
// Fazer "merge" do array locations da cidade com o da agregação
if(currentObj.locations.length == 0) {
currentObj.locations = [...city.locations];
} else {
let j = 0;
let k = 0;
let cityLocation = null;
let currentLocation = null;
while((typeof cityLocation !== 'undefined') && (typeof currentLocation !== 'undefined')) {
cityLocation = city.locations[j];
currentLocation = currentObj.locations[k];
if(cityLocation.location_id < currentLocation.location_id) {
++j;
cityLocation = city.locations[j];
continue;
} else if(cityLocation.location_id > currentLocation.location_id) {
++k;
currentLocation = currentObj.locations[k];
continue;
}
// Fazer merge do array education_level
if(currentLocation.education_level.length == 0) {
currentLocation.education_level = [...cityLocation.education_level];
} else {
let l = 0;
while(l < cityLocation.education_level.length) {
let cityEducation = cityLocation.education_level[l];
let m = 0;
let currentEducation = currentLocation.education_level[m];
while(m < currentLocation.education_level.length && cityEducation.education_level_short_id > currentEducation.education_level_short_id) {
++m;
currentEducation = currentLocation.education_level[m];
}
if(m >= currentLocation.education_level.length) --m;
currentEducation = currentLocation.education_level[m];
if(currentEducation.education_level_short_id == cityEducation.education_level_short_id) {
currentEducation.enrollment.total_enrollment_day += cityEducation.enrollment.total_enrollment_day;
currentEducation.enrollment.total_enrollment_night += cityEducation.enrollment.total_enrollment_night;
currentEducation.enrollment.full_period_classes += cityEducation.enrollment.full_period_classes;
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;
} else {
currentLocation.education_level.splice(m, 0, cityEducation);
}
++l;
}
}
currentLocation.total_classroom += cityLocation.total_classroom;
currentLocation.total_classroom_be_built += cityLocation.total_classroom_be_built;
++j;
cityLocation = city.locations[j];
}
}
++i;
}
}
......@@ -434,7 +489,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
console.log('BRASIL!!!');
}
req.result = result;
req.result = reduction || result;
next();
}, response('classroom_count'));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment