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 Create(HeaderInfoController headerInfoController, SidebarController sidebarController, CreatePuzzleViewModel viewModel, bool captchaValid) { var themes = Theme.GetThemesFromString(viewModel.Themes); ValidatePuzzleForCreation(viewModel, themes, captchaValid); if(!ModelState.IsValid) { return View(viewModel); } var result = _puzzleService.CreatePuzzle(viewModel.StartTopic, viewModel.EndTopic); if (!result.Success) { ModelState.AddModelErrors(result.RuleViolations); return View(viewModel); } _puzzleService.AddThemesToPuzzle(result.PuzzleId, _authenticationService.CurrentUserId, themes); return RedirectToAction("Display", new {id = result.PuzzleId}); }
public ActionResult Create(HeaderInfoController headerInfoController, SidebarController sidebarController) { return View(); }
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); }
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); }
public ActionResult Edit(HeaderInfoController headerInfoController, SidebarController sidebarController, EditPuzzleViewModel viewModel, bool captchaValid) { if (_authenticationService.CurrentUser.Reputation < Settings.MinimumReputationToEditPuzzle) return View("NotPrivaledged"); var themes = Theme.GetThemesFromString(viewModel.Themes); ValidatePuzzleEdit(viewModel, themes, captchaValid); if (!ModelState.IsValid) return View(viewModel); _puzzleService.AddThemesToPuzzle(viewModel.Id, _authenticationService.CurrentUserId, themes); return RedirectToAction("Display", new { id = viewModel.Id }); }
public ActionResult Edit(HeaderInfoController headerInfoController, SidebarController sidebarController, int id) { //Only allow logged in users with high enough reputation to edit the puzzle if (!_authenticationService.IsAuthenticated) return View("Unauthorized"); if (_authenticationService.CurrentUser.Reputation < Settings.MinimumReputationToEditPuzzle) return View("NotPrivaledged"); var puzzle = _puzzleService.GetPuzzleById(id); if (puzzle == null) return View("NotFound"); //Only show puzzles that have not been verified to the user who created them. if (!puzzle.IsVerified) { if (puzzle.User.Id != _authenticationService.CurrentUserId) return View("NotFound"); } var vm = new EditPuzzleViewModel(puzzle); return View(vm); }
public ActionResult Display(HeaderInfoController headerInfoController, SidebarController sidebarController, int id) { var puzzle = _puzzleService.GetPuzzleById(id); if (puzzle == null) return View("NotFound"); //Only show puzzles that have not been verified to the user who created them. if (!puzzle.IsVerified) { if(puzzle.User.Id != _authenticationService.CurrentUserId) return View("NotFound"); } puzzle.Solutions = _puzzleService.GetSolutions(puzzle.Id); puzzle.Votes = _puzzleService.GetVotes(puzzle.Id); var latestSolution = puzzle.Solutions.Where(x => x.UserId == _authenticationService.CurrentUserId).LastOrDefault(); if (latestSolution != null) { latestSolution.Steps = _puzzleService.GetSteps(latestSolution.Id); } var bestSolution = puzzle.Solutions.Where(x => x.UserId == _authenticationService.CurrentUserId).OrderByDescending(x => x.PointsAwarded).FirstOrDefault(); if (bestSolution != null) { bestSolution.Steps = _puzzleService.GetSteps(bestSolution.Id); } var vote = puzzle.Votes.Where(x => x.UserId == _authenticationService.CurrentUserId).SingleOrDefault(); var voteType = vote == null ? VoteType.None : vote.VoteType; var userSolutionCount = puzzle.Solutions.Where(x => x.UserId == _authenticationService.CurrentUserId).Count(); var groupedSolutions = puzzle.Solutions.GroupBy(x => x.UserId); var topSolutions = new List<Solution>(); foreach (var group in groupedSolutions) { topSolutions.Add(group.OrderBy(x => x.StepCount).First()); } var puzzleLeaderBoard = topSolutions.OrderBy(x => x.StepCount).CreateOrderedEnumerable(x => x.DateCreated, new StandardComparer<DateTime>(), false).Take(10).Select(x => new SolutionViewModel(x, _accountService.GetUserById(x.UserId))); var viewModel = new PuzzleViewModel(puzzle, voteType, latestSolution, bestSolution, userSolutionCount, puzzleLeaderBoard, puzzle.User.Id == _authenticationService.CurrentUserId, false); return View(viewModel); }
public ActionResult Index(HeaderInfoController headerInfoController, SidebarController sidebarController) { var badges = _accountService.GetAvailableBadges().OrderBy(x => x.Level); return View(badges); }
public ActionResult Start(HeaderInfoController headerInfoController, SidebarController sidebarController, int id) { var result = _gameService.StartPuzzle(id); return RedirectToAction("Continue", new { topic = result.StartTopic.Name }); }
public ActionResult GoBack(HeaderInfoController headerInfoController, SidebarController sidebarController) { var result = _gameService.GoBack(); return RedirectToAction("Continue", new { topic = result.PreviousTopic.Name }); }