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