static void Main(string[] args) { var context = new FootballEntities(); var doc = XDocument.Load("../../../leagues-and-teams.xml"); var leagues = doc.Root.Elements(); var leagueCounter = 1; try { foreach (var league in leagues) { Console.WriteLine("Processing league #{0} ...", leagueCounter); //League newLeague = new League(); var newLeague = ProcessLeague(context, league); var teamsNode = league.Element("teams"); if (teamsNode != null) { foreach (var team in teamsNode.Elements()) { ProcessTeam(context, team, newLeague); } } leagueCounter++; Console.WriteLine(); } } catch (ArgumentException ex) { Console.Error.WriteLine(ex.Message); } }
static void Main(string[] args) { var context = new FootballEntities(); var leagues = context.Leagues .Select(l => new { leagueName = l.LeagueName, teams = l.Teams.Select(t => t.TeamName).OrderBy(t => t) }) .OrderBy(l => l.leagueName) .ToList(); var serializer = new JavaScriptSerializer(); var json = serializer.Serialize(leagues); File.WriteAllText("../../../leagues-and-teams.json", json); }
private static League ProcessLeague(FootballEntities context, XElement league) { League newLeague = null; var leagueNode = league.Element("league-name"); if (leagueNode != null) { newLeague = context.Leagues.FirstOrDefault(l => l.LeagueName == leagueNode.Value); if (newLeague == null) { newLeague = new League() { LeagueName = leagueNode.Value }; context.Leagues.AddOrUpdate(newLeague); context.SaveChanges(); Console.WriteLine("Created league: {0}", newLeague.LeagueName); } else { Console.WriteLine("Existing league: {0}", newLeague.LeagueName); } } return newLeague; }
static void Main(string[] args) { var context = new FootballEntities(); var matches = context.InternationalMatches .Select(m => new Match() { HomeCountryName = m.HomeTeamCountry.CountryName, HomeCountryCode = m.HomeCountryCode, AwayCountryName = m.AwayTeamCountry.CountryName, AwayCountryCode = m.AwayCountryCode, Date = m.MatchDate, LeagueName = m.League.LeagueName, Score = m.HomeGoals + "-" + m.AwayGoals }) .OrderBy(m => m.Date) .ThenBy(m => m.HomeCountryName) .ThenBy(m => m.AwayCountryName) .ToList(); var xml = new XDocument(); var root = new XElement("matches"); xml.Add(root); foreach (var match in matches) { var matchNode = new XElement("match"); if (match.Date != null) { var date = match.Date.Value; if (date.Hour == 0 && date.Minute == 0) { matchNode.SetAttributeValue("date", date.ToString("dd-MMM-yyyy")); } else { matchNode.SetAttributeValue("date-time", date.ToString("dd-MMM-yyyy hh:mm")); } } var homeCountryNode = new XElement("home-country"); homeCountryNode.SetAttributeValue("code", match.HomeCountryCode); homeCountryNode.Value = match.HomeCountryName; matchNode.Add(homeCountryNode); var awayCountryNode = new XElement("away-country"); awayCountryNode.SetAttributeValue("code", match.AwayCountryCode); awayCountryNode.Value = match.AwayCountryName; matchNode.Add(awayCountryNode); if (match.Score != "-") { var scoreNode = new XElement("score", match.Score); matchNode.Add(scoreNode); } if (match.LeagueName != null) { var scoreNode = new XElement("league", match.LeagueName); matchNode.Add(scoreNode); } root.Add(matchNode); } xml.Save("../../../international-matches.xml"); }
private static void ProcessTeam(FootballEntities context, XElement team, League league) { var newTeam = new Team(); var name = team.Attribute("name"); if (name != null) { newTeam.TeamName = name.Value; } else { throw new ArgumentException("Team name is mandatory when team tag exists"); } var countryName = team.Attribute("country"); if (countryName != null) { var countryByName = context.Countries.FirstOrDefault(c => c.CountryName == countryName.Value); if (countryByName == null) { var message = string.Format("The given country does not exit in the database. {0}", countryName); throw new ArgumentException(message); } newTeam.Country = countryByName; } Team teamInDb = null; if (newTeam.Country != null) { teamInDb = context.Teams.FirstOrDefault(t => t.TeamName == newTeam.TeamName && t.Country.CountryName == newTeam.Country.CountryName); } if (teamInDb == null) { if (newTeam.Country != null) { Console.WriteLine("Created team: {0} ({1})", newTeam.TeamName, newTeam.Country.CountryName); } else { Console.WriteLine("Created team: {0} (no country)", newTeam.TeamName); } if (league != null) { newTeam.Leagues.Add(league); Console.WriteLine("Added team to league: {0} to league {1}", newTeam.TeamName, league.LeagueName); } context.Teams.AddOrUpdate(newTeam); context.SaveChanges(); } else { if (newTeam.Country != null) { Console.WriteLine("Existing team: {0} ({1})", newTeam.TeamName, newTeam.Country.CountryName); } else { Console.WriteLine("Existing team: {0} (no country)", newTeam.TeamName); } if (league != null) { if (teamInDb.Leagues.Any(l => l.LeagueName == league.LeagueName)) { teamInDb.Leagues.Add(league); Console.WriteLine("Existing team in league: {0} belongs to {1}", teamInDb.TeamName, teamInDb.Leagues.First().LeagueName); } else { teamInDb.Leagues.Add(league); context.SaveChanges(); Console.WriteLine("Added team to league: {0} to league {1}", newTeam.TeamName, league.LeagueName); } } } }