setName('taskprocessing:task:list') ->setDescription('list tasks') ->addOption( 'userIdFilter', 'u', InputOption::VALUE_OPTIONAL, 'only get the tasks for one user ID' ) ->addOption( 'type', 't', InputOption::VALUE_OPTIONAL, 'only get the tasks for one task type' ) ->addOption( 'appId', null, InputOption::VALUE_OPTIONAL, 'only get the tasks for one app ID' ) ->addOption( 'customId', null, InputOption::VALUE_OPTIONAL, 'only get the tasks for one custom ID' ) ->addOption( 'status', 's', InputOption::VALUE_OPTIONAL, 'only get the tasks that have a specific status (STATUS_UNKNOWN=0, STATUS_SCHEDULED=1, STATUS_RUNNING=2, STATUS_SUCCESSFUL=3, STATUS_FAILED=4, STATUS_CANCELLED=5)' ) ->addOption( 'scheduledAfter', null, InputOption::VALUE_OPTIONAL, 'only get the tasks that were scheduled after a specific date (Unix timestamp)' ) ->addOption( 'endedBefore', null, InputOption::VALUE_OPTIONAL, 'only get the tasks that ended before a specific date (Unix timestamp)' ); parent::configure(); } protected function execute(InputInterface $input, OutputInterface $output): int { $userIdFilter = $input->getOption('userIdFilter'); if ($userIdFilter === null) { $userIdFilter = ''; } elseif ($userIdFilter === '') { $userIdFilter = null; } $type = $input->getOption('type'); $appId = $input->getOption('appId'); $customId = $input->getOption('customId'); $status = $input->getOption('status'); $scheduledAfter = $input->getOption('scheduledAfter'); $endedBefore = $input->getOption('endedBefore'); $tasks = $this->taskProcessingManager->getTasks($userIdFilter, $type, $appId, $customId, $status, $scheduledAfter, $endedBefore); $arrayTasks = array_map(fn (Task $task): array => $task->jsonSerialize(), $tasks); $this->writeArrayInOutputFormat($input, $output, $arrayTasks); return 0; } }