public bool IsGameValid(ScheduleGame game) { //does the game match its rules? //does the home tema not equal away var validator = new ScheduleGameValidator(game).IsValid; return(validator); }
public bool IsScheduleValid() { ErrorMessages = new List <string>(); var gameMessages = new List <string>(); var dayMessages = new List <string>(); var scheduleMessages = new List <string>(); var dayValidators = new List <ScheduleDayValidator>(); TeamGamesPlayed = new Dictionary <string, int>(); TeamDaysPlayed = new Dictionary <string, int>(); TeamHomeGamesPlayed = new Dictionary <string, int>(); TeamAwayGamesPlayed = new Dictionary <string, int>(); Schedule.Days.Keys.ToList().ForEach(dayNumber => { var day = Schedule.Days[dayNumber]; var validator = new ScheduleDayValidator(Schedule.Days[dayNumber]); day.Games.ForEach(game => { var gameValidator = new ScheduleGameValidator(game); if (!gameValidator.IsValid) { gameMessages.AddRange(gameValidator.Messages); } }); if (!validator.IsValid) { dayMessages.AddRange(validator.Messages); } foreach (KeyValuePair <string, int> pair in validator.HomeTeamCounts) { if (!TeamHomeGamesPlayed.ContainsKey(pair.Key)) { AddStringKeyToDictionary(pair.Key, TeamHomeGamesPlayed, TeamAwayGamesPlayed, TeamDaysPlayed, TeamGamesPlayed); } TeamHomeGamesPlayed[pair.Key] += pair.Value; TeamGamesPlayed[pair.Key] += pair.Value; TeamDaysPlayed[pair.Key] += pair.Value; } foreach (KeyValuePair <string, int> pair in validator.AwayTeamCounts) { if (!TeamAwayGamesPlayed.ContainsKey(pair.Key)) { AddStringKeyToDictionary(pair.Key, TeamHomeGamesPlayed, TeamAwayGamesPlayed, TeamDaysPlayed, TeamGamesPlayed); } TeamAwayGamesPlayed[pair.Key] += pair.Value; TeamGamesPlayed[pair.Key] += pair.Value; TeamDaysPlayed[pair.Key] += pair.Value; } }); if (!IsUnevenScheduleOkay) { int games = -1; foreach (KeyValuePair <string, int> data in TeamGamesPlayed) { if (games == -1) { games = data.Value; } if (data.Value != games) { gameMessages.Add("Not all teams play the same number of games"); } } } if (!IsUnevenHomeAwayOkay) { int homeGames = -1; int awayGames = -1; foreach (KeyValuePair <string, int> data in TeamGamesPlayed) { if (homeGames == -1) { homeGames = TeamHomeGamesPlayed[data.Key]; } if (awayGames == -1) { awayGames = TeamAwayGamesPlayed[data.Key]; } if (homeGames != awayGames) { gameMessages.Add("Team : " + data.Key + " has " + homeGames + " home games and " + awayGames + " away games"); } } } ErrorMessages.AddRange(gameMessages); ErrorMessages.AddRange(scheduleMessages); ErrorMessages.AddRange(dayMessages); return(ErrorMessages.Count == 0); }