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 async Task BizActionAsync(Guid inputData) { var tasks = await _taskDirectory.LoadTasks(); var task = tasks.FirstOrDefault(x => x.Id == inputData); if (task == null) { AddValidationResult(TaskErrors.TaskNotFound); return; } await _dbAccess.SetTaskIsEnabled(inputData, true); var taskReference = await _dbAccess.FindAsync(inputData); var hash = _taskDirectory.ComputeTaskHash(task); await _management.InitializeTask(task, hash, true, !taskReference.IsCompleted); }
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 BizActionAsync(Guid inputData) { var task = (await _taskDirectory.LoadTasks()).FirstOrDefault(x => x.Id == inputData); if (task == null) { AddValidationResult(TaskErrors.TaskNotFound); return; } var sessionKey = SessionKey.CreateUtcNow("ManualTrigger"); await _management.TriggerNow(task, sessionKey, new DatabaseTaskResultStorage(_serviceProvider)); foreach (var status in _activeTasksManager.ActiveCommands.Where(x => !x.Key.IsServer)) { if (status.Value.Tasks.Any(x => x.TaskId == inputData)) { if (_connectionManager.ClientConnections.TryGetValue(status.Key.ClientId, out var connection)) { await TasksResource.TriggerTask(inputData, sessionKey, connection); } } } }