Exemplo n.º 1
0
        public override async Task HandleAsync(CallbackQueryUpdateMessage message)
        {
            if (!int.TryParse(Parameter, out int currentPageNumber))
            {
                currentPageNumber = 1;
            }

            var source = _sourceRepository.GetByExternalId(message.ChatId)
                         ?? throw new ArgumentException($"Can't perfom {Button} command, there is no source with id {message.ChatId}");

            var metricNames = _metricRepository.GetBySourceId(source.Id, currentPageNumber, PagingMenuData.DefaultPageSize)
                              .ToDictionary(m => FormatKey(m.Id), m => $"{m}");

            var count     = _metricRepository.CountBySourceId(source.Id);
            var pageCount = (count / PagingMenuData.DefaultPageSize) + 1;

            var menuData = new PagingMenuData
            {
                ButtonTexts = metricNames,
                CurrentPage = currentPageNumber,
                PageCount   = pageCount,
                Previous    = ButtonCode.MetricMenu,
            };

            message = message with {
                MenuMessageId = MenuMessageId
            };
            await _botClient.EditTextButtonsMenuWithPagingAsync(message, Button, menuData);
        }
    }
Exemplo n.º 2
0
        public override async Task HandleAsync(CallbackQueryUpdateMessage message)
        {
            if (!int.TryParse(Parameter, out int currentPageNumber))
            {
                currentPageNumber = 1;
            }

            var mainMetric = _metricRepository.GetMainByExternalId(message.ChatId);

            if (mainMetric == null)
            {
                await _botClient.SendTextMessageAsync(message, MessageCode.NoMainMetric);

                return;
            }

            var valueNames = _valueRepository.GetByMetricId(mainMetric.Id, currentPageNumber, PagingMenuData.DefaultPageSize)
                             .ToDictionary(m => FormatKey(m.Id), m => $"{m}");

            var count     = _valueRepository.CountByMetric(mainMetric.Id);
            var pageCount = (count / PagingMenuData.DefaultPageSize) + 1;

            var menuData = new PagingMenuData
            {
                ButtonTexts = valueNames,
                CurrentPage = currentPageNumber,
                PageCount   = pageCount,
                Previous    = ButtonCode.Menu,
            };

            message = message with {
                MenuMessageId = MenuMessageId
            };
            await _botClient.EditTextButtonsMenuWithPagingAsync(message, Button, menuData);
        }
    }
Exemplo n.º 3
0
        public async Task EditTextButtonsMenuWithPagingAsync(CallbackQueryUpdateMessage message, ButtonCode topButtonCode, PagingMenuData menuData)
        {
            var menuBuilder = new InlineKeyboardButtonMenuBuilder(_localizer);
            var replyMarkup = menuBuilder
                              .AddTextPerLine(menuData.ButtonTexts)
                              .AddPagingLine(menuData.CurrentPage, menuData.PageCount, topButtonCode, message.MenuMessageId)
                              .AddBackButton(menuData.Previous, message.MenuMessageId)
                              .Build();

            await TelegramBot.EditMessageTextAsync(
                message.ChatId,
                message.MenuMessageId,
                _localizer.GetButtonText(message.LanguageCode, topButtonCode),
                replyMarkup : replyMarkup);
        }
Exemplo n.º 4
0
        public Task EditTextButtonsMenuWithPagingAsync(CallbackQueryUpdateMessage message, ButtonCode topButtonCode, PagingMenuData menuData)
        {
            var menuBuilder = new InlineKeyboardButtonMenuBuilder(_localizer);
            var replyMarkup = menuBuilder.AddTextPerLine(menuData.ButtonTexts)
                              .AddPagingLine(menuData.CurrentPage, menuData.PageCount, topButtonCode, message.MenuMessageId)
                              .Build();

            PrintOutReplyMarkup(message.LanguageCode, topButtonCode, replyMarkup);

            return(Task.CompletedTask);
        }