예제 #1
0
        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());
        }
예제 #2
0
        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());
        }