. */ declare(strict_types=1); namespace FireflyIII\Import\Mapper; use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; /** * Class AssetAccounts. */ class AssetAccountIbans implements MapperInterface { /** * Get map of asset accounts. * * @return array */ public function getMap(): array { /** @var AccountRepositoryInterface $accountRepository */ $accountRepository = app(AccountRepositoryInterface::class); $set = $accountRepository->getAccountsByType( [AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE, ] ); $topList = []; $list = []; /** @var Account $account */ foreach ($set as $account) { $iban = $account->iban ?? ''; $accountId = (int)$account->id; if ('' !== $iban) { $name = $account->iban . ' (' . $account->name . ')'; // is a liability? if (in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) { $name = $name . ' (' . strtolower(trans('import.import_liability_select')) . ')'; } $topList[$accountId] = $name; } if ('' === $iban) { $name = $account->name; // is a liability? if (in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) { $name = $name . ' (' . strtolower(trans('import.import_liability_select')) . ')'; } $list[$accountId] = $name; } } /** @noinspection AdditionOperationOnArraysInspection */ $list = $topList + $list; asort($list); $list = [0 => (string)trans('import.map_do_not_map')] + $list; return $list; } }