Ejemplo n.º 1
0
        public ActionResult SubjectYearlyAverages(int studentId, int subjectId, int year)
        {
            double?       tmpAvg                  = null; // semester avg
            double?       markSemester1           = null;
            double?       markSemester2           = null;
            double        monthCount              = 4; // semester = 1 (9, 10, 11, 12); semester = 2 (2, 3, 4, 5)
            List <object> subjectSemesterAverages = new List <object>();

            var results = _resultService.GetResultsWithYear(studentId, subjectId, year, null);

            // if no results found
            if (results.Count() == 0)
            {
                tmpAvg = null;
                for (int i = 1; i <= 3; i++)
                {
                    subjectSemesterAverages.Add(new
                    {
                        semesterIndex = i,
                        average       = tmpAvg
                    });
                }
                return(Ok(subjectSemesterAverages));
            }

            // semester 1, 2 averages
            foreach (var r in results)
            {
                if (r.ResultDetails.Count(d => d.MonthlyAverage != null && d.ResultType.Coefficient == 1) == monthCount)
                {
                    tmpAvg = _resultService.CalculateSubjectSemesterSum(r.ResultDetails);
                }
                else
                {
                    tmpAvg = null;
                }

                // save to database
                r.Average = tmpAvg;
                _resultService.Update();

                subjectSemesterAverages.Add(new
                {
                    semesterIndex = r.Semester.Label,
                    average       = tmpAvg
                });

                // if have only 1 result
                if (results.Count() == 1)
                {
                    if (r.Semester.Label == 1)
                    {
                        tmpAvg = null;
                        subjectSemesterAverages.Add(new
                        {
                            semesterIndex = 2,
                            average       = tmpAvg
                        });
                        markSemester2 = tmpAvg;
                    }
                    else
                    {
                        tmpAvg = null;
                        subjectSemesterAverages.Add(new
                        {
                            semesterIndex = 1,
                            average       = tmpAvg
                        });
                        markSemester1 = tmpAvg;
                    }
                }
                else
                {
                    if (r.Semester.Label == 1)
                    {
                        markSemester1 = tmpAvg;
                    }
                    else
                    {
                        markSemester2 = tmpAvg;
                    }
                }
            }

            // year average
            tmpAvg = _resultService.CalculateSubjectYearSum(markSemester1, markSemester2);
            subjectSemesterAverages.Add(new
            {
                semesterIndex = 3,
                average       = tmpAvg
            });

            return(Ok(subjectSemesterAverages));
        }