コード例 #1
0
        public async Task GetStatisticsPerPeriod(DiscordRequest request, Contexts contexts)
        {
            var period = _reportsService.SelectPeriod(request.Arguments.FirstOrDefault()?.Value);

            if (implementedBySplitter.Contains(period))
            {
                var query  = new GetMessagesStatisticsQuery(period);
                var result = await this._queryBus.ExecuteAsync(query);

                var periodStats = result.PeriodStatistics.Where(x => x.Count > 0); // todo
                return;
            }

            var getMessages = new GetMessagesQuery(contexts.Server.Id);
            var messages    = this._queryBus.Execute(getMessages).Messages.ToList();
            var report      = _reportsService.CreateReport(messages, period);

            Log.Information("Generated statistics for time range {start} {end}", report.TimeRange.Start, report.TimeRange.End);
#if DEBUG
            PrintDebugStats(report);
#endif
            var path            = _chartsService.GetImageStatisticsPerPeriod(report);
            var messagesService = _messagesServiceFactory.Create(contexts);
            await messagesService.SendFile(path);
        }
コード例 #2
0
        private void GetTaskToDosing()
        {
            var taskQueueItems = TaskQueueItemsService.ListTaskQueueItems();

            if (taskQueueItems.Any())
            {
                var taskQueueItem = taskQueueItems.OrderBy(x => x.Order).First();
                var task          = TasksReader.GetById(taskQueueItem.Task.Id);
                var recipe        = RecipesReader.GetById(task.Recipe.Id);
                var containers    = CheckMaterials(recipe);
                if (containers != null)
                {
                    var parameters = GetValues(task, recipe, containers);
                    if (parameters != null)
                    {
                        var isOk = LoadValues(parameters);
                        if (isOk)
                        {
                            var taskId = new Dictionary <ApiOpcParameter, string> {
                                { CurrentTaskIdParameter, task.Id.ToString() }
                            };
                            var taskIdLoadOk = LoadValues(taskId);
                            if (taskIdLoadOk)
                            {
                                ReportsService.CreateReport(task);
                                TaskQueueItemsService.Delete(taskQueueItem.Id);
                            }
                            else
                            {
                                Logger.Error("Ошибка записи CurrentTaskId.");
                            }
                        }
                        else
                        {
                            Logger.Error("Ошибка записи параметров.");
                        }
                    }
                    else
                    {
                        Logger.Error("Отсутствуют некоторые параметры.");
                    }
                }
                else
                {
                    Logger.Error("Отсутствуют некоторые материалы в контейнерах.");
                    MessageBox.Show("Отсутствуют некоторые материалы в контейнерах");
                }
            }
            else
            {
                Logger.Error("Отсутствуют задания в очереди.");
            }
        }
コード例 #3
0
 public long Create(ReportItemDto report)
 {
     return(reportService.CreateReport(report));
 }