public async Task <ActionResult> OnPostDeleteOrderAsync([FromServices] OrderFactory orderFactory)
        {
            if (orderFactory == null)
            {
                throw new ArgumentNullException(nameof(orderFactory));
            }

            ModelState.Clear();

            EnaBricks.Generics.Option <IOrder> orderOption = await orderFactory.OrderAsync(Id);

            if (!orderOption.Any())
            {
                return(Redirect("/Error"));
            }

            IOrder order = orderOption.Single();

            WorkflowResult result = await order.CancelAsync(UserId());

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

            return(await TryLoadViewModelAsync());
        }
        public async Task <ActionResult> OnPostAsync([FromServices] OrderFactory orderFactory)
        {
            if (orderFactory == null)
            {
                throw new ArgumentNullException(nameof(orderFactory));
            }

            ModelState.Clear();

            if (!TryValidateModel(AddPaymentRequest))
            {
                ModelState.TryAddModelError("", "Parametros incorrectos");
                return(await TryLoadViewModelAsync());
            }

            EnaBricks.Generics.Option <IOrder> orderOption = await orderFactory.OrderAsync(Id);

            if (!orderOption.Any())
            {
                return(Redirect("/Error"));
            }

            IOrder order = orderOption.Single();

            WorkflowResult result = await order.AddPaymentAsync(AddPaymentRequest.Amount, UserId());

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

            return(await TryLoadViewModelAsync());
        }