public async Task <TeamHistory> getHistory(int teamId)
    {
        TeamHistory value = null;
        var         found = _footballerCache.history.TryGetValue(teamId, out value);

        if (!found)
        {
            var numAttempts = 0;
            while (teamId != 0 && value == null && numAttempts < _maxAttempts)
            {
                if (numAttempts > 0)
                {
                    _log.Warn($"Retrying history request for {teamId}");
                }
                numAttempts++;
                value = await readHistory(teamId);

                if (value != null)
                {
                    _footballerCache.history[teamId] = value;
                }
            }
        }
        return(value);
    }
Example #2
0
    public async Task <IDictionary <int, Record> > simulate()
    {
        TeamHistory team1History = await getHistory(_team1Id);

        TeamHistory team2History = await getHistory(_team2Id);

        return(await simulate(team1History, team2History));
    }
Example #3
0
    protected async Task <int> getGameweekPoints(int gameweek, TeamHistory team)
    {
        var pts = team?.history.Where(h => h.eventId == gameweek).FirstOrDefault()?.points;

        if (pts == null)
        {
            var evt = await _client.getEvent(gameweek);

            pts = evt?.average_entry_score ?? 0;
        }
        return(pts.Value);
    }
Example #4
0
 /// <summary>
 /// Method that returns the strings without spaces
 /// </summary>
 /// <param name="pTeamHistory">The object TeamHistory we want to remove the spaces</param>
 /// <returns>Returns the object TeamHistory</returns>
 private TeamHistory returnWithoutSpaces(TeamHistory pTeamHistory)
 {
     if (pTeamHistory != null)
     {
         if (pTeamHistory.id_employee != null)
         {
             pTeamHistory.id_employee = pTeamHistory.id_employee.Trim();
         }
         if (pTeamHistory.id_team != null)
         {
             pTeamHistory.id_team = pTeamHistory.id_team.Trim();
         }
     }
     return(pTeamHistory);
 }
 public ProcessedTeam(int teamId, EntryData ent, List <ProcessedPick> processedPicks, Score s, List <TeamMatchEvent> eventList, string chip, TeamHistory hist, List <string> frm)
 {
     id         = teamId;
     picks      = processedPicks;
     score      = s;
     events     = eventList;
     entry      = ent;
     activeChip = chip;
     history    = hist;
     form       = frm;
     if (!string.IsNullOrEmpty(activeChip))
     {
         _log.Info(entry.entry.name + ": " + activeChip);
     }
 }
Example #6
0
    protected async Task <IDictionary <int, Record> > simulate(TeamHistory team1, TeamHistory team2)
    {
        Record r1      = new Record();
        Record r2      = new Record();
        var    records = new Dictionary <int, Record>();

        records[team1?.entry?.id ?? 0] = r1;
        records[team2?.entry?.id ?? 0] = r2;
        int minGw = Math.Max(findMinGameweek(team1), findMinGameweek(team2));
        int maxGw = Math.Min(findMaxGameweek(team1), findMaxGameweek(team2));

        for (int gw = minGw; gw <= maxGw; gw++)
        {
            await updateRecords(gw, team1, team2, r1, r2);
        }
        return(records);
    }
Example #7
0
    protected async Task updateRecords(int gameweek, TeamHistory team1, TeamHistory team2, Record r1, Record r2)
    {
        int pts1 = await getGameweekPoints(gameweek, team1);

        int pts2 = await getGameweekPoints(gameweek, team2);

        if (pts1 > pts2)
        {
            r1.wins++;
            r2.losses++;
        }
        else if (pts1 < pts2)
        {
            r1.losses++;
            r2.wins++;
        }
        else if (pts1 == pts2)
        {
            r1.draws++;
            r2.draws++;
        }
    }
Example #8
0
 public ProcessedMatchTeam(int teamId, EntryData ent, Standing stand, List <ProcessedPick> processedPicks, Score s, List <TeamMatchEvent> eventList, string chip, TeamHistory history, List <string> form)
     : base(teamId, ent, processedPicks, s, eventList, chip, history, form)
 {
     standing = stand;
 }
Example #9
0
        public async Task <IActionResult> GetLeague()
        {
            Bootstrap bootstrap = await _fplApiWrapper.GetBootstrap();

            int gameWeekCount = bootstrap.events.Count;

            LeagueStanding leagueData = await _fplApiWrapper.GetLeagueStanding(_appSettings.LeagueId);

            Models.View.League league = new Models.View.League()
            {
                FplLeagueId = leagueData.league.id.ToString(),
                Name        = leagueData.league.name,
                Players     = new List <Player>()
            };

            foreach (var standing in leagueData.standings.results)
            {
                Player player = new Player
                {
                    Name        = standing.player_name,
                    TeamName    = standing.entry_name,
                    FplPlayerId = standing.entry.ToString(),
                    Gameweeks   = new List <Gameweek>()
                };

                TeamHistory teamHistory = await _fplApiWrapper.GetTeamHistory(standing.entry.ToString());

                //todo: get scored goals to decide a tie-breaker

                foreach (var gw in teamHistory.current)
                {
                    player.Gameweeks.Add(new Gameweek()
                    {
                        Number        = gw.@event,
                        Points        = gw.points,
                        PointsOnBench = gw.points_on_bench,
                        GameweekRank  = gw.rank,
                        Transfers     = gw.event_transfers,
                        TransferCosts = gw.event_transfers_cost,
                        OverallPoints = gw.total_points,
                        OverallRank   = gw.overall_rank,
                        Value         = gw.value
                    });
                }

                foreach (var chip in teamHistory.chips)
                {
                    player.Gameweeks.First(x => x.Number == chip.@event).Chip = chip.name;
                }

                Models.Data.Cup cup = await _fplApiWrapper.GetCup(standing.entry.ToString());

                foreach (var cupMatch in cup.cup_matches)
                {
                    player.Gameweeks.First(x => x.Number == cupMatch.@event).Cup = new Models.View.Cup()
                    {
                        HomeFplPlayerId = cupMatch.entry_1_entry.ToString(),
                        HomeName        = cupMatch.entry_1_player_name,
                        HomeTeamName    = cupMatch.entry_1_name,
                        HomePoints      = cupMatch.entry_1_points,
                        AwayFplPlayerId = cupMatch.entry_2_entry.ToString(),
                        AwayName        = cupMatch.entry_2_player_name,
                        AwayTeamName    = cupMatch.entry_2_name,
                        AwayPoints      = cupMatch.entry_2_points,
                        GameweekNumber  = cupMatch.@event,
                        Winner          = cupMatch.winner
                    };
                }

                league.Players.Add(player);
            }

            List <PlayerStanding> playerStandings = Calculations.CalculateLeagueStandings(league);

            return(Ok(playerStandings.OrderByDescending(x => x.Points)));
        }
Example #10
0
 protected int findMaxGameweek(TeamHistory team)
 {
     return(team?.history.Select(h => h.eventId).Max() ?? 1000000);
 }
Example #11
0
 protected int findMinGameweek(TeamHistory team)
 {
     return(team?.history.Select(h => h.eventId).Min() ?? 0);
 }