Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        private byte[] CreatePlotWith(string filename, Collection <Value> values)
        {
            var title    = "Height (cm)";
            var plotData = new PlotDataFactory().ValuesTo(values, title);

            IFileService fileService = new ScottPlotService(new PngFileName(filename), plotData);
            var          plotService = new FileReaderService(fileService);

            return(plotService.CreateFile());
        }