public IActionResult UpdateDogForClient(int clientId, int dogId, DogToUpdateDto dog) { if (!_clientRepository.ClientExists(clientId)) { return(NotFound()); } var dogForClientFromRepo = _dogRepository.GetDog(dogId, clientId); if (dogForClientFromRepo == null) { var dogToAdd = _mapper.Map <Entities.Dog>(dog); dogToAdd.DogId = dogId; _dogRepository.AddDog(clientId, dogToAdd); _dogRepository.Save(); var dogToReturn = _mapper.Map <DogDto>(dogToAdd); return(CreatedAtRoute("GetDogForClient", new { clientId, dogId = dogToReturn.DogId }, dogToReturn)); } _mapper.Map(dog, dogForClientFromRepo); _dogRepository.UpdateDog(dogForClientFromRepo); _dogRepository.Save(); return(NoContent()); }
public ActionResult PartiallyUpdateDogForClient(int clientId, int dogId, JsonPatchDocument <DogToUpdateDto> patchDocument) { if (_clientRepository.ClientExists(clientId)) { return(NotFound()); } var dogForClientFromRepo = _dogRepository.GetDog(dogId, clientId); if (dogForClientFromRepo == null) { var dogDto = new DogToUpdateDto(); patchDocument.ApplyTo(dogDto, (Microsoft.AspNetCore.JsonPatch.Adapters.IObjectAdapter)ModelState); if (!TryValidateModel(dogDto)) { return(ValidationProblem(ModelState)); } var dogToAdd = _mapper.Map <Entities.Dog>(dogDto); dogToAdd.DogId = dogId; _dogRepository.AddDog(clientId, dogToAdd); _dogRepository.Save(); var dogToReturn = _mapper.Map <DogDto>(dogToAdd); return(CreatedAtRoute("GetDogForClient", new { clientId, dogId = dogToReturn.DogId }, dogToReturn)); } var dogToPatch = _mapper.Map <DogToUpdateDto>(dogForClientFromRepo); patchDocument.ApplyTo(dogToPatch, (Microsoft.AspNetCore.JsonPatch.Adapters.IObjectAdapter)ModelState); if (!TryValidateModel(dogToPatch)) { return(ValidationProblem(ModelState)); } TryValidateModel(dogToPatch); _mapper.Map(dogToPatch, dogForClientFromRepo); _dogRepository.UpdateDog(dogForClientFromRepo); _dogRepository.Save(); return(NoContent()); }