Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private IEnumerable<Round> GenerateRoundsAndGames(List<Team> teams, LeagueSeason leagueSeason)
- {
- var numberOfRounds = teams.Count - 1;
- var numberOfGamesPerRound = teams.Count / 2;
- var rotatedTeams = new List<Team>();
- rotatedTeams.AddRange(teams.Skip(numberOfGamesPerRound).Take(numberOfGamesPerRound));
- rotatedTeams.AddRange(teams.Skip(1).Take(numberOfGamesPerRound - 1).ToArray().Reverse());
- var numberOfTeams = rotatedTeams.Count;
- for (var roundNumber = 0; roundNumber < numberOfRounds; roundNumber++)
- {
- var games = new List<Game>();
- var round = new Round
- {
- Id = Guid.NewGuid(),
- Games = new List<Game>(),
- LeagueSeason = leagueSeason,
- LeagueSeasonId = leagueSeason.Id,
- RoundName = string.Format("{0}", ++roundNumber)
- };
- var teamIndex = roundNumber % numberOfTeams;
- games.Add(new Game
- {
- Id = Guid.NewGuid(),
- Round = round,
- RoundId = round.Id,
- SeasonId = leagueSeason.Season.Id,
- TeamA = teams[0],
- TeamAId = teams[0].Id,
- TeamB = rotatedTeams[teamIndex],
- TeamBId = rotatedTeams[teamIndex].Id,
- Season = leagueSeason.Season,
- });
- for (var index = 1; index < numberOfGamesPerRound; index++)
- {
- var teamAIndex = (roundNumber + index) % numberOfTeams;
- var teamBIndex = (roundNumber + numberOfTeams - index) % numberOfTeams;
- games.Add(new Game
- {
- Id = Guid.NewGuid(),
- Round = round,
- RoundId = round.Id,
- SeasonId = leagueSeason.Season.Id,
- TeamA = rotatedTeams[teamBIndex],
- TeamAId = rotatedTeams[teamBIndex].Id,
- TeamB = rotatedTeams[teamAIndex],
- TeamBId = rotatedTeams[teamAIndex].Id
- });
- }
- round.Games = games;
- yield return round;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement