public IActionResult PartiallyUpdateCourseForAuthor(Guid authorId, Guid courseId, JsonPatchDocument <courseForUpdateDto> patchDocument) { if (!_courseLibraryRepository.AuthorExists(authorId)) { return(NotFound()); } var courseForAuthorFromRepo = _courseLibraryRepository.GetCourse(authorId, courseId); if (courseForAuthorFromRepo == null) { var courseEntity = new courseForUpdateDto(); patchDocument.ApplyTo(courseEntity, ModelState); if (!TryValidateModel(courseEntity)) { return(ValidationProblem(ModelState)); } var courseToAdd = _mapper.Map <Course>(courseEntity); courseToAdd.Id = courseId; _courseLibraryRepository.AddCourse(authorId, courseToAdd); _courseLibraryRepository.Save(); return(CreatedAtRoute("GetCourseForAuthor", new { authorId = authorId, courseId = courseToAdd.Id }, courseToAdd)); } var courseToPatch = _mapper.Map <courseForUpdateDto>(courseForAuthorFromRepo); patchDocument.ApplyTo(courseToPatch, ModelState); if (!TryValidateModel(courseToPatch)) { return(ValidationProblem(ModelState)); } _mapper.Map(courseToPatch, courseForAuthorFromRepo); _courseLibraryRepository.UpdateCourse(courseForAuthorFromRepo); _courseLibraryRepository.Save(); return(NoContent()); }
public IActionResult updateCourseForAuthor(Guid authorId, Guid courseId, courseForUpdateDto course) { if (!_courseLibraryRepository.AuthorExists(authorId)) { return(NotFound()); //return Ok(_mapper.Map<IEnumerable<CoursesDto>>(getCouseFromRepo)); } var courseForAuthorFromRepo = _courseLibraryRepository.GetCourse(authorId, courseId); if (courseForAuthorFromRepo == null) { var courseEntity = _mapper.Map <Course>(course); courseEntity.Id = courseId; _courseLibraryRepository.AddCourse(authorId, courseEntity); _courseLibraryRepository.Save(); var courseToReturn = _mapper.Map <CoursesDto>(courseEntity); return(CreatedAtRoute("GetCourseForAuthor", new { authorId = authorId, courseId = courseToReturn.Id }, courseToReturn)); } _mapper.Map(course, courseForAuthorFromRepo); _courseLibraryRepository.UpdateCourse(courseForAuthorFromRepo); _courseLibraryRepository.Save(); return(NoContent()); }