コード例 #1
0
            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);
            }
コード例 #2
0
        /// <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);
        }