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))); } }
public async Task <IAddProductResponseObject> Handle(IAddProductRequestObject addProductRequestObject) { return(await _addProduct.Handle(addProductRequestObject)); }