Example #1
0
        public static Matchups[] GetAllMatchups(Match[] matches)
        {
            MatchupsAggregator aggregator = new MatchupsAggregator(matches);
            string[] teams = GetTeams(matches);

            foreach (string team in teams)
            {
                aggregator.ProcessTeam(team);
            }

            Matchups[] matchupsArray = aggregator.GetMatchups();
            return matchupsArray;
        }
Example #2
0
        public static bool TryGetMatchups(Match[] matches, string team, out Matchups matchups)
        {
            IEnumerable<Match> matchesWithTeam = matches.Where(x => x.Team1.Item1 == team || x.Team2.Item1 == team);
            int matchesWithTeamCount = matchesWithTeam.Count();

            if ((matchesWithTeamCount != 1) && (matchesWithTeamCount != MATCHES_ON_PAGE))
            {
                matchups = null;
                return false;
            }

            IEnumerator<Match> matchesEnumerator = matchesWithTeam.GetEnumerator();
            matchesEnumerator.MoveNext();
            Match match1 = RearrangeMatch(matchesEnumerator.Current, team);
            double chance1 = CalcChance(match1.Team1.Item2, match1.Team2.Item2);

            if (matchesWithTeamCount == 1)
            {
                matchups = new Matchups(
                    team,
                    chance1,
                    match1.Team2.Item1,
                    chance1,
                    String.Empty,
                    Double.NaN);
                return true;
            }

            matchesEnumerator.MoveNext();
            Match match2 = RearrangeMatch(matchesEnumerator.Current, team);
            double chance2 = CalcChance(match2.Team1.Item2, match2.Team2.Item2);
            matchups = new Matchups(
                team,
                chance1 + chance2,
                match1.Team2.Item1,
                chance1,
                match2.Team2.Item1,
                chance2);
            return true;
        }
Example #3
0
        private static string[] GetTeams(Match[] matches)
        {
            List<string> teams = new List<string>();

            foreach(Match match in matches)
            {
                teams.Add(match.Team1.Item1);
                teams.Add(match.Team2.Item1);
            }

            IEnumerable<string> distinctTeams = teams.Distinct();
            string[] teamsArray = distinctTeams.ToArray();
            return teamsArray;
        }
Example #4
0
 // moves the specified team to be first in the match
 private static Match RearrangeMatch(Match match, string team)
 {
     if (match.Team1.Item1 == team)
     {
         return match;
     }
     else if (match.Team2.Item1 == team)
     {
         Tuple<string, double> odds1 = new Tuple<string, double>(match.Team2.Item1, match.Team2.Item2);
         Tuple<string, double> odds2 = new Tuple<string, double>(match.Team1.Item1, match.Team1.Item2);
         Match rearrangedMatch = new Match(match.Date, odds1, odds2);
         return rearrangedMatch;
     }
     else
     {
         string exception = String.Format("the team {0} was not found in the match", team);
         throw new Exception(exception);
     }
 }
 public MatchupsAggregator(Match[] matches)
 {
     this.matches = matches;
 }
Example #6
0
        private void ProcessMatchRow(HtmlNode row)
        {
            IEnumerable<HtmlNode> cells = row.ChildNodes.Where(x => x.GetAttributeValue(ODDS_ATTRIBUTE) != String.Empty);
            int cellsCount = cells.Count();

            if (cellsCount != TEAMS_IN_MATCH)
            {
                return;
            }

            IEnumerator<HtmlNode> cellsEnumerator = cells.GetEnumerator();
            cellsEnumerator.MoveNext();
            Tuple<string, double> odds1 = GetTeamOdds(cellsEnumerator.Current);
            cellsEnumerator.MoveNext();
            Tuple<string, double> odds2 = GetTeamOdds(cellsEnumerator.Current);
            Match match = new Match(currentDate, odds1, odds2);
            matches.Add(match);
        }