// GET - Admin UI for Events
        public ActionResult EventIndex(EventIndexOptions options, PagerParameters pagerParameters)
        {
            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            // Default options
            if (options == null)
            {
                options = new EventIndexOptions();
            }

            // Filtering
            IContentQuery <MemberEventPart, MemberEventPartRecord> eventsQuery;

            switch (options.Filter)
            {
            case EventIndexFilter.All:
                eventsQuery = _eventService.GetEvents();
                break;

            case EventIndexFilter.Open:
                eventsQuery = _eventService.GetEvents(true);
                break;

            case EventIndexFilter.Closed:
                eventsQuery = _eventService.GetEvents(false);
                break;

            default:
                throw new ArgumentOutOfRangeException("options");
            }

            var pagerShape = Shape.Pager(pager).TotalItemCount(eventsQuery.Count());
            var entries    = eventsQuery
                             .OrderByDescending <MemberEventPartRecord>(e => e.Id)
                             .Slice(pager.GetStartIndex(), pager.PageSize)
                             .ToList()
                             .Select(e => CreateEventEntry(e.Record));

            var model = new EventIndexVM
            {
                Events  = entries.ToList(),
                Options = options,
                Pager   = pagerShape
            };

            return(View((object)model));
        }
        public ActionResult EventIndex(FormCollection form)
        {
            var viewModel = new EventIndexVM {
                Events = new List <EventEntry>(), Options = new EventIndexOptions()
            };

            UpdateModel(viewModel);

            IEnumerable <EventEntry> checkedEntries = viewModel.Events.Where(s => s.IsChecked);

            switch (viewModel.Options.BulkAction)
            {
            case EventIndexBulkAction.None:
                break;

            case EventIndexBulkAction.Open:
                foreach (EventEntry entry in checkedEntries)
                {
                    throw new NotImplementedException();
                    // _eventService.OpenEvent(entry.Event.Id);
                }
                break;

            case EventIndexBulkAction.Close:
                foreach (EventEntry entry in checkedEntries)
                {
                    throw new NotImplementedException();
                    // _eventService.CloseEvent(entry.Event.Id);
                }
                break;

            case EventIndexBulkAction.Delete:
                foreach (EventEntry entry in checkedEntries)
                {
                    _eventService.DeleteEvent(entry.Event.Id);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException("form");
            }
            return(RedirectToAction("EventIndex"));
        }