예제 #1
0
        public async Task <ApiResult <PagedResponse <Quote> > > GetApprovedQuotes([FromQuery] string?guildsFilter, [FromQuery] PagingFilter pagingFilter)
        {
            ValidatePagingFilter(pagingFilter);
            var userGuilds = (await _natsDiscordService.GetMutualGuildsFor(UserDiscordId)).Select(x => x.Id.ToString());
            var filter     = guildsFilter?.Split(",").Where(x => userGuilds.Contains(x)) ?? userGuilds;

            return(Ok(await _natsQuoteService.FindApproved(filter, pagingFilter)));
        }
예제 #2
0
        public async Task QuotesList(int pageNumber = 1)
        {
            if (pageNumber <= 0)
            {
                await ReplyAsync(embed : new EmbedBuilder()
                                 .WithTitle("What did you think would happen?")
                                 .WithDescription("Page not found.")
                                 .WithColor(Color.Red)
                                 .WithCurrentTimestamp()
                                 .Build()
                                 );

                return;
            }

            var quotesList = await _natsQuotesService.FindApproved(
                new[] { Context.Guild.Id.ToString() },
                new PagingFilter
            {
                PageNumber = pageNumber,
                PageSize   = ListPageSize,
            }
                );

            var totalPages = quotesList.TotalRows / ListPageSize;

            if (pageNumber > totalPages)
            {
                await ReplyAsync(embed : new EmbedBuilder()
                                 .WithTitle("Page doesn't exist")
                                 .WithDescription("Page not found.")
                                 .WithColor(Color.Red)
                                 .WithCurrentTimestamp()
                                 .Build()
                                 );

                return;
            }

            var reply = new EmbedBuilder()
                        .WithTitle($"Quotes Page #{pageNumber}");

            foreach (var quote in quotesList.Items)
            {
                reply.AddField($"#{quote.QuoteNumber}: {quote.Title}", $"{quote.User.Username}#{quote.User.Discriminator}", true);
            }

            await ReplyAsync(embed : reply
                             .WithColor(Color.Blue)
                             .WithCurrentTimestamp()
                             .Build()
                             );
        }