Ejemplo n.º 1
0
        public async Task <IAddProductResponseObject> Handle(IAddProductRequestObject requestObject)
        {
            try
            {
                requestObject.Validate();

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

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

                var product = new Product(Guid.NewGuid(), requestObject.Description, requestObject.Price);

                _uow.ProductRepository.Add(product);

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

                return(new AddProductResponseObject(product));
            }
            catch (Exception e)
            {
                return(new AddProductResponseObject((int)HttpStatusCode.InternalServerError,
                                                    new ValidationNotification(Messages.ServerError, e.Message)));
            }
        }
Ejemplo n.º 2
0
 public async Task <IAddProductResponseObject> Handle(IAddProductRequestObject addProductRequestObject)
 {
     return(await _addProduct.Handle(addProductRequestObject));
 }