Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }
Example #4
0
        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));
        }
Example #5
0
        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);
                    }
                }
            }
        }