public BaseResultDto <List <PlayerSeasonStatisticsDto> > GetPlayers(IEnumerable <SeasonDto> seasons) { var result = new BaseResultDto <List <PlayerSeasonStatisticsDto> >(); var players = new List <PlayerSeasonStatisticsDto>(); result.Status = true; var dataPath = Utility.GetApplicationSetting <string>("PathToDataFiles"); foreach (var season in seasons) { var pythonResult = PythonUtility.ExecutePythonScript(new PythonRequestDto { Command = Utility.GetApplicationSetting <string>("PlayerScript"), Params = new string[] { season.StartYear.ToString(), season.League.Name } }); if (pythonResult.Status) { var fname = result.DataObject; var data = Utility.GetFileData(dataPath + pythonResult.Output); foreach (var line in data.Skip(1)) { var lineAsList = Utility.CsvRowToList(line); int externalId = 0; int assists = 0; int bps = 0; int cs = 0; int goals = 0; int og = 0; int pm = 0; int rc = 0; int yc = 0; int min = 0; int apps = 0; Constants.PositionEnum pos; double xa = 0.0; double xa90 = 0.0; double xg = 0.0; double xg90 = 0.0; double cost = 0.0; var parseStatus = int.TryParse(lineAsList[0], out externalId); parseStatus &= int.TryParse(lineAsList[1], out assists); parseStatus &= int.TryParse(lineAsList[2], out bps); parseStatus &= int.TryParse(lineAsList[3], out cs); parseStatus &= Enum.TryParse(lineAsList[4], out pos); parseStatus &= int.TryParse(lineAsList[5], out goals); parseStatus &= double.TryParse(lineAsList[7].Replace(".", ","), out cost); parseStatus &= int.TryParse(lineAsList[8], out og); parseStatus &= int.TryParse(lineAsList[9], out pm); parseStatus &= int.TryParse(lineAsList[10], out rc); parseStatus &= int.TryParse(lineAsList[11], out yc); parseStatus &= int.TryParse(lineAsList[15], out apps); parseStatus &= int.TryParse(lineAsList[16], out min); parseStatus &= double.TryParse(lineAsList[20].Replace(".", ","), out xa); parseStatus &= double.TryParse(lineAsList[22].Replace(".", ","), out xa90); parseStatus &= double.TryParse(lineAsList[19].Replace(".", ","), out xg); parseStatus &= double.TryParse(lineAsList[21].Replace(".", ","), out xg90); cost /= 10; if (parseStatus) { if (lineAsList[12] == "Teemu Pukki") { var t = 1; } var playerStatisticsDto = new PlayerSeasonStatisticsDto { Player = new PlayerDto { ExternalId = externalId, Name = lineAsList[12], SecondName = "", LastCost = cost, Position = pos }, SeasonTeam = new SeasonTeamDto { Season = season, Team = new TeamDto { Name = ConvertDoubleTeam(lineAsList[14]) } }, Assists = assists, BonusPointSystem = bps, CleanSheets = cs, Goals = goals, OwnGoals = og, PenaltiesMissed = pm, RedCards = rc, XA = xa, XA90 = xa90, XG = xg, XG90 = xg90, YellowCards = yc, MinutesPlayed = min, Apps = apps }; players.Add(playerStatisticsDto); } else { _logger.Info($"Couldnt parse line: {line}"); } } } } result.DataObject = players; return(result); }
public BaseResultDto <List <SeasonTeamDto> > GetTeams(IEnumerable <SeasonDto> seasons) { var result = new BaseResultDto <List <SeasonTeamDto> >(); result.DataObject = new List <SeasonTeamDto>(); var dataPath = Utility.GetApplicationSetting <string>("PathToDataFiles"); foreach (var season in seasons) { var pythonRequest = new PythonRequestDto { Command = Utility.GetApplicationSetting <string>("TeamScript"), Params = new string[] { season.StartYear.ToString(), season.League.Name } }; var pythonResult = PythonUtility.ExecutePythonScript(pythonRequest); if (pythonResult.Status) { var cleanSheetsFile = Utility.GetFileData(dataPath + "team_Fpl.csv"); foreach (var line in Utility.GetFileData(dataPath + pythonResult.Output).Skip(1)) { var lineAsList = Utility.CsvRowToList(line); int position; int matches; int won; int drawn; int lost; int goals; int goalsAgainst; int points; double xG; double xGAgainst; double xPoints; var status = int.TryParse(lineAsList[0], out position); status &= int.TryParse(lineAsList[2], out matches); status &= int.TryParse(lineAsList[3], out won); status &= int.TryParse(lineAsList[4], out drawn); status &= int.TryParse(lineAsList[5], out lost); status &= int.TryParse(lineAsList[6], out goals); status &= int.TryParse(lineAsList[7], out goalsAgainst); status &= int.TryParse(lineAsList[8], out points); status &= double.TryParse(lineAsList[9].StripXValues().Replace(".", ","), out xG); status &= double.TryParse(lineAsList[10].StripXValues().Replace(".", ","), out xGAgainst); status &= double.TryParse(lineAsList[11].StripXValues().Replace(".", ","), out xPoints); if (status) { var seasonTeam = new SeasonTeamDto { Season = season, Team = new TeamDto { Name = ConvertDoubleTeam(lineAsList[1]) }, Drawn = drawn, GoalsAgainst = goalsAgainst, GoalsFor = goals, Lost = lost, GamesPlayed = matches, Points = points, Position = position, Won = won, XGAgainst = xGAgainst, XGFor = xG, XPoints = xPoints }; result.DataObject.Add(seasonTeam); } } var nextPosition = true; var nextTeam = false; var nextCS = false; SeasonTeamDto st = null; foreach (var line in cleanSheetsFile) { if (nextPosition) { nextPosition = false; nextTeam = true; nextCS = false; continue; } int cs; if (nextTeam) { st = result.DataObject.FirstOrDefault(r => r.Team.Name.Equals(line) && r.Season.Id == season.Id); if (st == null) { var tt = 1; } nextPosition = false; nextTeam = false; nextCS = true; continue; } var status = int.TryParse(line, out cs); if (!status || st == null) { throw new Exception(); } st.CleanSheets = cs; st = null; nextPosition = true; nextTeam = false; nextCS = false; } //foreach (var line in cleanSheetsFile) //{ // var csLineAsList = Utility.CsvRowToList(line); // int cs; // var st = result.DataObject.FirstOrDefault(r => r.Team.Name.Equals(csLineAsList[1]) // && r.Season.Id == season.Id); // var status = int.TryParse(csLineAsList[2], out cs); // if (!status || st == null) // { // throw new Exception(); // } // st.CleanSheets = cs; //} } else { var e = new Exception(pythonResult.ErrorMessage); _logger.Error(e, "Could not parse team data"); throw e; } } //result.Status = result.DataObject.Count/seasons.Count() == 20; result.Status = true; return(result); }