public IActionResult UpdatePhotographer(Guid id, [FromBody] PhotographerForUpdateDto photographer) { if (photographer == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } if (!_magnumPhotosRepository.PhotographerExists(id)) { return(NotFound()); } var photographerFromRepo = _magnumPhotosRepository.GetPhotographer(id); if (photographerFromRepo == null) { var photographerToAdd = Mapper.Map <Photographer> (photographer); photographerToAdd.Id = id; _magnumPhotosRepository.AddPhotographer(photographerToAdd); if (!_magnumPhotosRepository.Save()) { throw new Exception($"Upserting photographer {id} failed on save."); } var photographerToReturn = Mapper.Map <Photographer> (photographerToAdd); return(CreatedAtRoute("GetPhotographer", new { id = photographerToReturn.Id }, photographerToReturn)); } Mapper.Map(photographer, photographerFromRepo); if (!_magnumPhotosRepository.Save()) { throw new Exception($"Updating photographer {id} failed on save."); } return(NoContent()); }
public IActionResult PartiallyUpdatePhotographer(Guid id, [FromBody] JsonPatchDocument <PhotographerForUpdateDto> patchDoc) { if (patchDoc == null) { return(BadRequest()); } if (!_magnumPhotosRepository.PhotographerExists(id)) { return(NotFound()); } var photographerFromRepo = _magnumPhotosRepository.GetPhotographer(id); if (photographerFromRepo == null) { var photographerDto = new PhotographerForUpdateDto(); patchDoc.ApplyTo(photographerDto, ModelState); TryValidateModel(photographerDto); if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } var photographerToAdd = Mapper.Map <Photographer> (photographerDto); photographerToAdd.Id = id; _magnumPhotosRepository.AddPhotographer(photographerToAdd); if (!_magnumPhotosRepository.Save()) { throw new Exception($"Upserting photographer {id} failed on save."); } var photographerToReturn = Mapper.Map <Photographer> (photographerToAdd); return(CreatedAtRoute("GetPhotographer", new { id = photographerToReturn.Id }, photographerToReturn)); } var photographerToPatch = Mapper.Map <PhotographerForUpdateDto> (photographerFromRepo); patchDoc.ApplyTo(photographerToPatch, ModelState); TryValidateModel(photographerToPatch); if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } Mapper.Map(photographerToPatch, photographerFromRepo); if (!_magnumPhotosRepository.Save()) { throw new Exception($"Patching photographer {id} failed on save."); } return(NoContent()); }