Skip to content
Snippets Groups Projects
classroomCount.js 57 KiB
Newer Older
jvfpw18's avatar
jvfpw18 committed

                        // // Garantimos que a soma das porcentagens deu 100% usando reduce, geralmente não ocorre devido à função teto.
                        // function reducer(key) { return (sum, elem) => sum + elem[key]};
                        // let teacherDiffFullPeriod = schoolYear.teacherNumber.careerLevels.reduce(reducer('total_teacher_full_period_career'), 0) - schoolYear.teacherNumber.total_teacher_full_period;
                        // let teacherDiffPartial = schoolYear.teacherNumber.careerLevels.reduce(reducer('total_teacher_partial_career'), 0) - schoolYear.teacherNumber.total_teacher_partial;

                        // // Remove primeiro do ensino superior, caso não tenha suficiente remove do nível médio.
                        // schoolYear.teacherNumber.careerLevels[1].total_teacher_full_period_career -= teacherDiffFullPeriod;
                        // if (schoolYear.teacherNumber.careerLevels[1].total_teacher_full_period_career < 0) {
                        //     teacherDiffFullPeriod = (-1)*schoolYear.teacherNumber.careerLevels[1].total_teacher_full_period_career;
                        //     schoolYear.teacherNumber.careerLevels[1].total_teacher_full_period_career = 0;

                        //     schoolYear.teacherNumber.careerLevels[0].total_teacher_full_period_career -= teacherDiffFullPeriod;
                        //     if (schoolYear.teacherNumber.careerLevels[0].total_teacher_full_period_career < 0)
                        //         schoolYear.teacherNumber.careerLevels[0].total_teacher_full_period_career = 0;
                        // }

                        // // Repete calculos para parcial
                        // schoolYear.teacherNumber.careerLevels[1].total_teacher_partial_career -= teacherDiffPartial;
                        // if (schoolYear.teacherNumber.careerLevels[1].total_teacher_partial_career < 0) {
                        //     teacherDiffPartial = (-1)*schoolYear.teacherNumber.careerLevels[1].total_teacher_partial_career;
                        //     schoolYear.teacherNumber.careerLevels[1].total_teacher_partial_career = 0;

                        //     schoolYear.teacherNumber.careerLevels[0].total_teacher_partial_career -= teacherDiffPartial;
                        //     if (schoolYear.teacherNumber.careerLevels[0].total_teacher_partial < 0)
                        //         schoolYear.teacherNumber.careerLevels[0].total_teacher_partial_career = 0;
                        // }

                        // // Atualiza os totais das carreiras
                        // schoolYear.teacherNumber.careerLevels[1].total_teacher_career = schoolYear.teacherNumber.careerLevels[1].total_teacher_full_period_career + schoolYear.teacherNumber.careerLevels[1].total_teacher_partial_career;
                        // schoolYear.teacherNumber.careerLevels[0].total_teacher_career = schoolYear.teacherNumber.careerLevels[0].total_teacher_full_period_career + schoolYear.teacherNumber.careerLevels[0].total_teacher_partial_career;
                    
                    })

                    // Calculamos para o educationLevel usando reduce
                    function reducer(key) { return (sum, elem) => sum + elem.teacherNumber[key]}
                    educationLevel.teacherNumber = {
                        total_teacher : educationLevel.classes_school_year.reduce(reducer('total_teacher'), 0),
                        total_teacher_full_period : educationLevel.classes_school_year.reduce(reducer('total_teacher_full_period'), 0),
                        total_teacher_partial : educationLevel.classes_school_year.reduce(reducer('total_teacher_partial'), 0)
                    }

                    // function reducerList(idx, key) { return (sum, elem) => sum + elem.teacherNumber.careerLevels[idx][key]}
                    educationLevel.teacherNumber.careerLevels = [];
                    req.teacherFormation.forEach((formation, i) => {
                        let totalTeacherFullPeriodCareer = educationLevel.teacherNumber.total_teacher_full_period * teacherByFormation[i];
                        let totalTeacherPartialCareer = educationLevel.teacherNumber.total_teacher_partial * teacherByFormation[i];

                        educationLevel.teacherNumber.careerLevels.push({
                            sequence: formation.sequence,
                            denomination: formation.denomination,
                            formation_level_id: formation.idFormationLevel,
                            total_teacher_career: totalTeacherFullPeriodCareer + totalTeacherPartialCareer,
                            total_teacher_full_period_career: totalTeacherFullPeriodCareer,
                            total_teacher_partial_career:totalTeacherPartialCareer,
                        })
                    })
                }

                else {
                    let teachingTimeFullPeriod = educationLevel.enrollment.full_period_classes * currentTeachingHours[2].value * req.schoolDays[educationLevelId-1].value;
                    let teachingTimeNight = educationLevel.enrollment.night_classes * currentTeachingHours[1].value * req.schoolDays[educationLevelId-1].value;
                    let teachingTimeDay = educationLevel.enrollment.day_classes * currentTeachingHours[0].value * req.schoolDays[educationLevelId-1].value;

                    let currentTeacherByClass = (location.location_id === 1) ? req.educationSchoolYear[educationLevelId].teacherByClass.urban : req.educationSchoolYear[educationLevelId].teacherByClass.country;
        
                    let numberOfTeacherFullPeriod = Math.ceil((teachingTimeFullPeriod / journey) * currentTeacherByClass);
                    let numberOfTeacherNight = Math.ceil((teachingTimeNight / journey) * currentTeacherByClass);
                    let numberOfTeacherDay = Math.ceil((teachingTimeDay / journey) * currentTeacherByClass);

                    educationLevel.teacherNumber = {
                        total_teacher : numberOfTeacherDay + numberOfTeacherNight + numberOfTeacherFullPeriod,
                        total_teacher_full_period : numberOfTeacherFullPeriod,
                        total_teacher_partial : numberOfTeacherNight + numberOfTeacherDay
                    }

                    educationLevel.teacherNumber.careerLevels = [];
                    req.teacherFormation.forEach((formation, i) => {
                        let totalTeacherFullPeriodCareer = educationLevel.teacherNumber.total_teacher_full_period * teacherByFormation[i];
                        let totalTeacherPartialCareer = educationLevel.teacherNumber.total_teacher_partial * teacherByFormation[i];

                        educationLevel.teacherNumber.careerLevels.push({
                            sequence: formation.sequence,
                            denomination: formation.denomination,
                            formation_level_id: formation.idFormationLevel,
                            total_teacher_career: totalTeacherFullPeriodCareer + totalTeacherPartialCareer,
                            total_teacher_full_period_career: totalTeacherFullPeriodCareer,
                            total_teacher_partial_career:totalTeacherPartialCareer,
                        })
                    })


                    // // Garantimos que a soma das porcentagens deu 100% usando reduce, geralmente não ocorre devido à função teto.
                    // function reducer(key) {return (sum, elem) => sum + elem[key]};
                    // let teacherDiffFullPeriod = educationLevel.teacherNumber.careerLevels.reduce(reducer('total_teacher_full_period_career'), 0) - educationLevel.teacherNumber.total_teacher_full_period;
                    // let teacherDiffPartial = educationLevel.teacherNumber.careerLevels.reduce(reducer('total_teacher_partial_career'), 0) - educationLevel.teacherNumber.total_teacher_partial;

                    // // Remove primeiro do ensino superior, caso não tenha suficiente remove do nível médio.
                    // educationLevel.teacherNumber.careerLevels[1].total_teacher_full_period_career -= teacherDiffFullPeriod;
                    // if (educationLevel.teacherNumber.careerLevels[1].total_teacher_full_period_career < 0) {
                    //     teacherDiffFullPeriod = (-1)*educationLevel.teacherNumber.careerLevels[1].total_teacher_full_period_career;
                    //     educationLevel.teacherNumber.careerLevels[1].total_teacher_full_period_career = 0;

                    //     educationLevel.teacherNumber.careerLevels[0].total_teacher_full_period_career -= teacherDiffFullPeriod;
                    //     if (educationLevel.teacherNumber.careerLevels[0].total_teacher_full_period_career < 0)
                    //         educationLevel.teacherNumber.careerLevels[0].total_teacher_full_period_career = 0;
                    // }

                    // // Repete calculos para parcial
                    // educationLevel.teacherNumber.careerLevels[1].total_teacher_partial_career -= teacherDiffPartial;
                    // if (educationLevel.teacherNumber.careerLevels[1].total_teacher_partial_career < 0) {
                    //     teacherDiffPartial = (-1)*educationLevel.teacherNumber.careerLevels[1].total_teacher_partial_career;
                    //     educationLevel.teacherNumber.careerLevels[1].total_teacher_partial_career = 0;

                    //     educationLevel.teacherNumber.careerLevels[0].total_teacher_partial_career -= teacherDiffPartial;
                    //     if (educationLevel.teacherNumber.careerLevels[0].total_teacher_partial < 0)
                    //         educationLevel.teacherNumber.careerLevels[0].total_teacher_partial_career = 0;
                    // }

                    // // Atualiza os totais das carreiras
                    // educationLevel.teacherNumber.careerLevels[1].total_teacher_career = educationLevel.teacherNumber.careerLevels[1].total_teacher_full_period_career + educationLevel.teacherNumber.careerLevels[1].total_teacher_partial_career;
                    // educationLevel.teacherNumber.careerLevels[0].total_teacher_career = educationLevel.teacherNumber.careerLevels[0].total_teacher_full_period_career + educationLevel.teacherNumber.careerLevels[0].total_teacher_partial_career;
                }
            })
        })
    }

    next();
}, response('classroom_count'));

module.exports = classroomCountApp;