public ActionResult UserDisplayPuzzles(int id, PuzzleSortType? sortType, int? page, int? pageSize) { var urlHelper = new UrlHelper(new RequestContext(HttpContext, RouteData), RouteTable.Routes); var url = urlHelper.Action("UserDisplayPuzzles", "Players", new RouteValueDictionary { { "id", id }, { "sortType", sortType }, { "page", page }, { "pageSize", pageSize } }, "http", "wikipediamaze.com"); return new PermanentRedirectResult(url); }
public PuzzleListViewModel(string pageTitle, IPagination<PuzzleDetailView> paginatedPuzzles, PuzzleSortType sortType, bool isLoggedIn, int currentUserId) { PaginatedPuzzles = paginatedPuzzles; SortType = sortType; IsLoggedIn = isLoggedIn; _pageTitle = pageTitle; CurrentUserId = currentUserId; }
public ActionResult Index(HeaderInfoController headerInfoController, SidebarController sidebarController, PuzzleSortType? sortType, int? page, int? pageSize) { sortType = sortType ?? PuzzleSortType.Newest; page = page ?? 1; pageSize = pageSize ?? 15; //Get sorted puzzles var puzzles = _puzzleService.GetPuzzleDetailView(sortType.Value, page.Value, pageSize.Value); var viewModel = new PuzzleListViewModel("Welcome", puzzles, sortType.Value, _authenticationService.IsAuthenticated, _authenticationService.CurrentUserId); return View(viewModel); }
public ActionResult Display(HeaderInfoController headerInfoController, int id, string userName, PuzzleSortType? sortType, int? page, int? pageSize) { sortType = sortType ?? PuzzleSortType.Newest; page = page ?? 1; pageSize = pageSize ?? 10; var user = _accountService.GetUserById(id); if (user == null) return View("NotFound"); var loggedInUserId = _authenticationService.CurrentUserId; var lastActivity = _accountService.GetLastActivityDate(user.Id); var profileVM = new UserProfileViewModel(user, loggedInUserId, lastActivity); return View("Display", profileVM); }
private static string GetThemedPageTitle(PuzzleSortType sortType, IEnumerable<string> themes) { var sb = new StringBuilder(); switch (sortType) { case PuzzleSortType.Level: sb.Append("Hardest"); break; case PuzzleSortType.Newest: sb.Append("Newest"); break; case PuzzleSortType.Solutions: sb.Append("Most Played"); break; case PuzzleSortType.Votes: sb.Append("Highest Voted"); break; default: throw new NotImplementedException("Need to handle sorting for type {0}".ToFormat(sortType)); } sb.Append(" Puzzles Themed "); foreach (var theme in themes) { sb.AppendFormat("{0}, ", theme); } return sb.ToString().Trim(' ', ','); }
private static string GetPageTitle(PuzzleSortType sortType) { switch (sortType) { case PuzzleSortType.Level: return "Hardest Puzzles"; case PuzzleSortType.Newest: return "Newest Puzzles"; case PuzzleSortType.Solutions: return "Most Played Puzzles"; case PuzzleSortType.Votes: return "Highest Voted Puzzles"; default: throw new NotImplementedException("Need to handle sorting for type {0}".ToFormat(sortType)); } }
public ActionResult Themed(HeaderInfoController headerInfoController, SidebarController sidebarController, string themes, PuzzleSortType? sortType, int? page, int? pageSize) { sortType = sortType ?? PuzzleSortType.Newest; page = page ?? 1; pageSize = pageSize ?? 15; //Get sorted puzzles var themeList = Theme.GetThemesFromString(themes); IPagination<PuzzleDetailView> puzzles = _puzzleService.GetPuzzleDetailView(sortType.Value, page.Value, pageSize.Value, themeList); var viewModel = new PuzzleListViewModel(GetThemedPageTitle(sortType.Value, themeList), puzzles, sortType.Value, _authenticationService.IsAuthenticated, _authenticationService.CurrentUserId) {Themes = themeList}; ViewData["themes"] = themes; return View(viewModel); }
/// <summary> /// Displays the puzzles /// </summary> /// <param name="id">The id of the user who's profile is being displayed.</param> /// <param name="sortType">The id of the user who's profile is being displayed</param> /// <param name="page">The page number to show</param> /// <param name="pageSize">The size of the page to return.</param> public ActionResult PuzzleList(PuzzleSortType? sortType, int? page, int? pageSize) { sortType = sortType ?? PuzzleSortType.Newest; page = page ?? 1; pageSize = pageSize ?? 15; //Get sorted puzzles var puzzles = _puzzleService.GetPuzzleDetailView(sortType.Value, page.Value, pageSize.Value); var viewModel = new PuzzleListViewModel(GetPageTitle(sortType.Value), puzzles, sortType.Value, _authenticationService.IsAuthenticated, _authenticationService.CurrentUserId); return PartialView(viewModel); }
public IPagination<Puzzle> GetPuzzlesByUserId(int userId, PuzzleSortType sort, int page, int pageSize) { pageSize = Math.Min(pageSize, Settings.DefualtPageSize); IQueryable<Puzzle> puzzles; using (_repository.OpenSession()) { switch (sort) { case PuzzleSortType.Newest: puzzles = _repository.All<Puzzle>().Where(x => x.User.Id == userId).OrderByDescending(p => p.DateCreated).Skip((page - 1) * pageSize).Take(pageSize); break; case PuzzleSortType.Solutions: puzzles = _repository.All<Puzzle>().Where(x => x.User.Id == userId).OrderByDescending(p => p.SolutionCount).Skip((page - 1) * pageSize).Take(pageSize); break; case PuzzleSortType.Level: puzzles = _repository.All<Puzzle>().Where(x => x.User.Id == userId).OrderByDescending(p => p.Level).Skip((page - 1) * pageSize).Take(pageSize); break; case PuzzleSortType.Votes: puzzles = _repository.All<Puzzle>().Where(x => x.User.Id == userId).OrderByDescending(p => p.VoteCount).Skip((page - 1) * pageSize).Take(pageSize); break; default: throw new ArgumentOutOfRangeException("sort"); } return new CustomPagination<Puzzle>(puzzles.ToList(), page, pageSize, _repository.All<Puzzle>().Where(x => x.User.Id == userId).Count()); } }
public IPagination<Puzzle> GetPuzzlesByTheme(string theme, PuzzleSortType sort, int? page, int? pageSize) { page = page ?? 1; pageSize = pageSize ?? Settings.DefualtPageSize; switch (sort) { case PuzzleSortType.Newest: return _repository.All<Puzzle>().Where(x => x.IsVerified).Where(x => x.StartTopic.Equals(theme, StringComparison.InvariantCulture) || x.EndTopic.Equals(theme, StringComparison.InvariantCulture)).OrderByDescending(p => p.DateCreated).AsPagination(page.Value, pageSize.Value); case PuzzleSortType.Solutions: return _repository.All<Puzzle>().Where(x => x.IsVerified).Where(x => x.StartTopic.Equals(theme, StringComparison.InvariantCulture) || x.EndTopic.Equals(theme, StringComparison.InvariantCulture)).OrderByDescending(p => p.SolutionCount).AsPagination(page.Value, pageSize.Value); case PuzzleSortType.Level: return _repository.All<Puzzle>().Where(x => x.IsVerified).Where(x => x.StartTopic.Equals(theme, StringComparison.InvariantCulture) || x.EndTopic.Equals(theme, StringComparison.InvariantCulture)).OrderByDescending(p => p.Level).AsPagination(page.Value, pageSize.Value); case PuzzleSortType.Votes: return _repository.All<Puzzle>().Where(x => x.IsVerified).Where(x => x.StartTopic.Equals(theme, StringComparison.InvariantCulture) || x.EndTopic.Equals(theme, StringComparison.InvariantCulture)).OrderByDescending(p => p.VoteCount).AsPagination(page.Value, pageSize.Value); default: throw new ArgumentOutOfRangeException("sort"); } }
public IPagination<Puzzle> GetPuzzles(PuzzleSortType sort, int page, int pageSize, IEnumerable<string> themes) { using (_repository.OpenSession()) { IList<Puzzle> puzzles = new List<Puzzle>(); foreach (var theme in themes) { var currentTheme = theme; var themedPuzzles = _repository.All<PuzzleTheme>().Where(x => x.Theme.Equals(currentTheme, StringComparison.OrdinalIgnoreCase) && x.Puzzle.IsVerified).Select(x => x.Puzzle).ToList(); if (themedPuzzles.Count > 0) puzzles.AddRange(themedPuzzles); } puzzles = puzzles.Distinct(Puzzle.Comparers.IdComparer).ToList(); switch (sort) { case PuzzleSortType.Newest: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.DateCreated).ToList(); break; case PuzzleSortType.Solutions: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.SolutionCount).ToList(); break; case PuzzleSortType.Level: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.Level).ToList(); break; case PuzzleSortType.Votes: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.VoteCount).ToList(); break; default: throw new ArgumentOutOfRangeException("sort"); } return new CustomPagination<Puzzle>(puzzles.Skip((page - 1) * pageSize).Take(pageSize), page, pageSize, puzzles.Count()); } }
/// <summary> /// Returns a collection of puzzles /// </summary> /// <param name="sort">The type of sort to apply to the collection.</param> /// <param name="page">The page number of the collection to return. The default is 1.</param> /// <param name="pageSize">The number of puzzles to return in each page.</param> public IPagination<Puzzle> GetPuzzles(PuzzleSortType sort, int page, int pageSize) { using (_repository.OpenSession()) { IEnumerable<Puzzle> puzzles; switch (sort) { case PuzzleSortType.Newest: puzzles = _repository.All<Puzzle>().Where(x => x.IsVerified).OrderByDescending(p => p.DateCreated).Skip((page - 1) * pageSize).Take(pageSize).ToList(); break; case PuzzleSortType.Solutions: puzzles = _repository.All<Puzzle>().Where(x => x.IsVerified).OrderByDescending(p => p.SolutionCount).Skip((page - 1) * pageSize).Take(pageSize).ToList(); break; case PuzzleSortType.Level: puzzles = _repository.All<Puzzle>().Where(x => x.IsVerified).OrderByDescending(p => p.Level).Skip((page - 1) * pageSize).Take(pageSize).ToList(); break; case PuzzleSortType.Votes: puzzles = _repository.All<Puzzle>().Where(x => x.IsVerified).OrderByDescending(p => p.VoteCount).Skip((page - 1) * pageSize).Take(pageSize).ToList(); break; default: throw new ArgumentOutOfRangeException("sort"); } return new CustomPagination<Puzzle>(puzzles, page, pageSize, _repository.All<Puzzle>().Where(x => x.IsVerified).Count()); } }
public IPagination<PuzzleDetailView> GetPuzzleDetailView(PuzzleSortType sort, int page, int pageSize, IEnumerable<string> themes) { using (_repository.OpenSession()) { IList<PuzzleDetailView> puzzles = new List<PuzzleDetailView>(); foreach (var theme in themes) { var currentTheme = theme; puzzles.AddRange(_repository.All<PuzzleDetailView>().Where(x => x.Themes.Contains(theme)).ToList()); } puzzles = puzzles.Distinct(PuzzleDetailView.Comparers.PuzzleIdComparer).ToList(); switch (sort) { case PuzzleSortType.Newest: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.DateCreated).ToList(); break; case PuzzleSortType.Solutions: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.SolutionCount).ToList(); break; case PuzzleSortType.Level: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.Level).ToList(); break; case PuzzleSortType.Votes: puzzles = puzzles.Where(x => x.IsVerified).OrderByDescending(p => p.VoteCount).ToList(); break; default: throw new ArgumentOutOfRangeException("sort"); } return new CustomPagination<PuzzleDetailView>(puzzles.Skip((page - 1) * pageSize).Take(pageSize), page, pageSize, puzzles.Count()); } }
public UserProfilePuzzleListViewModel(IPagination<UserProfilePuzzleViewModel> puzzles, PuzzleSortType sortType, int profileId) { Puzzles = puzzles; SortType = sortType; ProfileId = profileId; }
/// <summary> /// Displays the puzzles on the user profile page. /// </summary> /// <param name="id">The id of the user who's profile is being displayed.</param> /// <param name="sortType">The id of the user who's profile is being displayed</param> /// <param name="page">The page number to show</param> /// <param name="pageSize">The size of the page to return.</param> public ActionResult UserDisplayPuzzles(int id, PuzzleSortType? sortType, int? page, int? pageSize) { sortType = sortType ?? PuzzleSortType.Newest; page = page ?? 1; pageSize = pageSize ?? 10; var loggedInUserId = _authenticationService.CurrentUserId; var user = _accountService.GetUserById(id); if (user == null) return View("NotFound"); var puzzles = _puzzleService.GetPuzzlesByUserId(id, sortType.Value, page.Value, pageSize.Value); var votes = _puzzleService.GetVotes(puzzles, loggedInUserId); var puzzleVms = new List<UserProfilePuzzleViewModel>(); foreach (var puzzle in puzzles) { var puzzleId = puzzle.Id; var userVote = votes.Where(x => x.UserId == loggedInUserId && x.PuzzleId == puzzleId).SingleOrDefault(); var userVoteType = userVote == null ? VoteType.None : userVote.VoteType; puzzleVms.Add(new UserProfilePuzzleViewModel(puzzle, userVoteType, _authenticationService.IsAuthenticated, loggedInUserId)); } var userProfilePuzzleVMs = new CustomPagination<UserProfilePuzzleViewModel>(puzzleVms, puzzles.PageNumber, puzzles.PageSize, puzzles.TotalItems); return PartialView(new UserProfilePuzzleListViewModel(userProfilePuzzleVMs, sortType.Value, user.Id)); }