public TeacherExtendedDto GetExtendedDataForTeacher(int teacherId) { TeacherUser teacher = db.TeachersRepository.Get(t => t.Id == teacherId).FirstOrDefault(); if (teacher == null) { return(null); } TeacherExtendedDto teacherData = new TeacherExtendedDto() { TeacherId = teacher.Id, FirstName = teacher.FirstName, LastName = teacher.LastName, ClassRooms = teacher.Teachings .SelectMany(t => t.Programs).GroupBy(p => p.ClassRoom) .Select(g => new TeacherExtendedDto.ClassRoomCoursesDto() { ClassRoomId = g.Key.Id, ClassRoomName = g.Key.Name, Grade = g.Key.ClassGrade, Courses = g.Select(prog => new TeacherExtendedDto.ClassRoomCoursesDto.InnerCourseDto() { CourseId = prog.Course.Id, CourseName = prog.Course.Name, WeeklyHours = prog.WeeklyHours }).ToList() }).ToList(), // No groupings or selectmanys?? and still working... Courses = teacher.Teachings .Select(g => new TeacherExtendedDto.CourseClassRoomDto() { CourseId = g.Course.Id, CourseName = g.Course.Name, ClassRooms = g.Programs.Select(p => new TeacherExtendedDto.CourseClassRoomDto.InnerClassRoomDto() { ClassRoomId = p.ClassRoom.Id, ClassRoomName = p.ClassRoom.Name, Grade = p.ClassRoom.ClassGrade, WeeklyHours = p.WeeklyHours }).ToList() }).ToList() }; return(teacherData); }
/// <summary> /// Convert a teacher model to an extended data structure /// With a list of classrooms and courses /// and a list of courses and classrooms /// </summary> /// <param name="teacher"></param> /// <returns></returns> public static TeacherExtendedDto TeacherToTeacherExtendedDto(TeacherUser teacher) { TeacherExtendedDto teacherData = new TeacherExtendedDto() { TeacherId = teacher.Id, FirstName = teacher.FirstName, LastName = teacher.LastName, ClassRooms = teacher.Teachings .SelectMany(t => t.Programs).GroupBy(p => p.ClassRoom) .Select(g => new TeacherExtendedDto.ClassRoomCoursesDto() { ClassRoomId = g.Key.Id, ClassRoomName = g.Key.Name, Grade = g.Key.ClassGrade, Courses = g.Select(prog => new TeacherExtendedDto.ClassRoomCoursesDto.InnerCourseDto() { CourseId = prog.Course.Id, CourseName = prog.Course.Name, WeeklyHours = prog.WeeklyHours }).ToList() }).ToList(), // No groupings or selectmanys?? and still working... Courses = teacher.Teachings .Select(g => new TeacherExtendedDto.CourseClassRoomDto() { CourseId = g.Course.Id, CourseName = g.Course.Name, ClassRooms = g.Programs.Select(p => new TeacherExtendedDto.CourseClassRoomDto.InnerClassRoomDto() { ClassRoomId = p.ClassRoom.Id, ClassRoomName = p.ClassRoom.Name, Grade = p.ClassRoom.ClassGrade, WeeklyHours = p.WeeklyHours }).ToList() }).ToList() }; return(teacherData); }