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