public static GradingTeacherClassSummaryViewData Create(ShortClassGradesSummary classGradesSummary) { var res = new GradingTeacherClassSummaryViewData { Class = ClassViewData.Create(classGradesSummary.Class) }; var studentsGrades = classGradesSummary.Students.Where(x => x.Avg.HasValue).OrderBy(x => x.Avg) .ThenBy(x => x.Student.LastName) .ThenBy(x => x.Student.FirstName).ToList(); var well = new List <ShortStudentClassGradesSummary>(); var trouble = new List <ShortStudentClassGradesSummary>(); foreach (var studentGrades in studentsGrades) { if (studentGrades.Avg <= BAD_GRADE) { trouble.Add(studentGrades); } else { well.Add(studentGrades); } } int skip = well.Count - DEFAUL_STUDENTS_COUNT > 0 ? well.Count - DEFAUL_STUDENTS_COUNT : 0; res.AllStudents = ShortStudentGradingViewData.Create(studentsGrades); res.Trouble = ShortStudentGradingViewData.Create(trouble.Take(DEFAUL_STUDENTS_COUNT).ToList()); res.Well = ShortStudentGradingViewData.Create(well.Skip(skip).Take(DEFAUL_STUDENTS_COUNT).ToList()); return(res); }
public async Task <IList <ShortClassGradesSummary> > GetClassesGradesSummary(int teacherId, GradingPeriod gradingPeriod) { Trace.Assert(Context.SchoolYearId.HasValue); var classesDetails = ServiceLocator.ClassService.GetTeacherClasses(gradingPeriod.SchoolYearRef, teacherId, gradingPeriod.MarkingPeriodRef); var classesIds = classesDetails.Select(x => x.Id).ToList(); var stiSectionsGrades = GetSectionGradesSummary(classesIds, gradingPeriod.Id); var students = ServiceLocator.StudentService.GetTeacherStudents(teacherId, Context.SchoolYearId.Value); var res = new List <ShortClassGradesSummary>(); foreach (var sectionGrade in stiSectionsGrades) { var classesDetail = classesDetails.FirstOrDefault(x => x.Id == sectionGrade.SectionId); res.Add(ShortClassGradesSummary.Create(sectionGrade, classesDetail, students)); } return(res); }
public async Task <IList <ShortClassGradesSummary> > GetClassesGradesSummary(int teacherId, GradingPeriod gradingPeriod) { var classesDetails = ServiceLocator.ClassService.GetTeacherClasses(gradingPeriod.SchoolYearRef, teacherId, gradingPeriod.MarkingPeriodRef); if (classesDetails.Count == 0) { return(new List <ShortClassGradesSummary>()); } var classesIds = classesDetails.Select(x => x.Id).ToList(); var stiSectionsGradesTask = ConnectorLocator.GradebookConnector.GetSectionGradesSummary(classesIds, gradingPeriod.Id); var students = ServiceLocator.StudentService.GetTeacherStudents(teacherId, gradingPeriod.SchoolYearRef); var res = new List <ShortClassGradesSummary>(); var stiSectionsGrades = await stiSectionsGradesTask; foreach (var sectionGrades in stiSectionsGrades) { var classesDetail = classesDetails.FirstOrDefault(x => x.Id == sectionGrades.SectionId); res.Add(ShortClassGradesSummary.Create(sectionGrades, classesDetail, students)); } return(res); }