コード例 #1
0
        public ActionResult Games(UserGamesViewModel viewModel)
        {
            ViewBag.Errors = new[] { "", "", "" };
            if (viewModel.EventCommand == "save")
            {
                //validation
                var playerList    = viewModel.GetCombinedPlayers();
                var duplicateList =
                    playerList.Where(g => g.PlayerTeam != null)
                    .GroupBy(p => p.PlayerTeam)
                    .Where(g => g.Count() > 1)
                    .Select(g => g.Key)
                    .ToList();
                var isInvalidTieBreaker =
                    playerList.Any(
                        r =>
                        r.PlayerID == viewModel.TieBreakerPlayer1.PlayerID ||
                        r.PlayerID == viewModel.TieBreakerPlayer2.PlayerID ||
                        viewModel.TieBreakerPlayer1.PlayerID == viewModel.TieBreakerPlayer2.PlayerID);
                //playerList.Select(r => r.PlayerID).ToList().Contains(viewModel.TieBreakerPlayer1.PlayerID || viewModel.TieBreakerPlayer2.PlayerID);
                playerList.Add(viewModel.TieBreakerPlayer1);
                playerList.Add(viewModel.TieBreakerPlayer2);
                var nullList = playerList.Where(p => (p == null) || (p.PlayerID == 0)).ToList();
                if (duplicateList.Any() || nullList.Any() || isInvalidTieBreaker)
                {
                    if (duplicateList.Any())
                    {
                        viewModel.ErrorMessage = "Cannot have more than one player from team(s): " +
                                                 duplicateList.Aggregate((current, next) => current + ", " + next);
                    }
                    if (nullList.Any())
                    {
                        viewModel.ErrorMessage = "Must select a player for all positions";
                    }
                    if (isInvalidTieBreaker)
                    {
                        viewModel.ErrorMessage = "Tie Breaker player cannot already be a member of your team";
                    }
                    viewModel.IsValid = false;
                    ModelState.Clear();
                    return(View(viewModel));
                }
            }

            if (viewModel.EventCommand == "viewGame")
            {
                return(RedirectToAction("GameSummary", "Home", new { gameNumber = viewModel.EventArgument }));
            }

            viewModel.HandleRequest();
            ModelState.Clear();
            ViewBag.ScoreTotal = viewModel.PlayerScoringSummaries == null || !viewModel.PlayerScoringSummaries.Any()
                ? 0
                : viewModel.PlayerScoringSummaries.Sum(r => r.PlayerTotal);
            //ViewBag.TieBreakerTotal = viewModel.TieBreakerScoringSummaries == null || !viewModel.TieBreakerScoringSummaries.Any()
            //    ? 0
            //    : viewModel.TieBreakerScoringSummaries.Sum(r => r.PlayerTotal);
            return(View(viewModel));
        }
コード例 #2
0
        public ActionResult Games()
        {
            var viewModel = new UserGamesViewModel
            {
                User = BoardSquaresRepository.GetAllUsers().FirstOrDefault(u => u.UserName == User.Identity.Name)
            };

            if (viewModel.User == null)
            {
                ViewBag.ErrorMessage = "Unable to Find User";
                viewModel.UserTeams  = new List <UserTeam>();
                return(View(viewModel));
            }
            viewModel.GetUserTeams();
            return(View(viewModel));
        }