private void GenerateFirstNonPowerOf2Round(int firstRoundPlayerCount)
        {
            List <TeamEntity> teams = Teams.Take(firstRoundPlayerCount).ToList();
            int roundMatchIdCounter = 0;

            for (int i = 0; i < firstRoundPlayerCount / 2; i++)
            {
                PlayedGamesEntity game = new PlayedGamesEntity {
                    RoundMatchId = i, HomeTeamId = teams[i].Id, AwayTeamId = teams[teams.Count - (i + 1)].Id, RoundNumber = 1
                };
                Teams[i] = null;
                Teams[teams.Count - (i + 1)] = null;
                gamesToBePlayed.Add(game);
                roundMatchIdCounter++;
            }

            // adds null oppenent to first round bye's teams
            List <TeamEntity> passedTeams = Teams.Skip(firstRoundPlayerCount).ToList();

            for (int i = 0; i < passedTeams.Count; i++)
            {
                PlayedGamesEntity game = new PlayedGamesEntity {
                    RoundMatchId = roundMatchIdCounter, HomeTeamId = passedTeams[i].Id, AwayTeamId = null, RoundNumber = 1, IsFinished = true
                };
                game.IsAwayTeamConfirmedResult = true;
                game.IsHomeTeamConfirmedResult = true;
                gamesToBePlayed.Add(game);
                roundMatchIdCounter++;
            }

            TournamentBracketRoundEntity round = new TournamentBracketRoundEntity {
                RoundNumber = 1, TournamentId = TournamentId
            };

            rounds.Add(round);
            var passedTeamCount = Teams.Count - (MathManager.FindSmallestPowerOf2AsLargeAsParam(Teams.Count) / 2);

            GenerateNextRounds(MathManager.FindSmallestPowerOf2AsLargeAsParam(Teams.Count) / 2, 2, TournamentId, passedTeamCount);
        }
        public void GenerateFixture()
        {
            try
            {
                //Select first N Teams for first round
                if (!MathManager.isPowerOfTwo(Teams.Count))
                {
                    int playerCount           = Teams.Count;
                    int smallestPowerOf2      = MathManager.FindSmallestPowerOf2AsLargeAsParam(playerCount);
                    int firstRoundPlayerCount = (2 * playerCount) - smallestPowerOf2;
                    GenerateFirstNonPowerOf2Round(firstRoundPlayerCount);
                    return;
                }



                for (int i = 0; i < Teams.Count / 2; i++)
                {
                    PlayedGamesEntity game = new PlayedGamesEntity {
                        RoundMatchId = i, HomeTeamId = Teams[i].Id, AwayTeamId = Teams[Teams.Count - (i + 1)].Id, RoundNumber = 1
                    };
                    gamesToBePlayed.Add(game);
                }

                TournamentBracketRoundEntity round = new TournamentBracketRoundEntity {
                    RoundNumber = 1, TournamentId = TournamentId
                };

                rounds.Add(round);
                GenerateNextRounds(Teams.Count / 2, 2, TournamentId, null);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }