connectedBankAccountRepository->createBankAccountForConnectedBankAccount($company, $connectedBankAccount); } return $company->bankAccounts()->find($selectedBankAccountId); } public function getOrProcessAccountForConnectedBankAccount(BankAccount $bankAccount, Company $company, ConnectedBankAccount $connectedBankAccount): Account { if ($bankAccount->account()->doesntExist()) { return $this->processNewAccountForBank($bankAccount, $company, $connectedBankAccount); } return $bankAccount->account; } public function processNewAccountForBank(BankAccount $bankAccount, Company $company, ConnectedBankAccount $connectedBankAccount): Account { $defaultAccountSubtypeName = $bankAccount->type->getDefaultSubtype(); $accountSubtype = $this->accountSubtypeRepository->findAccountSubtypeByNameOrFail($company, $defaultAccountSubtypeName); return $this->connectedBankAccountRepository->createAccountForConnectedBankAccount($company, $connectedBankAccount, $bankAccount, $accountSubtype); } }