コード例 #1
0
        public async Task <KeyValuePair <WorkflowResult, Guid> > AddExcursionAsync(DateTime beginDate, DateTime endDate, Guid userId)
        {
            using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                try
                {
                    KeyValuePair <WorkflowResult, Guid> workflowResult = await _decorated.AddExcursionAsync(beginDate, endDate, userId);

                    if (workflowResult.Key.Success)
                    {
                        transactionScope.Complete();
                    }
                    else
                    {
                        Transaction.Current.Rollback();
                    }
                    return(workflowResult);
                }
                catch
                {
                    Transaction.Current.Rollback();
                    throw;
                }
            }
        }
コード例 #2
0
        public async Task <ActionResult> OnPostAddExcursionAsync([FromServices] IProductComponentFactory productComponentFactory)
        {
            try
            {
                ModelState.Clear();
                if (!TryValidateModel(AddExcursionRequest))
                {
                    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.AddExcursionAsync(AddExcursionRequest.BeginDate, AddExcursionRequest.EndDate, UserId())).Key;

                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);
            }
        }