public IHttpActionResult AddCourse(AddCourseViewModel newCourse)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    CourseDetailsDTO course = _service.AddCourse(newCourse);
                    var location = Url.Link("GetCourse", new { id = course.ID });

                    return Created(location, course);
                }
                catch(CourseNotFoundException)
                {
                    throw new HttpResponseException(HttpStatusCode.NotFound);
                }
            }
            else
            {
                return StatusCode(HttpStatusCode.PreconditionFailed);
            }
        }
        /// <summary>
        /// Adds the course to the list of courses.
        /// If an entry for the given CourseID does not exist 
        /// in the course template list, an object not found exception is thrown.
        /// </summary>
        /// <param name="course"></param>
        /// <returns></returns>
        public CourseDetailsDTO AddCourse(AddCourseViewModel course)
        {
            // 1. Validation
            var courseTemplate = _db.CourseTemplates.SingleOrDefault(x => x.CourseID == course.CourseID);

            if (courseTemplate == null)
            {
                throw new CourseNotFoundException();
            }

            // 2. Create the database object
            var courseEntity = new Course
            {
                CourseID  = course.CourseID,
                StartDate = course.StartDate,
                EndDate   = course.EndDate,
                Semester  = course.Semester
            };

            _db.Courses.Add(courseEntity);
            _db.SaveChanges();

            // 3. Create the return object
            var createdCourseEntity = _db.Courses.SingleOrDefault(x => x.CourseID == course.CourseID && x.Semester == course.Semester);

            CourseDetailsDTO courseDTO = new CourseDetailsDTO
            {
                ID        = createdCourseEntity.ID,
                CourseID  = course.CourseID,
                StartDate = course.StartDate,
                EndDate   = course.EndDate,
                Name      = courseTemplate.Name,
                Students  = null
            };

            return courseDTO;
        }