public ActionResult Index(FormCollection input) { if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to manage rules"))) { return(new HttpUnauthorizedResult()); } var viewModel = new RulesIndexViewModel { Rules = new List <RulesEntry>(), Options = new RulesIndexOptions() }; UpdateModel(viewModel); var checkedEntries = viewModel.Rules.Where(c => c.IsChecked); switch (viewModel.Options.BulkAction) { case RulesBulkAction.None: break; case RulesBulkAction.Enable: foreach (var entry in checkedEntries) { _repository.Get(entry.RuleId).Enabled = true; } break; case RulesBulkAction.Disable: foreach (var entry in checkedEntries) { _repository.Get(entry.RuleId).Enabled = false; } break; case RulesBulkAction.Delete: foreach (var entry in checkedEntries) { var rule = _rulesServices.GetRule(entry.RuleId); if (rule != null) { _repository.Delete(rule); } } break; } return(RedirectToAction("Index")); }
public ActionResult Index(RulesIndexOptions options, PagerParameters pagerParameters) { if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to list rules"))) { return(new HttpUnauthorizedResult()); } var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); // default options if (options == null) { options = new RulesIndexOptions(); } var rules = _rulesServices.GetRules(); switch (options.Filter) { case RulesFilter.Disabled: rules = rules.Where(r => r.Enabled == false); break; case RulesFilter.Enabled: rules = rules.Where(u => u.Enabled); break; } if (!String.IsNullOrWhiteSpace(options.Search)) { rules = rules.Where(r => r.Name.Contains(options.Search)); } var pagerShape = Shape.Pager(pager).TotalItemCount(rules.Count()); switch (options.Order) { case RulesOrder.Name: rules = rules.OrderBy(u => u.Name); break; } var results = rules .Skip(pager.GetStartIndex()) .Take(pager.PageSize) .ToList(); var model = new RulesIndexViewModel { Rules = results.Select(x => new RulesEntry { Rule = x, IsChecked = false, RuleId = x.Id }).ToList(), Options = options, Pager = pagerShape }; // 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); pagerShape.RouteData(routeData); return(View(model)); }