| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | 
							- <?php
 - 
 - namespace App\Services;
 - 
 - use App\Models\Accounting\Account;
 - use App\Models\Banking\BankAccount;
 - use App\Models\Banking\ConnectedBankAccount;
 - use App\Models\Company;
 - use App\Repositories\Accounting\AccountSubtypeRepository;
 - use App\Repositories\Banking\ConnectedBankAccountRepository;
 - 
 - class ConnectedBankAccountService
 - {
 -     protected AccountSubtypeRepository $accountSubtypeRepository;
 - 
 -     protected ConnectedBankAccountRepository $connectedBankAccountRepository;
 - 
 -     public function __construct(AccountSubtypeRepository $accountSubtypeRepository, ConnectedBankAccountRepository $connectedBankAccountRepository)
 -     {
 -         $this->accountSubtypeRepository = $accountSubtypeRepository;
 -         $this->connectedBankAccountRepository = $connectedBankAccountRepository;
 -     }
 - 
 -     public function getOrProcessBankAccountForConnectedBankAccount(Company $company, ConnectedBankAccount $connectedBankAccount, int | string $selectedBankAccountId): BankAccount
 -     {
 -         if ($selectedBankAccountId === 'new') {
 -             return $this->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);
 -     }
 - }
 
 
  |