Example #1
0
        public async Task <IActionResult> TaskList()
        {
            var models        = new List <TaskModel>();
            var moduleCatalog = Services.ApplicationContext.ModuleCatalog;
            var tasks         = await _taskStore.GetAllTasksAsync(true, false);

            var lastExecutionInfos = (await _taskStore.GetExecutionInfoQuery(false)
                                      .ApplyCurrentMachineNameFilter()
                                      .ApplyTaskFilter(0, true)
                                      .ToListAsync())
                                     .ToDictionarySafe(x => x.TaskDescriptorId);

            foreach (var task in tasks)
            {
                var normalizedTypeName = _taskActivator.GetNormalizedTypeName(task);
                var taskType           = _taskActivator.GetTaskClrType(normalizedTypeName);

                if (moduleCatalog.IsActiveModuleAssembly(taskType?.Assembly))
                {
                    lastExecutionInfos.TryGetValue(task.Id, out var lastExecutionInfo);

                    var model = await task.MapAsync(lastExecutionInfo);

                    model.LastRunInfo = await this.InvokeViewAsync("_LastRun", model);

                    model.NextRunInfo = await this.InvokeViewAsync("_NextRun", model);

                    models.Add(model);
                }
            }

            var gridModel = new GridModel <TaskModel>
            {
                Rows  = models,
                Total = models.Count
            };

            return(Json(gridModel));
        }