// GET: /user/statistics/player/{playerName}/league/{leagueName}/season/{season}/round/{round} public ActionResult PlayerRound(string playerName, string leagueName, string season, int round) { var playerId = Players.GetIdByName(playerName); var leagueId = Leagues.GetIdByName(leagueName); var seasonPeriod = Seasons.GetSeasonPeriodFromUrlParameter(season, '-'); var seasonId = Seasons.GetIdByPeriod(seasonPeriod); var leaguesSeasonsId = LeaguesSeasons.GetIdByLeagueAndSeason(leagueId, seasonId); var roundId = Rounds.GetRoundId(round, leaguesSeasonsId); var statistics = Statistics.PlayerRoundStats(playerId, roundId); return(View("PlayerLeague", statistics)); }
protected override void Seed(FootballDbContext context) { var directory = AssemblyHelpers.GetDirectoryForAssembly(Assembly.GetExecutingAssembly()); var fileLeagues = directory + "/Files/Leagues.txt"; this.SeedRoles(context); this.SeedUsers(context); this.SeedCountries(context); this.SeedLeagues(context, fileLeagues); this.SeedSeasons(context); context.SaveChanges(); var leagues = new HashSet <League>(); foreach (var league in context.Leagues) { leagues.Add(league); } foreach (var season in context.Seasons) { foreach (var league in leagues) { var leagueSeason = new LeaguesSeasons() { League = league, Season = season }; context.LeaguesSeasons.Add(leagueSeason); } } context.SaveChanges(); foreach (var ls in context.LeaguesSeasons) { int index; if (ls.League.Name != "PremierLeague") { index = 46; } else { index = 38; } for (int i = 1; i <= index; i++) { var round = new Round() { Number = i, LeagueSeason = ls }; context.Rounds.Add(round); } } context.SaveChanges(); var fileTeams = directory + "/Files/Teams-Towns-Stadiums-Capacity-OrderedByClub.txt"; using (var parser = new StreamReader(fileTeams)) { while (!parser.EndOfStream) { var line = parser.ReadLine(); var info = line.Split(','); var stadiumName = info[1]; var cityName = info[2]; var stadiumCapacity = int.Parse(info[3]); var teamName = info[4]; var yearEstablished = DateTime.ParseExact(info[5], "yyyy", CultureInfo.InvariantCulture); var competitionName = info[6]; var managerName = info[7]; var countryName = info[8]; var managerBirthDate = DateTime.ParseExact(info[9], "d-mm-yyyy", CultureInfo.InvariantCulture); // var manageAppointDate = DateTime.ParseExact(info[10], "d-mm-yyyy",System.Globalization.CultureInfo.InvariantCulture); var country = context.Countries .FirstOrDefault(c => c.Name == countryName); var town = new Town() { Name = cityName, Country = country }; var manager = new Manager() { Name = managerName, // Birthdate = managerBirthDate, Country = country }; var stadium = new Stadium() { Name = stadiumName, Capacity = stadiumCapacity, Town = town }; var team = new Team() { Name = teamName, Established = yearEstablished, Manager = manager, Stadium = stadium }; context.Managers.Add(manager); context.Towns.Add(town); context.Stadiums.Add(stadium); context.Teams.Add(team); } } context.SaveChanges(); var fileGames = directory + "/Files/Test-Games.txt"; using (var reader = new StreamReader(fileGames)) { var round = 1; var roundGame = 0; while (!reader.EndOfStream) { var line = reader.ReadLine(); var info = line.Split(','); var period = info[0]; var startYear = int.Parse(info[0].Split('-')[0]); var endYear = int.Parse(info[0].Split('-')[1]); var leagueName = info[1]; var defaultDate = new DateTime(1999, 01, 01); var matchDate = DateTime.TryParseExact(info[2], "dd/mm/yy", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out defaultDate); var homeTeamName = info[3]; var awayTeamName = info[4]; var homeGoalsFullTime = info[5]; var awayGoalsFullTime = info[6]; var homeGoalsHalfTime = info[7]; var awayGoalsHalfTime = info[8]; var attendance = info[9]; var refereeName = info[10]; var homeShoots = info[11]; var awayShoots = info[12]; var homeShootsOnTarget = info[13]; var awayShootsOnTarget = info[14]; var homeCorners = info[17]; var awayCorners = info[18]; var homeFouls = info[19]; var awayFouls = info[20]; var homeYellowCards = info[23]; var awayYellowCards = info[24]; var homeRedCards = info[25]; var awayRedCards = info[26]; roundGame++; switch (leagueName) { case "PremierLeague": if (roundGame % 10 == 0) { round++; roundGame = 0; if (round == 39) { round = 1; } } break; case "ChampionShip": if (roundGame % 12 == 0) { round++; roundGame = 0; if (round == 47) { round = 1; } } break; case "LeagueOne": if (round % 12 == 0) { round++; roundGame = 0; if (round == 47) { round = 1; } } break; case "LeagueTwo": if (round % 12 == 0) { round++; roundGame = 0; if (round == 47) { round = 1; } } break; default: round = 12; break; } var leagueSeason = context.LeaguesSeasons .FirstOrDefault( ls => ls.League.Name == leagueName && ls.Season.StartYear == startYear); var currRound = context.Rounds.FirstOrDefault(r => r.Number == round && r.LeaguesSeasonsId == leagueSeason.Id); var homeTeam = context.Teams.FirstOrDefault(t => t.Name == homeTeamName); var awayTeam = context.Teams.FirstOrDefault(t => t.Name == awayTeamName); int hgft, agft, hc, ac, hf, af, hs, aws, hst, awst, hyc, ayc, hrc, arc, att; var game = new Game() { Round = currRound, HomeTeam = homeTeam, AwayTeam = awayTeam, HomeGoals = int.TryParse(homeGoalsFullTime, out hgft) ? int.Parse(homeGoalsFullTime) : 0, AwayGoals = int.TryParse(awayGoalsFullTime, out agft) ? int.Parse(awayGoalsFullTime) : 0, HomeCorners = int.TryParse(homeCorners, out hc) ? int.Parse(homeCorners) : 0, AwayCorners = int.TryParse(awayCorners, out ac) ? int.Parse(awayCorners) : 0, HomeFouls = int.TryParse(homeFouls, out hf) ? int.Parse(homeFouls) : 0, AwayFouls = int.TryParse(awayFouls, out af) ? int.Parse(awayFouls) : 0, HomeShots = int.TryParse(homeShoots, out hs) ? int.Parse(homeShoots) : 0, AwayShots = int.TryParse(awayShoots, out aws) ? int.Parse(awayShoots) : 0, HomeShotsOnTarget = int.TryParse(homeShootsOnTarget, out hst) ? int.Parse(homeShootsOnTarget) : 0, AwayShotsOnTarget = int.TryParse(awayShootsOnTarget, out awst) ? int.Parse(awayShootsOnTarget) : 0, HomeYellowCards = int.TryParse(homeYellowCards, out hyc) ? int.Parse(homeYellowCards) : 0, AwayYellowCards = int.TryParse(awayYellowCards, out ayc) ? int.Parse(awayYellowCards) : 0, HomeRedCards = int.TryParse(homeRedCards, out hrc) ? int.Parse(homeRedCards) : 0, AwayRedCards = int.TryParse(awayRedCards, out arc) ? int.Parse(awayRedCards) : 0, Attendance = int.TryParse(attendance, out att) ? int.Parse(attendance) : 0, StartDate = defaultDate }; context.Games.Add(game); } } context.SaveChanges(); var filePlayers = directory + "/Files/Players.txt"; using (var reader = new StreamReader(filePlayers)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var info = line.Split(','); // DateTime matchDate; // DateTime.TryParseExact(info[0], "dd/mm/yy", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out matchDate); var lastName = info[2]; var firstName = info[3]; var playerName = firstName + " " + lastName; var teamName = info[4]; var opponent = info[6]; var venue = info[8]; var position = int.Parse(info[9]); var minutesPlayed = int.Parse(info[10]); var starts = int.Parse(info[11]); var subOn = int.Parse(info[12]); var subOff = int.Parse(info[13]); var goals = int.Parse(info[14]); var penaltyGoals = int.Parse(info[15]); var penaltySaved = int.Parse(info[16]); var penaltyMissed = int.Parse(info[17]); var successPasses = int.Parse(info[29]); var unSuccessPasses = int.Parse(info[30]); var assists = int.Parse(info[31]); var keyPasses = int.Parse(info[32]); var successDribbles = int.Parse(info[33]); var unSuccessDribbles = int.Parse(info[34]); var tacklesWon = int.Parse(info[36]); var tacklesLost = int.Parse(info[37]); var offsides = int.Parse(info[40]); var yellowCards = int.Parse(info[41]); var redCards = int.Parse(info[42]); var savesMade = int.Parse(info[43]); var seasonStartYear = int.Parse(info[47]); var team = context.Teams.FirstOrDefault(t => t.Name == teamName); Player player; if (!context.Players.Any(p => p.Name == playerName)) { player = new Player() { Name = playerName, CurrentTeam = team, Position = (Position)position }; context.Players.Add(player); } else { player = context.Players.FirstOrDefault(p => p.Name == playerName); } string homeTeam, awayTeam; if (venue == "Home") { homeTeam = teamName; awayTeam = opponent; } else { homeTeam = opponent; awayTeam = teamName; } var game = context.Games.FirstOrDefault(g => g.HomeTeam.Name == homeTeam && g.AwayTeam.Name == awayTeam && g.Round.LeagueSeason.Season.StartYear == seasonStartYear && g.Round.LeagueSeason.League.Name == "PremierLeague"); //var game = // context.Games.FirstOrDefault(g => g.HomeTeam.Name == homeTeam && g.AwayTeam.Name == awayTeam && g.Round.LeagueSeason.Season.EndYear == 2012); while (goals > 0) { var gameStat = new GameStats { Action = Models.Action.Goal, Game = game, Player = player, Team = team }; context.GamesStats.Add(gameStat); goals--; } while (assists > 0) { var gameStat = new GameStats { Action = Models.Action.Assists, Game = game, Player = player, Team = team }; context.GamesStats.Add(gameStat); assists--; } while (yellowCards > 0) { var gameStat = new GameStats { Action = Models.Action.YellowCard, Game = game, Player = player, Team = team }; context.GamesStats.Add(gameStat); yellowCards--; } while (redCards > 0) { var gameStat = new GameStats { Action = Models.Action.RedCard, Game = game, Player = player, Team = team }; context.GamesStats.Add(gameStat); redCards--; } if (minutesPlayed > 0) { var gameStat = new GameStats { Action = Models.Action.Played, Game = game, Player = player, Team = team, Time = minutesPlayed }; context.GamesStats.Add(gameStat); } context.SaveChanges(); } } context.SaveChanges(); }