Example #1
0
        public async Task <IActionResult> Vote(PlayerVotingViewModel model)
        {
            var game = await _repo.GetGame(model.GameID);

            var player = game.Players.SingleOrDefault(x => x.ID == model.PlayerID);

            if (player == null)
            {
                throw new InvalidOperationException("Invalid Player ID");
            }

            player.Votes = model.Votes
                           .Where(x => !string.IsNullOrWhiteSpace(x.GuessPlayerID))
                           .Select(x => new Vote
            {
                FactID        = x.FactID,
                GuessPlayerID = x.GuessPlayerID
            })
                           .ToList();

            await _repo.UpdateGame(game);

            TempData["fg-player-voted"] = true;

            return(RedirectToAction("Index", "Player", new { id = model.GameID }));
        }
Example #2
0
        private IActionResult PlayerVoting(Game game)
        {
            var vm = new PlayerVotingViewModel
            {
                GameID   = game.ID.ToString(),
                GameName = game.Name
            };

            var hasCookie = Request.Cookies.ContainsKey("FactGameGame" + game.ID);

            if (!hasCookie)
            {
                return(View("PlayerVotingNotRegistered", vm));
            }

            var playerId = Request.Cookies["FactGameGame" + game.ID];
            var player   = game.Players.SingleOrDefault(p => p.ID == playerId);

            if (player == null)
            {
                return(View("PlayerVotingNotRegistered", vm));
            }

            vm.PlayerID = playerId;

            vm.Players = game.Players
                         .OrderBy(p => p.Name)
                         .Select(p => new SelectListItem {
                Value = p.ID, Text = p.Name
            })
                         .ToList();

            vm.Votes = game.Players
                       .OrderBy(p => p.FactID)
                       .Select(p => new PlayerVoteViewModel
            {
                Fact          = p.Fact,
                FactID        = p.FactID,
                GuessPlayerID = player.Votes
                                .Where(x => x.FactID == p.FactID)
                                .Select(x => x.GuessPlayerID)
                                .SingleOrDefault()
            })
                       .ToList();

            return(View("PlayerVoting", vm));
        }