public static string GetTopThreeGameweekEntries(ClassicLeague league, Gameweek gameweek) { var topThree = league.Standings.Entries .GroupBy(e => e.EventTotal) .OrderByDescending(g => g.Key) .Take(3) .ToArray(); if (!topThree.Any()) { return(null); } var sb = new StringBuilder(); sb.Append("Top three this gameweek was:\n"); for (var i = 0; i < topThree.Length; i++) { var group = topThree[i]; foreach (var entry in group) { sb.Append($"{Formatter.RankEmoji(i)} {entry.GetEntryLink(gameweek.Id)} - {entry.EventTotal}\n"); } } return(sb.ToString()); }
public async Task <string> GetCaptainsChartByGameWeek(int gameweek, int leagueId) { var entryCaptainPicks = await GetEntryCaptainPicks(gameweek, leagueId); var captainGroups = entryCaptainPicks .GroupBy(x => x.Captain.Id, el => el.Captain) .OrderByDescending(x => x.Count()) .Select((group, i) => new { Captain = group.First(), Count = group.Count(), Emoji = Formatter.RankEmoji(i) }) .MaterializeToArray(); var sb = new StringBuilder(); sb.Append($":bar_chart: *Captain picks chart for gameweek {gameweek}*\n\n"); var max = captainGroups.Max(x => x?.Count); for (var i = max; i > 0; i--) { foreach (var captainGroup in captainGroups) { if (captainGroup.Count >= i) { sb.Append(":black_square:"); } else { break; } } sb.Append("\n"); } foreach (var captainGroup in captainGroups) { sb.Append($"{captainGroup.Emoji}"); } sb.Append("\n\n"); foreach (var captainGroup in captainGroups) { sb.Append($"{captainGroup.Emoji} = {captainGroup.Captain.FirstName} {captainGroup.Captain.SecondName} ({captainGroup.Count})\n"); } return(sb.ToString()); }