protected function execute(InputInterface $input, OutputInterface $output) { $projectResource = new ProjectResource($this->sourceClient); $wavesResource = new WaveResource($this->sourceClient); $result = $wavesResource->getList(); foreach ($result['items'] as $idx => $wave) { $data[] = ['wave_id' => $wave['id'], 'task_count' => $wave['task_count'], 'survey' => '', 'questions' => '', 'payment' => isset($wave['reward']) ? $wave['reward'] : '', 'max_assignments' => '']; } $table = new Table($output); $table->setHeaders(['wave_id', 'task_id', 'survey', 'questions', 'payment', 'max_assignments'])->setRows($data); $table->render(); }
protected function execute(InputInterface $input, OutputInterface $output) { $isVerbose = $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE; $sourceProjectCode = $input->getOption('source-project-code'); $targetProjectCode = $input->getOption('target-project-code'); $sourceProjectResource = new ProjectResource($this->sourceClient); $projectResource = new ProjectResource($this->client); $sourceProject = $sourceProjectResource->getByCode($sourceProjectCode); $targetProject = $projectResource->getByCode($targetProjectCode); if (!$sourceProject) { $output->writeln("<error>Project '{$sourceProjectCode}' not found</error>"); exit; } if (!$targetProject) { $output->writeln("<error>Project '{$targetProjectCode}' not found</error>"); exit; } if (!$targetProjectCode) { $targetProjectCode = $sourceProjectCode; } $sourceWaveId = $input->getOption('source-wave-id'); $targetJobCode = $input->getOption('target-job-code'); $jobResource = new JobResource($this->client); /** @type WaveResource $fromWaveResource */ $fromWaveResource = new WaveResource($this->sourceClient); /** @type WaveResource $toWaveResource */ $toWaveResource = new WaveResource($this->client); try { $wave = $fromWaveResource->getById($sourceWaveId); } catch (\Exception $e) { if (!isset($wave)) { $output->writeln("<error>Wave #{$sourceWaveId} not found</error>"); exit; } } // if no target job code set - use current job if (!$targetJobCode) { $targetJobCode = $wave['job_code']; } $job = $jobResource->getOneBy(['code' => $targetJobCode], ['project_code' => $targetProject['code']]); if (!$job) { throw new \Exception("job '{$targetJobCode}' not found in project '{$targetProject['code']}'"); } // update target job ID // find job ID, then update wave data $this->processWaveFields($wave, $job); $response = $toWaveResource->save($wave); $output->writeln("Wave {$response['code']} #{$response['id']} transferred"); }