private ReportCardDTOItem ConvertToReportCardDTOItem(FormToTeacherSubject fts, IEnumerable <Mark> studentMarks) { IList <int> firstSemesterMarks = new List <int>(); IList <int> secondSemesterMarks = new List <int>(); int firstSemesterSum = 0; int secondSemesterSum = 0; foreach (var mark in studentMarks) { if (mark.Semester == 0) { firstSemesterMarks.Add(mark.MarkValue); firstSemesterSum += mark.MarkValue; } else { secondSemesterMarks.Add(mark.MarkValue); secondSemesterSum += mark.MarkValue; } } ReportCardDTOItem item = new ReportCardDTOItem { Subject = fts.TeacherToSubject.Subject.Id + ", " + fts.TeacherToSubject.Subject.Name, Teacher = fts.TeacherToSubject.Teacher.Id + ", " + fts.TeacherToSubject.Teacher.LastName + " " + fts.TeacherToSubject.Teacher.FirstName, FirstSemesterMarks = firstSemesterMarks, SecondSemesterMarks = secondSemesterMarks }; if (firstSemesterMarks.Count == 0) { item.FirstSemesterAverageMark = null; } else { item.FirstSemesterAverageMark = (double)firstSemesterSum / firstSemesterMarks.Count; } if (secondSemesterMarks.Count == 0) { item.SecondSemesterAverageMark = null; } else { item.SecondSemesterAverageMark = (double)secondSemesterSum / secondSemesterMarks.Count; } return(item); }
//REPORT CARD public ReportCardDTO GetReportCardForStudentId(string studentId) { Student foundStudent = db.StudentsRepository.GetByID(studentId); if (foundStudent == null) { throw new HttpException("Student with id: " + studentId + " was not found."); } ReportCardDTO reportCard = new ReportCardDTO { SchoolYear = foundStudent.Form.Started.Year, StudentId = foundStudent.Id, Student = foundStudent.FirstName + " " + foundStudent.LastName, Form = foundStudent.Form.Grade + "-" + foundStudent.Form.Tag, AttendingTeacher = foundStudent.Form.AttendingTeacher.Id + ", " + foundStudent.Form.AttendingTeacher.FirstName + " " + foundStudent.Form.AttendingTeacher.LastName, Parent = foundStudent.Parent.Id + ", " + foundStudent.Parent.FirstName + " " + foundStudent.Parent.LastName }; IList <ReportCardDTOItem> classes = new List <ReportCardDTOItem>(); IEnumerable <FormToTeacherSubject> studentFormFTSs = db.FormsToTeacherSubjectsRepository.GetByFormIdOnlyActive(foundStudent.Form.Id); foreach (var fts in studentFormFTSs) { IEnumerable <Mark> studentMarks = db.MarksRepository.GetByFTSIdAndStudentId(fts.Id, foundStudent.Id); ReportCardDTOItem item = ConvertToReportCardDTOItem(fts, studentMarks); classes.Add(item); } classes = classes.OrderBy(x => x.Subject).ToList(); reportCard.Classes = classes; emailsService.CreateReportCardMail(foundStudent.Id, reportCard); return(reportCard); }