Пример #1
0
        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);
        }
Пример #2
0
        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);
        }