public List <ReportModel> RenderSemesterReport(List <ReportModel> semesterReports, List <Student> students, List <Subject> subjects, int semesterId, int numOfSubject) { Result result = new Result(); // calculate average for each student foreach (var student in students) { ReportModel semesterReport = new ReportModel(); semesterReport.student = new Student(student); double?average = null; // calculate each subject average foreach (var subject in subjects) { // get result, filter detail by month result = _resultService.GetResults(student.StudentID, semesterId, subject.SubjectID, null).FirstOrDefault(); if (result == null) { average = null; } else { // get monthly average average = result.Average; } ResultAverage resultAverage = new ResultAverage() { subject = new Subject(subject), average = average }; semesterReport.resultAvgs.Add(resultAverage); } semesterReport.sumAverage = _resultService.CalculateStudentAverage(semesterReport.resultAvgs, numOfSubject); semesterReports.Add(semesterReport); } // sort by sumAverage semesterReports = semesterReports.OrderByDescending(m => m.sumAverage).ToList(); // ranking semesterReports = _reportService.StudentsRanking(semesterReports); // performance semesterReports = _reportService.EvaluatePerformance(semesterReports); return(semesterReports); }
public List <ReportModel> RenderMonthlyReport(List <ReportModel> monthlyReports, List <Student> students, List <Subject> subjects, int year, int month, int numOfSubject) { Semester semester = new Semester(); Result result = new Result(); // calculate average for each student foreach (var student in students) { ReportModel monthlyReport = new ReportModel(); monthlyReport.student = new Student(student); double?average = null; // get semesterId by month switch (month) { case 9: case 10: case 11: case 12: semester = _semesterService.GetSemesters(1, year).FirstOrDefault(); break; case 2: case 3: case 4: case 5: semester = _semesterService.GetSemesters(2, year).FirstOrDefault(); break; default: break; } // calculate each subject average foreach (var subject in subjects) { // get result, filter detail by month result = _resultService.GetResult(student.StudentID, subject.SubjectID, semester.SemesterID, month); if (result == null) { average = null; } else { // get monthly average if (result.ResultDetails.Count() == 0) { average = null; } else { average = result.ResultDetails.ToList()[0].MonthlyAverage; } } ResultAverage resultAverage = new ResultAverage() { subject = new Subject(subject), average = average }; monthlyReport.resultAvgs.Add(resultAverage); } monthlyReport.sumAverage = _resultService.CalculateStudentAverage(monthlyReport.resultAvgs, numOfSubject); monthlyReports.Add(monthlyReport); } // sort by sumAverage monthlyReports = monthlyReports.OrderByDescending(m => m.sumAverage).ToList(); // ranking monthlyReports = _reportService.StudentsRanking(monthlyReports); // performance monthlyReports = _reportService.EvaluatePerformance(monthlyReports); return(monthlyReports); }