public void CheckTeamsHaveEncountersOnTheSameDayOnAGivenListShouldReturnFalse() { ICollection <EncountersTeams> teams = new List <EncountersTeams>() { eNacional, ePeñarol }; DateTime date = new DateTime(2018, 9, 27, 8, 30, 00); ICollection <Encounter> encounterList = new List <Encounter>(); Encounter encounter = new Encounter() { Id = 1, Teams = teams, SportId = football.Id, Date = date }; Encounter encounter2 = new Encounter() { Id = 2, Teams = teams, SportId = football.Id, Date = date.AddDays(1) }; encounterList.Add(encounter); encounterList.Add(encounter2); Encounter newEncounter = new Encounter() { Id = 3, Teams = teams, SportId = football.Id, Date = date.AddDays(2) }; Assert.IsFalse(encounterBL.TeamsHaveEncountersOnTheSameDay(encounterList, newEncounter)); }
public ICollection <Encounter> GenerateFixture(IEnumerable <Team> teams, DateTime date) { if (teams.Count() < 2) { throw new NotEnoughTeamsForEncounterException("Not enough teams to create round robin encounters."); } DateTime newDate = date.AddDays(1); List <Team> teamList = teams.ToList(); ICollection <Encounter> encounters = new List <Encounter>(); foreach (Team team in teams) { teamList.Remove(team); EncountersTeams eTeam = new EncountersTeams() { Team = team, TeamId = team.Id }; foreach (Team rival in teamList) { EncountersTeams eRival = new EncountersTeams() { Team = rival, TeamId = rival.Id }; ICollection <EncountersTeams> opponents = new List <EncountersTeams>() { eTeam, eRival }; Encounter encounter = new Encounter() { Teams = opponents, SportId = team.SportId, Date = date }; while (encounterBL.TeamsHaveEncountersOnTheSameDay(encounter) || encounterBL.TeamsHaveEncountersOnTheSameDay(encounters, encounter)) { encounter.Date = encounter.Date.AddDays(1); } encounters.Add(encounter); Encounter encounter2 = new Encounter() { Teams = opponents, SportId = team.SportId, Date = date }; while (encounterBL.TeamsHaveEncountersOnTheSameDay(encounter2) || encounterBL.TeamsHaveEncountersOnTheSameDay(encounters, encounter2)) { encounter2.Date = encounter2.Date.AddDays(1); } encounters.Add(encounter2); } } return(encounters); }