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); } }
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); } }
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); }
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); }