public ActionResult UpdateCourseForAuthor(Guid authorId, Guid courseId, courseUpdateDto course) { if (!_coursesLibraryRepository.AuthorExists(authorId)) { return(NotFound()); } var courseForAuthorFromRepo = _coursesLibraryRepository.GetCourse(authorId, courseId); if (courseForAuthorFromRepo == null) { var courseEntity = _mapper.Map <Entities.Course>(course); courseEntity.Id = courseId; _coursesLibraryRepository.AddCourse(authorId, courseEntity); _coursesLibraryRepository.Save(); var courseToReturn = _mapper.Map <CourseDto>(courseEntity); return(CreatedAtRoute( "GetCourseForAuthor", new { authorId, courseId = courseToReturn.Id }, courseToReturn )); } _mapper.Map(course, courseForAuthorFromRepo); _coursesLibraryRepository.UpdateCourse(courseForAuthorFromRepo); _coursesLibraryRepository.Save(); return(NoContent()); }
public ActionResult PartiallyUpdateCourseForAuthor( Guid authorId, Guid courseId, JsonPatchDocument <courseUpdateDto> patchDocument ) { if (!_coursesLibraryRepository.AuthorExists(authorId)) { return(NotFound()); } var courseForAuthorFromRepo = _coursesLibraryRepository.GetCourse(authorId, courseId); if (courseForAuthorFromRepo == null) { var courseDto = new courseUpdateDto(); patchDocument.ApplyTo(courseDto, ModelState); if (!TryValidateModel(courseDto)) { return(ValidationProblem(ModelState)); } var courseToAdd = _mapper.Map <Entities.Course>(courseDto); courseToAdd.Id = courseId; _coursesLibraryRepository.AddCourse(authorId, courseToAdd); _coursesLibraryRepository.Save(); var courseToReturn = _mapper.Map <CourseDto>(courseToAdd); return(CreatedAtRoute("GetCourseForAuthor", new { authorId, courseId = courseToReturn.Id }, courseToReturn)); } var courseToPatch = _mapper.Map <courseUpdateDto>(courseForAuthorFromRepo); patchDocument.ApplyTo(courseToPatch, ModelState); // add modelstate to return 400 - client mistake statusCode not server mistake // check if there are any problems with input if (!TryValidateModel(courseToPatch)) { return(ValidationProblem(ModelState)); } _mapper.Map(courseToPatch, courseForAuthorFromRepo); _coursesLibraryRepository.UpdateCourse(courseForAuthorFromRepo); _coursesLibraryRepository.Save(); return(NoContent()); }