コード例 #1
0
        public async Task <IUpdateProductResponseObject> Handle(IUpdateProductRequestObject requestObject)
        {
            try
            {
                requestObject.Validate();

                if (!requestObject.IsValid)
                {
                    return(new UpdateProductResponseObject((int)HttpStatusCode.BadRequest,
                                                           requestObject.ValidationNotifications));
                }

                var productExists = await CheckIfProductExists(requestObject.ProductId);

                if (!productExists)
                {
                    return(new UpdateProductResponseObject((int)HttpStatusCode.NotFound, new ValidationNotification(Messages.ProductIdError)));
                }

                if (await DescriptionExists(requestObject.Description))
                {
                    return(new UpdateProductResponseObject((int)HttpStatusCode.BadRequest,
                                                           new ValidationNotification(Messages.ProductDescriptionExistError)));
                }

                Product product = new Product(requestObject.ProductId, requestObject.Description, requestObject.Price);

                _uow.ProductRepository.Update(product);

                if (!_uow.Commit())
                {
                    return(new UpdateProductResponseObject((int)HttpStatusCode.InternalServerError, new ValidationNotification(Messages.DatabaseError)));
                }

                return(new UpdateProductResponseObject(product));
            }
            catch (Exception e)
            {
                return(new UpdateProductResponseObject((int)HttpStatusCode.InternalServerError, new ValidationNotification(Messages.ServerError, e.Message)));
            }
        }
コード例 #2
0
 public async Task <IUpdateProductResponseObject> Handle(IUpdateProductRequestObject updateProductRequestObject)
 {
     return(await _updateProduct.Handle(updateProductRequestObject));
 }