public async Task <IActionResult> EditData(string identifier)
        {
            var result = await GetRecipeTrigger(identifier);

            if (result.Error != null)
            {
                return(result.Error);
            }

            var btcPayServices = await _externalServiceManager.GetExternalServicesData(new ExternalServicesDataQuery()
            {
                Type   = new[] { BtcPayServerService.BtcPayServerServiceType },
                UserId = _userManager.GetUserId(User)
            });

            var vm = new InvoiceStatusChangedTriggerViewModel()
            {
                ExternalServices = new SelectList(btcPayServices, nameof(ExternalServiceData.Id),
                                                  nameof(ExternalServiceData.Name), result.Data.ExternalServiceId),
            };

            SetValues(result.Data, vm);

            return(View(vm));
        }
        private void SetValues(InvoiceStatusChangedTriggerViewModel from, RecipeTrigger to)
        {
            to.ExternalServiceId = from.ExternalServiceId;
            to.RecipeId          = from.RecipeId;
            var currentData = to.Get <InvoiceStatusChangedTriggerParameters>();

            currentData.Status = from.Status;
            to.Set(currentData);
        }
        private void SetValues(RecipeTrigger from, InvoiceStatusChangedTriggerViewModel to)
        {
            to.RecipeId          = from.RecipeId;
            to.ExternalServiceId = from.ExternalServiceId;
            var fromData = from.Get <InvoiceStatusChangedTriggerParameters>();

            to.Status   = fromData.Status;
            to.Statuses = new SelectList(AllowedStatuses, "Value", "Text", fromData.Status);
        }
Exemplo n.º 4
0
        BuildModel(
            InvoiceStatusChangedTriggerViewModel viewModel, RecipeTrigger mainModel)
        {
            if (viewModel.Action != "EditData" || !ModelState.IsValid)
            {
                var btcPayServices = await _externalServiceManager.GetExternalServicesData(
                    new ExternalServicesDataQuery()
                {
                    Type   = new[] { BtcPayServerService.BtcPayServerServiceType },
                    UserId = GetUserId()
                });

                viewModel.ExternalServices = new SelectList(btcPayServices, nameof(ExternalServiceData.Id),
                                                            nameof(ExternalServiceData.Name), viewModel.ExternalServiceId);


                if (viewModel.Action.StartsWith("add-condition", StringComparison.InvariantCultureIgnoreCase))
                {
                    viewModel.Conditions.Add(new InvoiceStatusChangeCondition()
                    {
                        Status            = GetAvailableStatuses(viewModel.Conditions.Select(condition => condition.Status).ToArray()).FirstOrDefault()?.Value ?? Invoice.STATUS_NEW,
                        ExceptionStatuses = new List <string>()
                        {
                            Invoice.EXSTATUS_FALSE
                        }
                    });
                }

                if (viewModel.Action.StartsWith("remove-condition", StringComparison.InvariantCultureIgnoreCase))
                {
                    var index = int.Parse(viewModel.Action.Substring(viewModel.Action.IndexOf(":", StringComparison.InvariantCultureIgnoreCase) + 1));
                    viewModel.Conditions.RemoveAt(index);
                }

                return(null, viewModel);
            }

            mainModel.ExternalServiceId = viewModel.ExternalServiceId;
            mainModel.Set((InvoiceStatusChangedTriggerParameters)viewModel);
            return(mainModel, null);
        }
        BuildModel(
            InvoiceStatusChangedTriggerViewModel viewModel, RecipeTrigger mainModel)
        {
            if (!ModelState.IsValid)
            {
                var btcPayServices = await _externalServiceManager.GetExternalServicesData(
                    new ExternalServicesDataQuery()
                {
                    Type   = new[] { BtcPayServerService.BtcPayServerServiceType },
                    UserId = GetUserId()
                });


                viewModel.Statuses         = new SelectList(AllowedStatuses, "Value", "Text", viewModel.Status);
                viewModel.ExternalServices = new SelectList(btcPayServices, nameof(ExternalServiceData.Id),
                                                            nameof(ExternalServiceData.Name), viewModel.ExternalServiceId);
                return(null, viewModel);
            }

            mainModel.ExternalServiceId = viewModel.ExternalServiceId;
            mainModel.Set((InvoiceStatusChangedTriggerParameters)viewModel);
            return(mainModel, null);
        }
        public async Task <IActionResult> EditData(string identifier, InvoiceStatusChangedTriggerViewModel data)
        {
            var result = await GetRecipeTrigger(identifier);

            if (result.Error != null)
            {
                return(result.Error);
            }

            if (!ModelState.IsValid)
            {
                var btcPayServices = await _externalServiceManager.GetExternalServicesData(
                    new ExternalServicesDataQuery()
                {
                    Type   = new[] { BtcPayServerService.BtcPayServerServiceType },
                    UserId = _userManager.GetUserId(User)
                });


                data.Statuses         = new SelectList(AllowedStatuses, "Value", "Text", data.Status);
                data.ExternalServices = new SelectList(btcPayServices, nameof(ExternalServiceData.Id),
                                                       nameof(ExternalServiceData.Name), data.ExternalServiceId);
                return(View(data));
            }

            var recipeTrigger = result.Data;

            SetValues(data, recipeTrigger);

            await _recipeManager.AddOrUpdateRecipeTrigger(recipeTrigger);

            return(RedirectToAction("EditRecipe", "Recipes", new
            {
                id = recipeTrigger.RecipeId,
                statusMessage = "Invoice Status Change trigger Updated"
            }));
        }