private XElement CreateStudentReportNode(StudentReportDto studentReport) { var studyReportNode = new XElement(nameof(studentReport)); studyReportNode.Add(new XElement(nameof(StudentReportDto.FirstName), studentReport.FirstName)); studyReportNode.Add(new XElement(nameof(StudentReportDto.LastName), studentReport.LastName)); studyReportNode.Add(new XElement(nameof(StudentReportDto.Course), studentReport.Course)); var subjectCollectionNode = new XElement(nameof(studentReport.Subjects)); foreach (var subjectReport in studentReport.Subjects) { subjectCollectionNode.Add(CreateSubjectReportNode(subjectReport)); } studyReportNode.Add(subjectCollectionNode); return(studyReportNode); }
/// <summary> /// Create grade report for student /// </summary> /// <param name="studentId"></param> public static StudentReportDto StudentToStudentReportDto(StudentUser student) { var report = new StudentReportDto() { StudentId = student.Id, FirstName = student.FirstName, LastName = student.LastName, PlaceOfBirth = student.PlaceOfBirth, DateOfBirth = student.DateOfBirth, ClassRoom = new StudentReportDto.ClassRoomDto() { ClassRoomId = student.ClassRoom?.Id, Name = student.ClassRoom?.Name, SchoolGrade = student.ClassRoom?.ClassGrade }, Courses = student.Takings.Select(t => new StudentReportDto.CoursesDto() { CourseId = t.Program.Teaching.Course.Id, CourseName = t.Program.Teaching.Course.Name, Teacher = new StudentReportDto.CoursesDto.TeacherDto() { TeacherId = t.Program.Teaching.Teacher.Id, FirstName = t.Program.Teaching.Teacher.FirstName, LastName = t.Program.Teaching.Teacher.LastName } }), Teachers = student.Takings.Select(t => new StudentReportDto.TeacherDto() { TeacherId = t.Program.Teaching.Teacher.Id, FirstName = t.Program.Teaching.Teacher.FirstName, LastName = t.Program.Teaching.Teacher.LastName, Courses = student.Takings .Where(tk => tk.Program.Teaching.Teacher.Id == t.Program.Teaching.Teacher.Id) .Select(tkg => new StudentReportDto.TeacherDto.CourseDto() { CourseId = tkg.Program.Teaching.Course.Id, CourseName = tkg.Program.Teaching.Course.Name }) }).Distinct(), Grades = student.Takings.SelectMany(t => t.Grades).Select(g => new StudentReportDto.GradeDto() { GradeId = g.Id, CourseId = g.Taking.Program.Teaching.Course.Id, TeacherId = g.Taking.Program.Teaching.Teacher.Id, ClassRoomId = g.Taking.Program.ClassRoom.Id, StudentId = g.Taking.Student.Id, GradePoint = g.GradePoint, AssignmentDate = g.Assigned, SchoolTerm = g.SchoolTerm, Notes = g.Notes }), Parents = student.StudentParents.Select(sp => new StudentReportDto.ParentDto() { ParentId = sp.Parent.Id, FirstName = sp.Parent.FirstName, LastName = sp.Parent.LastName }) }; return(report); }