public static void CreateFixturesForDivision(int seasonId, int divisionId, bool homeHalf) { var MatchesPerRound = GameData.TeamsPerDivision / 2; var RoundsPerSeason = GameData.TeamsPerDivision - 1; // division 1 var fixedteamid = TeamData.GetTeamsByDivisionId(divisionId) .OrderBy(t => t.Id) .FirstOrDefault().Id; var allteamidlist = TeamData.GetTeamsByDivisionId(divisionId) .Select(t => t.Id); var teamidlist = TeamData.GetTeamsByDivisionId(divisionId) .Where(t => t.Id != fixedteamid) .Select(t => t.Id); // week one separately for (var homeid = 1; homeid <= MatchesPerRound; homeid++) { AddFixture(seasonId, 1 + (!homeHalf ? (GameData.TeamsPerDivision - 1) : 0), divisionId, homeHalf, allteamidlist.ElementAt(homeid - 1), allteamidlist.ElementAt(GameData.TeamsPerDivision - homeid)); } // week 2 onwards.. var reverseGameOne = true; for (var week = 1; week < RoundsPerSeason; week++) { // first game with fixed team var firstgameaway = RoundsPerSeason - week - 1; var doReverse = reverseGameOne ? !homeHalf : homeHalf; AddFixture(seasonId, week + 1 + (!homeHalf ? (GameData.TeamsPerDivision - 1) : 0), divisionId, doReverse, fixedteamid, teamidlist.ElementAt(firstgameaway)); reverseGameOne = !reverseGameOne; // other 11 games round robin for (var loop = 0; loop < (MatchesPerRound - 1); loop++) { var hometeamindex = RoundsPerSeason - week + loop; if (hometeamindex > (RoundsPerSeason - 1)) { hometeamindex -= RoundsPerSeason; } var hometeamid = teamidlist.ElementAt(hometeamindex); var awayteamindex = (RoundsPerSeason - 2) - week - loop; if (awayteamindex < 0) { awayteamindex += RoundsPerSeason; } var awayteamid = teamidlist.ElementAt(awayteamindex); AddFixture(seasonId, week + 1 + (!homeHalf ? (GameData.TeamsPerDivision - 1) : 0), divisionId, homeHalf, hometeamid, awayteamid); } } }
public static void CreateProRelData() { int numPromoted = GameData.TeamsPerDivision / 6; int numRelegated = GameData.TeamsPerDivision / 6; foreach (var division in DivisionData.GetDivisions()) { if (division.Id != 1) { // do promotions for (var teamindex = 1; teamindex <= numPromoted; teamindex++) { var teamid = TeamData.GetTeamsByDivisionId(division.Id) .FirstOrDefault(t => t.Position == teamindex) .Id; ProRelData.AddProRel( GameData.CurrentSeason, division.Id, teamid, teamindex == 1 ? "Champions" : "Promoted"); } } if (division.Id != DivisionData.GetDivisions().Max(d => d.Id)) { // do relegations for (var teamindex = GameData.TeamsPerDivision; teamindex > (GameData.TeamsPerDivision - numRelegated); teamindex--) { var team = TeamData.GetTeamsByDivisionId(division.Id) .FirstOrDefault(t => t.Position == teamindex); if (team == null) { throw new Exception("No team found at position "); } var teamid = team.Id; ProRelData.AddProRel( GameData.CurrentSeason, division.Id, teamid, "Relegated"); } } } }
public static void CreateDivisionData(int seasonId, int divisionId) { foreach (var team in TeamData.GetTeamsByDivisionId(divisionId)) { var teamstat = new TeamStats() { Id = GetNextId(), DivisionId = divisionId, SeasonId = seasonId, TeamId = team.Id, Played = 0, Won = 0, Drawn = 0, Lost = 0, GoalsFor = 0, GoalsAgainst = 0 }; TeamStats.Add(teamstat); } }