public JsonResult Add(CourseOfferingViewModel viewModel)
        {
            // Populate VM
            viewModel = PopulateViewModel(viewModel);

            // Validate model state
            if (!ModelState.IsValid)
                return Json(new { error = true, message = "There were errors in the submission"});

            // Attempt to add the offering
            try
            {
                var offering = new CourseOffering()
                {
                    Course_CourseID = viewModel.SelectedCourseId,
                    Semester = viewModel.Semester.ToString(),
                    Year = viewModel.SelectedYear
                };

                _courseService.AddCourseOffering(offering);

            }
            catch (CourseOfferingExistsException)
            {
                // If the offering already exists, display error
                return Json(new { error = true, message = "Course offering already exists" });
            }

            return Json(new { error = false, message = "Course offering successfully created!" });
        }
        // Populate CourseOffering View Model
        public CourseOfferingViewModel PopulateViewModel(CourseOfferingViewModel viewModel)
        {
            viewModel.Courses = _courseService.GetAllCourses().OrderBy(c => c.CourseTitle).ToList();
            viewModel.CourseOfferings = _courseService.GetAllCourseOfferings();
            viewModel.CourseOfferings.Sort(new CourseOfferingComparer());
            viewModel.Years = Enumerable.Range(DateTime.Now.Year, 4).Select(i => new SelectListItem
            {
                Text = i.ToString(),
                Value = i.ToString()
            });

            return viewModel;
        }
        public JsonResult List(string courseId)
        {
            // Get the selected course offerings
            var offerings = _courseService.GetAllCourseOfferings().Where(o => o.Course_CourseID == courseId).ToList();

            // Update view model with the list of offerings and selected course description
            var viewModel = new CourseOfferingViewModel()
            {
                CourseOfferings = offerings,
                Description = _courseService.GetCourseById(courseId).Description
            };

            // Return a Json object with the course description and the partial view
            return Json(new { description = viewModel.Description, partial = RenderPartialViewToString("_DisplayOfferings", viewModel) }, JsonRequestBehavior.AllowGet);
        }