private void UpdateBracketEntrants(string[] selectedEntrants, Bracket bracketToUpdate) { if (selectedEntrants == null) { bracketToUpdate.Contenders = new List <Contender>(); return; } var selectedEntrantsHS = new HashSet <string>(selectedEntrants); var bracketEntrants = new HashSet <int>(bracketToUpdate.Contenders.Select(c => c.Entrant.EntrantID)); foreach (var entrant in _context.Entrants) { if (selectedEntrantsHS.Contains(entrant.EntrantID.ToString())) { if (!bracketEntrants.Contains(entrant.EntrantID)) { bracketToUpdate.Contenders.Add(new Contender { BracketID = bracketToUpdate.BracketID, EntrantID = entrant.EntrantID, Eliminated = false, RoundsAlive = 0 }); } } else { if (bracketEntrants.Contains(entrant.EntrantID)) { Contender contenderToRemove = bracketToUpdate.Contenders.SingleOrDefault(i => i.EntrantID == entrant.EntrantID); _context.Remove(contenderToRemove); } } } }
private void UpdateBoardContenders(string[] selectedContenders, BingoBoard boardToUpdate) { if (selectedContenders == null) { boardToUpdate.BoardPieces = new List <BoardPiece>(); return; } List <int> positions = new List <int>(); for (int i = 1; i <= REQUIRED_PIECES; i++) { positions.Add(i); } var rand = new Random(DateTime.Now.Millisecond); var selectedContendersHS = new HashSet <string>(selectedContenders); var boardContenders = new HashSet <int>(boardToUpdate.BoardPieces.Select(c => c.Contender.ContenderID)); foreach (var contender in _context.Contenders) { if (selectedContendersHS.Contains(contender.ContenderID.ToString())) { if (!boardContenders.Contains(contender.ContenderID)) { boardToUpdate.BoardPieces.Add(new BoardPiece { BingoBoardID = boardToUpdate.BingoBoardID, ContenderID = contender.ContenderID }); } } else { if (boardContenders.Contains(contender.EntrantID)) { BoardPiece boardPieceToRemove = boardToUpdate.BoardPieces.SingleOrDefault(i => i.ContenderID == contender.ContenderID); _context.Remove(boardPieceToRemove); } } } foreach (var boardPiece in boardToUpdate.BoardPieces) { if (boardPiece.BoardPosition == 0) { positions.Remove(boardPiece.BoardPosition); } } foreach (var boardPiece in boardToUpdate.BoardPieces) { if (boardPiece.BoardPosition == 0) { var pos = rand.Next(0, positions.Count); boardPiece.BoardPosition = positions[pos]; positions.Remove(positions[pos]); } } }