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