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)); }
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)); }