public async Task <GameweekEntry> GetEntryForGameweek(ClassicLeagueEntry entry, int gameweek) { try { var entryPicksTask = _entryClient.GetPicks(entry.Entry, gameweek); var entryPicks = await entryPicksTask; return(new GameweekEntry(entry.Entry, entry.PlayerName, entry.EntryName, entryPicks)); } catch (Exception e) { _logger.LogError(e.Message, e); return(null); } }
private async Task <VerifiedEntryStats> GetUpdatedStatsForEntry(int entryId, ICollection <Player> players) { var history = await _entryHistoryClient.GetHistory(entryId); var latestReportedGameweek = history.GameweekHistory.LastOrDefault(); if (latestReportedGameweek == null) { return(new VerifiedEntryStats( CurrentGwTotalPoints: 0, LastGwTotalPoints: 0, OverallRank: 0, PointsThisGw: 0, ActiveChip: null, Captain: null, ViceCaptain: null, Gameweek: 0)); } var picks = await _entryClient.GetPicks(entryId, latestReportedGameweek.Event); var captainId = picks.Picks.SingleOrDefault(p => p.IsCaptain)?.PlayerId; var viceCaptainId = picks.Picks.SingleOrDefault(p => p.IsViceCaptain)?.PlayerId; var lastGw = history.GameweekHistory.Count > 1 ? history.GameweekHistory.ElementAtOrDefault(history.GameweekHistory.Count - 2) : latestReportedGameweek; return(new VerifiedEntryStats( CurrentGwTotalPoints: latestReportedGameweek.TotalPoints, LastGwTotalPoints: lastGw.TotalPoints, OverallRank: latestReportedGameweek.OverallRank ?? 0, PointsThisGw: latestReportedGameweek.Points, ActiveChip: picks.ActiveChip, Captain: players.Get(captainId).WebName, ViceCaptain: players.Get(viceCaptainId).WebName, Gameweek: latestReportedGameweek.Event)); }
public async Task <string> GetCaptainsByGameWeek(int gameweek) { try { var league = await _leagueClient.GetClassicLeague(_options.Value.LeagueId); var players = await _playerClient.GetAllPlayers(); var sb = new StringBuilder(); sb.Append($":boom: *Captain picks for gameweek {gameweek}*\n"); foreach (var team in league.Standings.Entries) { try { var entry = await _entryClient.GetPicks(team.Entry, gameweek); var hasUsedTripleCaptainForGameWeek = await _chipsPlayed.GetHasUsedTripleCaptainForGameWeek(gameweek, team.Entry); var captainPick = entry.Picks.SingleOrDefault(pick => pick.IsCaptain); var captain = players.SingleOrDefault(player => player.Id == captainPick.PlayerId); var viceCaptainPick = entry.Picks.SingleOrDefault(pick => pick.IsViceCaptain); var viceCaptain = players.SingleOrDefault(player => player.Id == viceCaptainPick.PlayerId); sb.Append($"*{team.GetEntryLink(gameweek)}* - {captain.FirstName} {captain.SecondName} ({viceCaptain.FirstName} {viceCaptain.SecondName}) "); if (hasUsedTripleCaptainForGameWeek) { sb.Append("TRIPLECAPPED!! :rocket::rocket::rocket::rocket:"); } sb.Append("\n"); } catch (Exception e) { Console.WriteLine(e.Message); } } return(sb.ToString()); } catch (Exception e) { Console.WriteLine(e.Message); return($"Oops: {e.Message}"); } }
private async Task <GameweekPick> GetPick(int entryId, int gw) { var picks = await _entryClient.GetPicks(entryId, gw, tolerate404 : true); return(new GameweekPick(gw, picks)); }