. */ declare(strict_types=1); namespace FireflyIII\Support\Import\JobConfiguration\FinTS; use FireflyIII\Import\JobConfiguration\FinTSConfigurationSteps; use FireflyIII\Models\ImportJob; use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; use FireflyIII\Support\FinTS\FinTS; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\MessageBag; /** * * Class NewFinTSJobHandler */ class NewFinTSJobHandler implements FinTSConfigurationInterface { /** @var ImportJob */ private $importJob; /** @var ImportJobRepositoryInterface */ private $repository; /** * Store data associated with current stage. * * @param array $data * * @return MessageBag * @throws \FireflyIII\Exceptions\FireflyException */ public function configureJob(array $data): MessageBag { $config = []; $config['fints_url'] = trim($data['fints_url'] ?? ''); $config['fints_port'] = (int)($data['fints_port'] ?? ''); $config['fints_bank_code'] = (string)($data['fints_bank_code'] ?? ''); $config['fints_username'] = (string)($data['fints_username'] ?? ''); $config['fints_password'] = (string)(Crypt::encrypt($data['fints_password']) ?? ''); $this->repository->setConfiguration($this->importJob, $config); $incomplete = false; foreach ($config as $value) { $incomplete = '' === $value or $incomplete; } if ($incomplete) { return new MessageBag([trans('import.incomplete_fints_form')]); } $finTS = app(FinTS::class, ['config' => $this->importJob->configuration]); if (true !== ($checkConnection = $finTS->checkConnection())) { return new MessageBag([trans('import.fints_connection_failed', ['originalError' => $checkConnection])]); } $this->repository->setStage($this->importJob, FinTSConfigurationSteps::CHOOSE_ACCOUNT); return new MessageBag(); } /** * Get the data necessary to show the configuration screen. * * @return array */ public function getNextData(): array { $config = $this->importJob->configuration; return [ 'fints_url' => $config['fints_url'] ?? '', 'fints_port' => $config['fints_port'] ?? '443', 'fints_bank_code' => $config['fints_bank_code'] ?? '', 'fints_username' => $config['fints_username'] ?? '', ]; } /** * @param ImportJob $importJob */ public function setImportJob(ImportJob $importJob): void { $this->importJob = $importJob; $this->repository = app(ImportJobRepositoryInterface::class); $this->repository->setUser($importJob->user); } }