Example #1
0
        private async Task <ResponseParams> CreateMessageWithSetsForYear(long chatId, int pageNum, int year)
        {
            var pageSize  = 10;
            var pageIndex = pageNum - 1;

            var sets = await _dbContext.Sets
                       .Where(x => x.Year == year)
                       .OrderBy(x => x.Name)
                       .Skip(pageSize * pageIndex)
                       .Take(pageSize)
                       .ToListAsync();

            var sb = new StringBuilder();

            for (int i = 0; i < sets.Count; i++)
            {
                sb.Append($"{i + 1 + pageSize * pageIndex}. <b>{sets[i].Name}</b>{Environment.NewLine}")
                .Append($"      Подробнее про этот набор: {LinkPrefix}{sets[i].SetNumber}{Environment.NewLine}");
            }

            var totalCount = await _dbContext.Sets.Where(x => x.Year == year).CountAsync();

            var hasRemaining = totalCount % pageSize != 0;
            var pagesCount   = totalCount / pageSize + (hasRemaining ? 1 : 0);

            var pagingButtons = PagingButtonCreator.CreatePagingButtons(pagesCount, pageNum, Years_Sets_SourceName, year);

            var response = new ResponseParams(chatId, sb.ToString())
            {
                ResponseMarkup = pagingButtons
            };

            return(response);
        }
Example #2
0
        private async Task <ResponseParams> CreateMessageWithThemesSearch(long chatId, int pageNum)
        {
            var pageSize  = 10;
            var pageIndex = pageNum - 1;

            var themes = await _dbContext.Themes
                         .Where(x => x.ParentId == null)
                         .OrderBy(x => x.Name)
                         .Skip(pageSize * pageIndex)
                         .Take(pageSize)
                         .ToListAsync();

            var sb = new StringBuilder();

            for (int i = 0; i < themes.Count; i++)
            {
                sb.Append($"{i + 1 + pageSize * pageIndex}. <b>{themes[i].Name}</b>{Environment.NewLine}")
                .Append($"      Наборы по этой теме: /tid_{themes[i].ThemeId}{Environment.NewLine}");
            }

            var totalCount = await _dbContext.Themes.Where(x => x.ParentId == null).CountAsync();

            var hasRemaining = totalCount % pageSize != 0;
            var pagesCount   = totalCount / pageSize + (hasRemaining ? 1 : 0);

            var pagingButtons = PagingButtonCreator.CreatePagingButtons(pagesCount, pageNum, ThemeSourceName);

            var response = new ResponseParams(chatId, sb.ToString())
            {
                ResponseMarkup = pagingButtons
            };

            return(response);
        }
Example #3
0
        private async Task <ResponseParams> CreateMessageWithYearsSearch(long chatId, int pageNum)
        {
            var pageSize  = 10;
            var pageIndex = pageNum - 1;

            var years = await _dbContext.Sets
                        .Select(x => x.Year)
                        .Distinct()
                        .OrderBy(x => x)
                        .Skip(pageSize * pageIndex)
                        .Take(pageSize)
                        .ToListAsync();

            var sb = new StringBuilder();

            for (int i = 0; i < years.Count; i++)
            {
                sb.Append($"{i + 1 + pageSize * pageIndex}. <b>{years[i]}</b>{Environment.NewLine}")
                .Append($"      Наборы в этом году: /yid_{years[i]}{Environment.NewLine}");
            }

            var totalCount = await _dbContext.Sets.Select(x => x.Year).Distinct().CountAsync();

            var hasRemaining = totalCount % pageSize != 0;
            var pagesCount   = totalCount / pageSize + (hasRemaining ? 1 : 0);

            var pagingButtons = PagingButtonCreator.CreatePagingButtons(pagesCount, pageNum, YearsSourceName);

            var response = new ResponseParams(chatId, sb.ToString())
            {
                ResponseMarkup = pagingButtons
            };

            return(response);
        }