Пример #1
0
        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 }));
        }
Пример #2
0
        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));
        }