getConfigurationClass(); $job = $this->job; /** @var ConfigurationInterface $object */ $object = new $class($this->job); $object->setJob($job); return $object->storeConfiguration($data); } /** * Return the data required for the next step in the job configuration. * * @return array * @throws FireflyException */ public function getNextData(): array { $class = $this->getConfigurationClass(); $job = $this->job; /** @var ConfigurationInterface $object */ $object = app($class); $object->setJob($job); return $object->getData(); } /** * @return string * @throws FireflyException */ public function getNextView(): string { if (!$this->job->configuration['initial-config-complete']) { return 'import.csv.initial'; } if (!$this->job->configuration['column-roles-complete']) { return 'import.csv.roles'; } if (!$this->job->configuration['column-mapping-complete']) { return 'import.csv.map'; } throw new FireflyException('No view for state'); } /** * @return bool */ public function isJobConfigured(): bool { $config = $this->job->configuration; $config['initial-config-complete'] = $config['initial-config-complete'] ?? false; $config['column-roles-complete'] = $config['column-roles-complete'] ?? false; $config['column-mapping-complete'] = $config['column-mapping-complete'] ?? false; $this->job->configuration = $config; $this->job->save(); if ($this->job->configuration['initial-config-complete'] && $this->job->configuration['column-roles-complete'] && $this->job->configuration['column-mapping-complete'] ) { return true; } return false; } /** * @param ImportJob $job */ public function setJob(ImportJob $job) { $this->job = $job; if (is_null($this->job->configuration) || count($this->job->configuration) === 0) { Log::debug(sprintf('Gave import job %s initial configuration.', $this->job->key)); $this->job->configuration = config('csv.default_config'); $this->job->save(); } } /** * @return string * @throws FireflyException */ private function getConfigurationClass(): string { $class = false; switch (true) { case (!$this->job->configuration['initial-config-complete']): $class = Initial::class; break; case (!$this->job->configuration['column-roles-complete']): $class = Roles::class; break; case (!$this->job->configuration['column-mapping-complete']): $class = Map::class; break; default: break; } if ($class === false || strlen($class) === 0) { throw new FireflyException('Cannot handle current job state in getConfigurationClass().'); } if (!class_exists($class)) { throw new FireflyException(sprintf('Class %s does not exist in getConfigurationClass().', $class)); } return $class; } }