public override async Task HandleAsync(CallbackQueryUpdateMessage message) { var mainMetric = _metricRepository.GetMainByExternalId(message.ChatId); if (mainMetric == null) { await _botClient.SendTextMessageAsync(message, MessageCode.NoMainMetric); return; } var values = _valueRepository.GetByMetricId(mainMetric.Id, 1, int.MaxValue); if (values.Count() < 2) { await _botClient.SendTextMessageAsync(message, MessageCode.ToFewValues); return; } var plotData = new PlotDataFactory().ValuesTo(values, mainMetric.ToString()); var filename = FileName.GetPlotFilename(message.UpdateId.ToString()); IFileService fileService = new ScottPlotService(new PngFileName(filename), plotData); using (var plotService = new FileReaderService(fileService)) { var stream = plotService.GetFileStream(); await _botClient.SendFileAsync(message.ChatId, stream, filename); } }
private MessageCode SaveValue(Value value, UpdateMessage message) { var mainMetric = _metricRepository.GetMainByExternalId(message.ChatId); if (mainMetric == null) { return(MessageCode.ValueWithoutMetric); } value.UpdateMetric(mainMetric); value = _valueRepository.Add(value); _logger.LogDebug($"Saved value {value.Content} {value.ValueDate} with id {value.Id}"); return(MessageCode.Done); }
public override async Task HandleAsync(CallbackQueryUpdateMessage message) { var mainMetric = _metricRepository.GetMainByExternalId(message.ChatId); if (mainMetric != null) { var metricText = mainMetric.ToString(); await _botClient.SendTextMessageAsync(message, metricText); } else { await _botClient.SendTextMessageAsync(message, MessageCode.NoMainMetric); } }
public override async Task HandleAsync(CallbackQueryUpdateMessage message) { if (!long.TryParse(Parameter, out long id)) { throw new ArgumentException($"Can't perfom {Button} command, id parameter is not a number - {Parameter}"); } var newMainMetric = _metricRepository.GetById(id) ?? throw new ArgumentException($"Can't perfom {Button} command, there is no metric with id {id}"); var oldMainMetric = _metricRepository.GetMainByExternalId(message.ChatId); if (oldMainMetric != null && oldMainMetric.Id != newMainMetric.Id) { oldMainMetric.UpdateMain(false); _metricRepository.Update(oldMainMetric); newMainMetric.UpdateMain(true); _metricRepository.Update(newMainMetric); } await _botClient.SendTextMessageAsync(message, MessageCode.Done); }
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); } }