public async Task <IActionResult> BulkEdit(ContentRelationBulkAction bulkAction, PagerParameters pagerParameters) { // if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows)) // { // return Unauthorized(); // } var viewModel = new ContentRelationIndexViewModel { ContentRelations = new List <ContentRelationEntry>(), Options = new ContentRelationIndexOptions() }; if (!(await TryUpdateModelAsync(viewModel))) { return(View(viewModel)); } var checkedEntries = viewModel.ContentRelations.Where(t => t.IsChecked); switch (bulkAction) { case ContentRelationBulkAction.None: break; case ContentRelationBulkAction.Delete: foreach (var entry in checkedEntries) { var contentRelation = await _contentRelationRepository.GetAsync(entry.Id); if (contentRelation != null) { await _contentRelationRepository.DeleteAsync(contentRelation); _notifier.Success(H["Content Relation {0} has been deleted.", contentRelation.Name]); } } break; default: throw new ArgumentOutOfRangeException(); } return(RedirectToAction("Index", new { page = pagerParameters.Page, pageSize = pagerParameters.PageSize })); }
public async Task <IActionResult> Index(ContentRelationIndexOptions options, PagerParameters pagerParameters) { // if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows)) // { // return Unauthorized(); // } var siteSettings = await _siteService.GetSiteSettingsAsync(); var pager = new Pager(pagerParameters, siteSettings.PageSize); if (options == null) { options = new ContentRelationIndexOptions(); } var query = _session.Query <ContentRelationRecord, ContentRelationIndex>(); switch (options.Filter) { case ContentRelationFilter.All: default: break; } if (!string.IsNullOrWhiteSpace(options.Search)) { query = query.Where(w => w.Name.Contains(options.Search)); } switch (options.Order) { case ContentRelationOrder.Name: query = query.OrderBy(u => u.Name); break; } var count = await query.CountAsync(); var contentRelations = await query .Skip(pager.GetStartIndex()) .Take(pager.PageSize) .ListAsync(); // var workflowDefinitionIds = contentRelations.Select(x => x.Uid).ToList(); //var workflowInstanceGroups = (await _session.QueryIndex<WorkflowInstanceIndex>(x => x.WorkflowDefinitionUid.IsIn(workflowDefinitionIds)).ListAsync()).GroupBy(x => x.WorkflowDefinitionUid).ToDictionary(x => x.Key); // Maintain previous route data when generating page links. var routeData = new RouteData(); routeData.Values.Add("Options.Filter", options.Filter); routeData.Values.Add("Options.Search", options.Search); routeData.Values.Add("Options.Order", options.Order); var pagerShape = (await New.Pager(pager)).TotalItemCount(count).RouteData(routeData); var model = new ContentRelationIndexViewModel { ContentRelations = contentRelations .Select(x => new ContentRelationEntry { ContentRelation = x, Id = x.Id, // WorkflowInstanceCount = workflowInstanceGroups.ContainsKey(x.Uid) ? workflowInstanceGroups[x.Uid].Count() : 0, Name = x.Name }) .ToList(), Options = options, Pager = pagerShape }; return(View(model)); }