//todo properly test these with years public virtual void CreateSeasonSchedule(Season season) { int day = 1; season.Schedule = new Schedule(); var gameCreator = new SeasonGameCreator(season); ScheduleRules.Where(sr => sr.IsActive(season.Year)).ToList().ForEach(rule => { //rule about duplicating teams and divisions? var homeTeams = GetTeams(season, rule.HomeTeam, rule.HomeDivisionRule); var awayTeams = GetTeams(season, rule.AwayTeam, rule.AwayDivisionRule); var nextSchedule = Scheduler.CreateGames( season, season.Year, 1, day, homeTeams.ToList <ITeam>(), (awayTeams == null || awayTeams.Count == 0) ? null : awayTeams.ToList <ITeam>(), rule.Iterations, rule.HomeAndAway, season.CompetitionConfig.GameRules, gameCreator); day = Scheduler.MergeSchedulesTryToCompress(season.Schedule, nextSchedule) + 1; }); }
public Season Create(Season previousSeason, int number, int year, int startingDay, SeasonGameCreator gameCreator) { var season = new Season() { Name = Name, Complete = false, Number = number, Year = year, StartingDay = startingDay, Started = false }; CreateAndAddDivision(season, DivisionRules); CreateAndAddTeams(season, TeamRules); gameCreator.Competition = season; season.GameCreator = gameCreator; season.Schedule = CreateSchedule(null, season); return(season); }