argument('key'); $job = ImportJob::where('key', $jobKey)->first(); if (is_null($job)) { $this->error(sprintf('No job found with key "%s"', $jobKey)); return; } if (!$this->isValid($job)) { Log::error('Job is not valid for some reason. Exit.'); return; } $this->line(sprintf('Going to import job with key "%s" of type "%s"', $job->key, $job->file_type)); $monolog = Log::getMonolog(); $handler = new CommandHandler($this); $monolog->pushHandler($handler); /** @var ImportRoutine $routine */ $routine = app(ImportRoutine::class); $routine->setJob($job); $routine->run(); /** @var MessageBag $error */ foreach ($routine->errors as $index => $error) { $this->error(sprintf('Error importing line #%d: %s', $index, $error)); } $this->line(sprintf('The import has finished. %d transactions have been imported out of %d records.', $routine->journals->count(), $routine->lines)); return; } /** * Check if job is valid to be imported. * * @param ImportJob $job * * @return bool */ private function isValid(ImportJob $job): bool { if (is_null($job)) { Log::error('This job does not seem to exist.'); $this->error('This job does not seem to exist.'); return false; } if ($job->status !== 'configured') { Log::error(sprintf('This job is not ready to be imported (status is %s).', $job->status)); $this->error('This job is not ready to be imported.'); return false; } return true; } }