public async Task <IActionResult> BulkEdit(BulkAction bulkAction, PagerParameters pagerParameters) { if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageNotifications)) { return(Unauthorized()); } var viewModel = new NotificationsIndexViewModel { Notifications = new List <Notification>(), Options = new SearchIndexOptions() }; if (!(await TryUpdateModelAsync(viewModel))) { return(View(viewModel)); } //todo create viewmodel with ischecked property var checkedEntries = viewModel.Notifications.Take(1); // viewModel.Comments.Where(t => t.IsChecked); switch (bulkAction) { case BulkAction.None: break; case BulkAction.Delete: foreach (var entry in checkedEntries) { var commentRecord = await _notificationsRepository.FindByIdAsync(entry.Id); if (commentRecord != null) { await _notificationsRepository.DeleteAsync(commentRecord); _notifier.Success(H["Comment {0} has been deleted.", commentRecord.Content]); } } break; default: throw new ArgumentOutOfRangeException(); } return(RedirectToAction("Index", new { page = pagerParameters.Page, pageSize = pagerParameters.PageSize })); }
public async Task <IActionResult> Index(SearchIndexOptions options, PagerParameters pagerParameters) { if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageNotifications)) { return(Unauthorized()); } var siteSettings = await _siteService.GetSiteSettingsAsync(); var pager = new Pager(pagerParameters, siteSettings.PageSize); if (options == null) { options = new SearchIndexOptions(); } //var query = _session.Query<WorkflowType, WorkflowTypeIndex>(); // switch (options.Filter) // { // case WorkflowTypeFilter.All: // default: // break; // } // if (!string.IsNullOrWhiteSpace(options.Search)) // { // query = query.Where(w => w.Name.Contains(options.Search)); // } // switch (options.Order) // { // case WorkflowTypeOrder.Name: // query = query.OrderBy(u => u.Name); // break; // } // var count = await query.CountAsync(); // var workflowTypes = await query // .Skip(pager.GetStartIndex()) // .Take(pager.PageSize) // .ListAsync(); var notifications = await _notificationsRepository.FindAllAsync();// .GetAllAsync(); var currentNotificationsList = notifications // .Where(c => (currentUserGroupIds.Contains(c.GroupId) || c.GroupId == currentUserId) && c.Parent == null && c.CommentGroupTypeId != CommentGroupType.GroupChat) .OrderByDescending(c => c.CreatedUtc).ToList(); // var workflowTypeIds = workflowTypes.Select(x => x.WorkflowTypeId).ToList(); // var workflowGroups = (await _session.QueryIndex<WorkflowIndex>(x => x.WorkflowTypeId.IsIn(workflowTypeIds)) // .ListAsync()) // .GroupBy(x => x.WorkflowTypeId) // .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(currentNotificationsList.Count).RouteData(routeData); var model = new NotificationsIndexViewModel { Notifications = currentNotificationsList, Options = options, Pager = pagerShape }; return(View(model)); }