public IHttpActionResult UpdateCourse(int id, CourseUpdateViewModel model)
 {
     if (ModelState.IsValid)
     {
         try
         {
             var result = _service.UpdateCourse(id, model);
             return Content(HttpStatusCode.OK, result);
         }
         catch (AppObjectNotFoundException)
         {
             return StatusCode(HttpStatusCode.NotFound);
         }
     }
     else
     {
         return StatusCode(HttpStatusCode.PreconditionFailed);
     }
 }
        /// <summary>
        /// Updates a specific course by a given id.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public CourseDTO UpdateCourse(int id, CourseUpdateViewModel model)
        {
            // Validate
            var courseEntity = _db.Courses.SingleOrDefault(x => x.ID == id);
            if(courseEntity == null)
            {
                throw new AppObjectNotFoundException();
            }
            //make changes to the entity object and save changes to database
            courseEntity.StartDate = model.StartDate;
            courseEntity.EndDate = model.EndDate;

            if(model.MaxStudents != 0)
            {
                courseEntity.MaxStudents = model.MaxStudents;
            }

            _db.SaveChanges();
            // Return
            var courseTemplate = _db.CourseTemplates.SingleOrDefault(x => x.TemplateID == courseEntity.TemplateID);
            if (courseTemplate == null)
            {
                //return 500 internal server error
                throw new ApplicationException("");
            }
            var count = _db.CourseStudents.Count(x => x.CourseID == courseEntity.ID);
            var result = new CourseDTO
            {
                ID = courseEntity.ID,
                Name = courseTemplate.Name,
                StartDate = courseEntity.StartDate,
                StudentCount = count
            };
            return result;
        }