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; }