public TriggerTaskAction(IMazeTaskManagerManagement management, ITaskDirectory taskDirectory, IConnectionManager connectionManager, ActiveTasksManager activeTasksManager, IServiceProvider serviceProvider) { _management = management; _taskDirectory = taskDirectory; _connectionManager = connectionManager; _activeTasksManager = activeTasksManager; _serviceProvider = serviceProvider; }
public MazeTaskManager(ITaskDirectory taskDirectory, IServiceProvider serviceProvider, ILogger <MazeTaskManager> logger) { _taskDirectory = taskDirectory; _serviceProvider = serviceProvider; _logger = logger; _tasks = new Dictionary <Guid, TaskInfo>(); ClientTasks = ImmutableList <TaskInfo> .Empty; LocalActiveTasks = ImmutableList <TaskInfo> .Empty; _tasksLock = new AsyncLock(); }
public async Task <IActionResult> GetTasks([FromServices] ITaskDirectory taskDirectory, [FromServices] IMazeTaskManager taskManager, [FromServices] ITaskReferenceDbAccess dbAccess) { var tasks = await taskDirectory.LoadTasks(); var taskInfos = await dbAccess.GetTasks(); var infos = tasks.Select(x => { var taskInfo = taskInfos[x.Id]; var localActiveTask = taskManager.LocalActiveTasks.FirstOrDefault(y => y.MazeTask.Id == x.Id); taskInfo.Name = x.Name; taskInfo.Commands = x.Commands.Count; taskInfo.IsCompletedOnServer = localActiveTask == null; taskInfo.NextExecution = localActiveTask?.NextExecution; return(taskInfo); }); return(Ok(infos)); }
public async Task <IActionResult> GetTaskInfo(Guid taskId, [FromServices] ITaskDirectory taskDirectory, [FromServices] IMazeTaskManager taskManager, [FromServices] ITaskReferenceDbAccess dbAccess) { var tasks = await taskDirectory.LoadTasks(); var task = tasks.FirstOrDefault(x => x.Id == taskId); if (task == null) { return(NotFound()); } var localActiveTask = taskManager.LocalActiveTasks.FirstOrDefault(x => x.MazeTask.Id == taskId); var taskInfo = await dbAccess.GetTaskInfo(taskId); taskInfo.Name = task.Name; taskInfo.Commands = task.Commands.Count; taskInfo.IsCompletedOnServer = localActiveTask == null; taskInfo.NextExecution = localActiveTask?.NextExecution; return(Ok(taskInfo)); }
public async Task GetTask(Guid taskId, [FromServices] ITaskDirectory taskDirectory) { if (!User.IsAdministrator()) { var action = HttpContext.RequestServices.GetRequiredService <ICreateTaskTransmissionAction>(); await action.BizActionAsync(new TaskTransmission { TaskReferenceId = taskId, TargetId = User.GetClientId(), CreatedOn = DateTimeOffset.UtcNow }); } byte[] encodedTask; try { encodedTask = await taskDirectory.GetEncodedTask(taskId); } catch (Exception) { await BadRequest("The task was not found.").ExecuteResultAsync(ControllerContext); return; } Response.StatusCode = StatusCodes.Status200OK; await Response.Body.WriteAsync(encodedTask, 0, encodedTask.Length); }
public async Task <IActionResult> TriggerTask(Guid taskId, [FromQuery] string sessionKey, [FromServices] ITaskDirectory taskDirectory, [FromServices] IDatabaseTaskStorage databaseTaskStorage) { var task = (await taskDirectory.LoadTasks()).FirstOrDefault(x => x.Id == taskId); if (task == null) { return(NotFound()); } await _clientTaskManager.TriggerNow(task, SessionKey.FromHash(sessionKey), databaseTaskStorage); return(Ok()); }
public EnableTaskAction(IMazeTaskManagerManagement management, ITaskReferenceDbAccess dbAccess, ITaskDirectory taskDirectory) { _management = management; _dbAccess = dbAccess; _taskDirectory = taskDirectory; }