public async Task <WorkflowResult> AddPriceDetailAsync(int priceCategoryId, string description, decimal unitPrice)
        {
            using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                try
                {
                    WorkflowResult workflowResult = await _decorated.AddPriceDetailAsync(priceCategoryId, description, unitPrice);

                    if (workflowResult.Success)
                    {
                        transactionScope.Complete();
                    }
                    else
                    {
                        Transaction.Current.Rollback();
                    }
                    return(workflowResult);
                }
                catch
                {
                    Transaction.Current.Rollback();
                    throw;
                }
            }
        }
Пример #2
0
        public async Task <ActionResult> OnPostAddPriceDetailAsync([FromServices] IProductComponentFactory productComponentFactory)
        {
            try
            {
                ModelState.Clear();
                if (!TryValidateModel(AddPriceDetailRequest))
                {
                    return(Page());
                }
                Option <IProductComponent> productResult = await productComponentFactory.CurrentAsync(Id);

                if (!productResult.Any())
                {
                    ModelState.TryAddModelError("", "Error, registro no existe en bd");
                }

                IProductComponent product = productResult.Single();

                WorkflowResult result = await product.AddPriceDetailAsync(AddPriceDetailRequest.PriceCategoryId, AddPriceDetailRequest.Description, AddPriceDetailRequest.UnitPrice);

                if (!result.Success)
                {
                    for (int i = 0; i < result.Errors.Length; i++)
                    {
                        ModelState.TryAddModelError("", result.Errors[i]);
                    }
                }

                return(Page());
            }
            finally
            {
                AditionalService = new AddAditionalServiceRequest();
                Product          = await _productQueryComponent.ProductAsync(Id);
            }
        }