public ThemeListViewModel(string pageTitle, IPagination<Theme> paginatedThemes, ThemeSortType sortType) { PageTitle = pageTitle; PaginatedThemes = paginatedThemes; SortType = sortType; }
public ActionResult Themes(HeaderInfoController headerInfoController, SidebarController sidebarController, int? page, int? pagesize, ThemeSortType? sortType) { page = page ?? 1; pagesize = pagesize ?? 40; sortType = sortType ?? ThemeSortType.Popular; //Get sorted themes var themes = _puzzleService.GetThemes(pagesize.Value, page.Value, sortType.Value); var viewModel = new ThemeListViewModel(GetPageTitle(sortType.Value), themes, sortType.Value); return View(viewModel); ////Get sorted puzzles //IPagination<Puzzle> puzzles = _puzzleService.GetPuzzles(sortType.Value, page.Value, pageSize.Value); ////Get all the votes for the user for the puzzles that are to be displayed. //IEnumerable<Vote> votes = null; //IEnumerable<int> leadingPuzzles = null; //if (_authenticationService.IsAuthenticated) //{ // votes = _puzzleService.GetVotes(puzzles, _authenticationService.CurrentUserId); // leadingPuzzles = _puzzleService.GetPuzzlesLedByUser(puzzles, _authenticationService.CurrentUserId); //} //var viewModel = new PuzzleListViewModel(GetPageTitle(sortType.Value), puzzles, sortType.Value, _authenticationService.IsAuthenticated, votes, leadingPuzzles); //return View(viewModel); }
private static string GetPageTitle(ThemeSortType sortType) { switch (sortType) { case ThemeSortType.Alphabetical: return "Themes Sorted Alphabetically"; case ThemeSortType.Popular: return "Most Popular Themes"; default: throw new NotFiniteNumberException("Need to handle sorting for type {0}".ToFormat(sortType)); } }
public IPagination<Theme> GetThemes(int pageSize, int page, ThemeSortType sortType) { IEnumerable<Theme> themes = null; using (_repository.OpenSession()) { switch (sortType) { case ThemeSortType.Popular: themes = _repository.All<Theme>().Where(x => x.Count > 0).OrderByDescending(x => x.Count).Skip((page - 1) * pageSize).Take(pageSize).ToList(); break; case ThemeSortType.Alphabetical: themes = _repository.All<Theme>().Where(x => x.Count > 0).OrderBy(x => x.Name).Skip((page - 1) * pageSize).Take(pageSize).ToList(); break; } return new CustomPagination<Theme>(themes, page, pageSize, _repository.All<Theme>().Count()); } }