Esempio n. 1
0
        // GET: Lecturers
        public ActionResult Index(int?id, int?courseID)
        {
            ViewBag.StudentCount    = db.Students.Count();
            ViewBag.DepartmentCount = db.Departments.Count();
            ViewBag.CourseCount     = db.Courses.Count();
            ViewBag.LecturerCount   = db.Lecturers.Count();



            var viewModel = new LecturerIndexData();

            viewModel.Lecturers = db.Lecturers
                                  .Include(l => l.OfficeAssignment)
                                  .Include(l => l.Courses.Select(c => c.Department))
                                  .OrderBy(l => l.LastName);



            if (id != null)
            {
                ViewBag.LecturerID = id.Value;

                viewModel.Courses = viewModel.Lecturers.Where(i => i.ID == id.Value).Single().Courses;
            }

            if (courseID != null)
            {
                ViewBag.CourseID      = courseID.Value;
                viewModel.Enrollments = viewModel.Courses.Where(x => x.CourseID == courseID).Single().Enrollments;
            }
            return(View(viewModel));
        }
Esempio n. 2
0
        // GET: Lecturers
        public async Task <IActionResult> Index(int?id, int?courseID)
        {
            /*The code repeats CourseAssignments and Course because the two properties from Course,
             * are needed to show the courses assigned to the lecturer.
             * The first string of 'ThenInclude' calls gets CourseAssignment.Course, Course.Enrollments, and Enrollment.Student
             *
             * 'Include' starts over with Lecturer properties, so you have to go through the chain again,
             *  specifying Course.Department instead of Course.Enrollments
             */
            var viewModel = new LecturerIndexData();

            viewModel.Lecturers = await _context.Lecturers
                                  .Include(i => i.OfficeAssignment)
                                  .Include(i => i.CourseAssignments)
                                  .ThenInclude(i => i.Course)
                                  .ThenInclude(i => i.Enrollments)
                                  .ThenInclude(i => i.Student)
                                  .Include(i => i.CourseAssignments)
                                  .ThenInclude(i => i.Course)
                                  .ThenInclude(i => i.Department)
                                  .AsNoTracking()
                                  .OrderBy(i => i.LastName)
                                  .ToListAsync();

            if (id != null)
            {
                ViewData["LecturerID"] = id.Value;
                Lecturer instructor = viewModel.Lecturers.Where(
                    i => i.ID == id.Value).Single();
                viewModel.Courses = instructor.CourseAssignments.Select(s => s.Course);
            }

            if (courseID != null)
            {
                ViewData["CourseID"]  = courseID.Value;
                viewModel.Enrollments = viewModel.Courses.Where(
                    x => x.CourseID == courseID).Single().Enrollments;
            }

            return(View(viewModel));
        }