private void uxCompile_Click(object sender, EventArgs e) { if (SetFilter()) { ClearRankings(); if (ScoreCompiler.ReadScores(uxYear.Text, SCORES_PATH)) { ncaa = ScoreCompiler.ncaa; RankingGenerator rankingGenerator = new RankingGenerator(ncaa); List <Team> FinalRankings = rankingGenerator.GenerateRankings(); AddRankings(FinalRankings); } } }
private static List <ITrophy> AssignTrophies(Week currentWeek, List <PlayerOfTheWeek> opsOfTheWeek, List <PlayerOfTheWeek> dpsOfTheWeek, ChromeDriver driver) { var trophies = new List <ITrophy>(); //500 club var winners = currentWeek.Scores.Where(s => s.AwayTeam.TeamPoints >= 500 && s.AwayTeam.TeamPoints < 600).Select(s => s.AwayTeam).ToList(); winners.AddRange(currentWeek.Scores.Where(s => s.HomeTeam.TeamPoints >= 500 && s.HomeTeam.TeamPoints < 600).Select(s => s.HomeTeam)); var trophyAssigner = new TrophyAssigner(driver, year); foreach (var team in winners.OrderByDescending(t => t.TeamPoints)) { trophies.Add(trophyAssigner.AssignTrophy(currentWeek, team, new FiveHundredClubTrophy(team, string.Empty))); } //600 club winners = currentWeek.Scores.Where(s => s.AwayTeam.TeamPoints >= 600 && s.AwayTeam.TeamPoints < 700).Select(s => s.AwayTeam).ToList(); winners.AddRange(currentWeek.Scores.Where(s => s.HomeTeam.TeamPoints >= 600 && s.HomeTeam.TeamPoints < 700).Select(s => s.HomeTeam)); foreach (var team in winners.OrderByDescending(t => t.TeamPoints)) { trophies.Add(trophyAssigner.AssignTrophy(currentWeek, team, new SixHundredClubTrophy(team, string.Empty))); } //700 club winners = currentWeek.Scores.Where(s => s.AwayTeam.TeamPoints >= 700).Select(s => s.AwayTeam).ToList(); winners.AddRange(currentWeek.Scores.Where(s => s.HomeTeam.TeamPoints >= 700).Select(s => s.HomeTeam)); foreach (var team in winners.OrderByDescending(t => t.TeamPoints)) { trophies.Add(trophyAssigner.AssignTrophy(currentWeek, team, new SevenHundredClubTrophy(team, string.Empty))); } //ballers/losers var largestMargin = currentWeek.Scores.OrderByDescending(s => s.MarginOfVictory).First().MarginOfVictory; var ballersAndMeeksOfTheWeek = currentWeek.Scores.Where(s => s.MarginOfVictory == largestMargin); foreach (var score in ballersAndMeeksOfTheWeek) { if (score.HomeTeam.TeamPoints > score.AwayTeam.TeamPoints) { trophies.Add(trophyAssigner.AssignTrophy(currentWeek, score.HomeTeam, new BallerOfTheWeekTrophy(score.HomeTeam, score.MarginOfVictory.ToString(CultureInfo.InvariantCulture)))); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, score.AwayTeam, new LoserOfTheWeekTrophy(score.AwayTeam, score.MarginOfVictory.ToString(CultureInfo.InvariantCulture)))); } else { trophies.Add(trophyAssigner.AssignTrophy(currentWeek, score.AwayTeam, new BallerOfTheWeekTrophy(score.AwayTeam, score.MarginOfVictory.ToString(CultureInfo.InvariantCulture)))); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, score.HomeTeam, new LoserOfTheWeekTrophy(score.HomeTeam, score.MarginOfVictory.ToString(CultureInfo.InvariantCulture)))); } } Thread.Sleep(2000); //ops var teams = currentWeek.Scores.Select(s => s.HomeTeam).ToList(); teams.AddRange(currentWeek.Scores.Select(s => s.AwayTeam)); foreach (var op in opsOfTheWeek) { string additionalInfo = JsonConvert.SerializeObject(op); var team = teams.Single(t => t.TeamAbbreviation == op.TeamAbbreviation); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, team, new OffensivePlayerOfTheWeekTrophy(team, additionalInfo))); } //dps foreach (var dp in dpsOfTheWeek) { string additionalInfo = JsonConvert.SerializeObject(dp); var team = teams.Single(t => t.TeamAbbreviation == dp.TeamAbbreviation); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, team, new DefensivePlayerOfTheWeekTrophy(team, additionalInfo))); } if (currentWeek.WeekNumber == 13) { var rankingGenerator = new RankingGenerator(driver, year); var rankings = rankingGenerator.GenerateRankings(); //#1 ranked var topRanked = rankings.OrderBy(r => r.Rank).First(); var topRankedTeam = teams.Single(t => t.TeamName == topRanked.Team); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, topRankedTeam, new TopRankedSeasonTrophy(topRankedTeam, topRanked.Team))); //top scoring var standings = new StandingsGenerator(driver, year).GenerateStandings(); var highestScoringStanding = standings.OrderByDescending(s => s.PointsFor).First(); var standingInfo = JsonConvert.SerializeObject(highestScoringStanding); var highestScoringTeam = teams.Single(t => t.TeamName == highestScoringStanding.Team); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, highestScoringTeam, new HighestScoringSeasonTrophy(highestScoringTeam, standingInfo))); //OPOY driver.Navigate().GoToUrl($"http://games.espn.com/ffl/freeagency?leagueId=127291&seasonId={year}"); driver.WaitUntilElementExists(By.Id("playerTableContainerDiv")); var opLink = driver.FindElement(By.XPath("//ul[@class='filterToolsOptionSet']/li/a[contains(.,'OP')]")); opLink.Click(); Thread.Sleep(2000); var opRows = driver.FindElements(By.XPath("//tr[contains(@class, 'pncPlayerRow')]/td[3][not(contains(.,'FA'))]/parent::tr")); var opsOfTheYear = new List <PlayerOfTheWeek>(); var topPoints = 0m; foreach (var opRow in opRows) { var rowPoints = decimal.Parse(opRow.FindElement(By.XPath("./td[contains(@class, 'sortedCell')]")).Text); if (rowPoints >= topPoints) { topPoints = rowPoints; } else { break; } var opOfTheYear = new PlayerOfTheWeek(); opOfTheYear.Name = opRow.FindElement(By.XPath("./td[@class='playertablePlayerName']/a")).Text; opOfTheYear.Team = opRow.FindElement(By.XPath("./td[3]/a")).GetAttribute("title"); opOfTheYear.TeamAbbreviation = opRow.FindElement(By.XPath("./td[3]/a")).Text; opOfTheYear.PlayerId = int.Parse(opRow.FindElement(By.XPath("./td[@class='playertablePlayerName']/a")).GetAttribute("playerid")); opOfTheYear.Points = rowPoints; opsOfTheYear.Add(opOfTheYear); } //DPOY var dpLink = driver.FindElement(By.XPath("//ul[@class='filterToolsOptionSet']/li/a[contains(.,'DP')]")); dpLink.Click(); var dpsOfTheYear = new List <PlayerOfTheWeek>(); Thread.Sleep(2000); var dpRows = driver.FindElements(By.XPath("//tr[contains(@class, 'pncPlayerRow')]/td[3][not(contains(.,'FA'))]/parent::tr")); topPoints = 0m; foreach (var dpRow in dpRows) { var rowPoints = decimal.Parse(dpRow.FindElement(By.XPath("./td[contains(@class, 'sortedCell')]")).Text); if (rowPoints >= topPoints) { topPoints = rowPoints; } else { break; } var dpOfTheYear = new PlayerOfTheWeek(); dpOfTheYear.Name = dpRow.FindElement(By.XPath("./td[@class='playertablePlayerName']/a")).Text; dpOfTheYear.Team = dpRow.FindElement(By.XPath("./td[3]/a")).GetAttribute("title"); dpOfTheYear.TeamAbbreviation = dpRow.FindElement(By.XPath("./td[3]/a")).Text; dpOfTheYear.PlayerId = int.Parse(dpRow.FindElement(By.XPath("./td[@class='playertablePlayerName']/a")).GetAttribute("playerid")); dpOfTheYear.Points = rowPoints; dpsOfTheYear.Add(dpOfTheYear); } foreach (var opOfTheYear in opsOfTheYear) { var additionalInfo = JsonConvert.SerializeObject(opOfTheYear); var opoyTeam = teams.Single(t => t.TeamName == opOfTheYear.Team); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, opoyTeam, new OffensivePlayerOfTheYearTrophy(opoyTeam, additionalInfo))); } foreach (var dpOfTheYear in dpsOfTheYear) { var additionalInfo = JsonConvert.SerializeObject(dpOfTheYear); var dpoyTeam = teams.Single(t => t.TeamName == dpOfTheYear.Team); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, dpoyTeam, new DefensivePlayerOfTheYearTrophy(dpoyTeam, additionalInfo))); } //NFC champ var nfcChamp = rankings.Where(s => s.Division == "NFC").OrderBy(s => s.Rank).First(); var nfcChampionshipTeam = teams.Single(t => t.TeamName == nfcChamp.Team); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, nfcChampionshipTeam, new NfcDivisionChampionshipTrophy(nfcChampionshipTeam, string.Empty))); //AFC champ var afcChamp = rankings.Where(s => s.Division == "AFC").OrderBy(s => s.Rank).First(); var afcChampionshipTeam = teams.Single(t => t.TeamName == afcChamp.Team); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, afcChampionshipTeam, new AfcDivisionChampionshipTrophy(afcChampionshipTeam, string.Empty))); //#12 ranked var bottomRanked = rankings.OrderByDescending(r => r.Rank).First(); var bottomRankedTeam = teams.Single(t => t.TeamName == bottomRanked.Team); trophies.Add(trophyAssigner.AssignTrophy(currentWeek, bottomRankedTeam, new BottomRankedSeasonTrophy(bottomRankedTeam, bottomRanked.Team))); } return(trophies); }
public void Before() { sut = new RankingGenerator(new CFBPredictor.Models.NCAA()); }