public async Task <ActionResult <ProductResponseDTO> > PartialUpdateAsync(long id, JsonPatchDocument <ProductUpdateRequestDTO> productDoc)
        {
            ProductResponseDTO updatedProduct;

            try
            {
                var product = new ProductUpdateRequestDTO();
                productDoc.ApplyTo(product, ModelState);

                TryValidateModel(product);

                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }


                updatedProduct = await _service.PartialUpdateAsync(id, product);
            }
            catch (ProductNotFoundException)
            {
                return(NotFound());
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message);
                _logger.LogError(e.StackTrace);
                return(StatusCode(500));
            }

            return(Ok(updatedProduct));
        }
Exemple #2
0
        public async Task <ProductResponseDTO> PartialUpdateAsync(long id, ProductUpdateRequestDTO product)
        {
            var currentProduct = await _repository.FindByIdAsync(id);

            if (currentProduct == null)
            {
                throw new ProductNotFoundException(String.Format("Product with the id '{0}' was not found", id));
            }

            _mapper.Map(product, currentProduct);

            await _repository.SaveChangesAsync();

            return(_mapper.Map <ProductResponseDTO>(currentProduct));
        }