Example #1
0
 public TriggerTaskAction(IMazeTaskManagerManagement management, ITaskDirectory taskDirectory, IConnectionManager connectionManager,
                          ActiveTasksManager activeTasksManager, IServiceProvider serviceProvider)
 {
     _management         = management;
     _taskDirectory      = taskDirectory;
     _connectionManager  = connectionManager;
     _activeTasksManager = activeTasksManager;
     _serviceProvider    = serviceProvider;
 }
Example #2
0
 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();
 }
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 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);
        }
Example #6
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 #7
0
 public EnableTaskAction(IMazeTaskManagerManagement management, ITaskReferenceDbAccess dbAccess, ITaskDirectory taskDirectory)
 {
     _management    = management;
     _dbAccess      = dbAccess;
     _taskDirectory = taskDirectory;
 }