public async Task <ProfessorResponse> GetProfessorAsync(string cpf) { var professor = await _professorRepository.GetProfessorWithGradeAsync(cpf); double totalAlunos = 0; double totalGrades = 0; foreach (var grade in professor.Grades) { foreach (var subgrade in grade.Subgrades) { if (subgrade.Matriculas.Count > 0) { totalGrades += 1; totalAlunos += subgrade.Matriculas.Count; } } } var coefficient = (totalAlunos / Constants.MAX_STUDENTS * totalGrades); var salary = coefficient * Constants.BONUS_BASE + Constants.SALARY; return(new ProfessorResponse(professor.CodigoFuncionario, professor.Nome, professor.Cpf, professor.Email, (int)totalGrades, (int)totalAlunos, salary)); }