public async Task ExecuteAsync(RecipeExecutionContext context)
        {
            if (!String.Equals(context.Name, "WorkflowType", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var model = context.Step.ToObject <WorkflowStepModel>();

            foreach (JObject token in model.Data)
            {
                var workflow = token.ToObject <WorkflowType>();

                var existing = await _workflowTypeStore.GetAsync(workflow.WorkflowTypeId);

                if (existing == null)
                {
                    workflow.Id = 0;
                }
                else
                {
                    await _workflowTypeStore.DeleteAsync(existing);
                }

                await _workflowTypeStore.SaveAsync(workflow);
            }
        }
        public async Task <IActionResult> BulkEdit(WorkflowTypeBulkAction bulkAction, PagerParameters pagerParameters)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows))
            {
                return(Unauthorized());
            }

            var viewModel = new WorkflowTypeIndexViewModel {
                WorkflowTypes = new List <WorkflowTypeEntry>(), Options = new WorkflowTypeIndexOptions()
            };

            if (!(await TryUpdateModelAsync(viewModel)))
            {
                return(View(viewModel));
            }

            var checkedEntries = viewModel.WorkflowTypes.Where(t => t.IsChecked);

            switch (bulkAction)
            {
            case WorkflowTypeBulkAction.None:
                break;

            case WorkflowTypeBulkAction.Delete:
                foreach (var entry in checkedEntries)
                {
                    var workflowType = await _workflowTypeStore.GetAsync(entry.Id);

                    if (workflowType != null)
                    {
                        await _workflowTypeStore.DeleteAsync(workflowType);

                        _notifier.Success(H["Workflow {0} has been deleted.", workflowType.Name]);
                    }
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(RedirectToAction("Index", new { page = pagerParameters.Page, pageSize = pagerParameters.PageSize }));
        }
Example #3
0
        public async Task <IActionResult> BulkEdit(WorkflowTypeIndexOptions options, IEnumerable <int> itemIds)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows))
            {
                return(Forbid());
            }

            if (itemIds?.Count() > 0)
            {
                var checkedEntries = await _session.Query <WorkflowType, WorkflowTypeIndex>().Where(x => x.DocumentId.IsIn(itemIds)).ListAsync();

                switch (options.BulkAction)
                {
                case WorkflowTypeBulkAction.None:
                    break;

                case WorkflowTypeBulkAction.Delete:
                    foreach (var entry in checkedEntries)
                    {
                        var workflowType = await _workflowTypeStore.GetAsync(entry.Id);

                        if (workflowType != null)
                        {
                            await _workflowTypeStore.DeleteAsync(workflowType);

                            _notifier.Success(H["Workflow {0} has been deleted.", workflowType.Name]);
                        }
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(RedirectToAction("Index"));
        }