public ActionResult UserDisplaySolutions(int id, SolutionSortType? sortType, int? page) { var urlHelper = new UrlHelper(new RequestContext(HttpContext, RouteData), RouteTable.Routes); var url = urlHelper.Action("UserDisplaySolutions", "Players", new RouteValueDictionary { { "id", id }, { "sortType", sortType }, { "page", page }}, "http", "wikipediamaze.com"); return new PermanentRedirectResult(url); }
public IPagination<SolutionProfile> GetSolutionsByUserId(int userId, SolutionSortType sortType, int page, int pageSize) { using (_repository.OpenSession()) { var groupedSolutions = _repository.All<SolutionProfile>().ByUserId(userId).ToList().GroupBy(x => x.PuzzleId); var solutions = new List<SolutionProfile>(); foreach (var ig in groupedSolutions) { solutions.Add(ig.OrderByDescending(x => x.PointsAwarded).First()); } switch (sortType) { case SolutionSortType.Newest: solutions = solutions.OrderByDescending(x => x.DateCreated).ToList(); break; case SolutionSortType.Steps: solutions = solutions.OrderBy(x => x.StepCount).ToList(); break; case SolutionSortType.PointsAwarded: solutions = solutions.OrderByDescending(x => x.PointsAwarded).ToList(); break; } return solutions.Skip((page - 1) * pageSize).Take(pageSize).AsCustomPagination(page, pageSize, solutions.Count); } }
public UserProfileSolutionListViewModel(IPagination<SolutionProfile> solutions, SolutionSortType sortType, int profileId) { Solutions = solutions; SortType = sortType; ProfileId = profileId; }
/// <summary> /// Display the solutions 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 type of sort to apply to the solutions.</param> /// <param name="page">The page number to show</param> public ActionResult UserDisplaySolutions(int id, SolutionSortType? sortType, int? page) { sortType = sortType ?? SolutionSortType.Newest; page = page ?? 1; var pageSize = 30; IPagination<SolutionProfile> solutions = _puzzleService.GetSolutionsByUserId(id, sortType.Value, page.Value, pageSize); return PartialView(new UserProfileSolutionListViewModel(solutions, sortType.Value, id)); }