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