Example #1
0
        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());
        }
Example #2
0
        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());
        }