예제 #1
0
        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);
                }
            }
        }
예제 #2
0
파일: Program.cs 프로젝트: pollacm/RML
        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);
        }
예제 #3
0
 public void Before()
 {
     sut = new RankingGenerator(new CFBPredictor.Models.NCAA());
 }