public async Task <IActionResult> IndexWithCategory(string category, [FromQuery] int page, [FromQuery] int pageSize) { var categories = await _stockportApiEventsService.GetEventCategories(); var viewModel = new EventResultsVIewModel() { Title = category }; var events = await _stockportApiEventsService.GetEventsByCategory(category, false); if (events == null || !events.Any()) { return(View("Index", viewModel)); } var eventCategory = categories.FirstOrDefault(c => c.Slug == category); viewModel.Title = eventCategory != null ? eventCategory.Name : category; viewModel.Events = events; viewModel.AddQueryUrl(new QueryUrl(Url?.ActionContext.RouteData.Values, Request?.Query)); _filteredUrl.SetQueryUrl(viewModel.CurrentUrl); viewModel.AddFilteredUrl(_filteredUrl); DoPagination(viewModel, page, pageSize); return(View("Index", viewModel)); }
private void DoPagination(EventResultsVIewModel model, int currentPageNumber, int pageSize) { if (model != null && model.Events.Any()) { var paginatedEvents = PaginationHelper.GetPaginatedItemsForSpecifiedPage( model.Events, currentPageNumber, "events", pageSize, _config.GetEventsDefaultPageSize("stockportgov")); model.Events = paginatedEvents.Items; model.Pagination = paginatedEvents.Pagination; model.Pagination.CurrentUrl = model.CurrentUrl; } else { model.Pagination = new Pagination(); } }