Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

ConnectedBankAccountService.php 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Services;
  3. use App\Models\Accounting\Account;
  4. use App\Models\Banking\BankAccount;
  5. use App\Models\Banking\ConnectedBankAccount;
  6. use App\Models\Company;
  7. use App\Repositories\Accounting\AccountSubtypeRepository;
  8. use App\Repositories\Banking\ConnectedBankAccountRepository;
  9. class ConnectedBankAccountService
  10. {
  11. public function __construct(
  12. protected AccountSubtypeRepository $accountSubtypeRepository,
  13. protected ConnectedBankAccountRepository $connectedBankAccountRepository
  14. ) {}
  15. public function getOrProcessBankAccountForConnectedBankAccount(Company $company, ConnectedBankAccount $connectedBankAccount, int | string $selectedBankAccountId): BankAccount
  16. {
  17. if ($selectedBankAccountId === 'new') {
  18. return $this->connectedBankAccountRepository->createBankAccountForConnectedBankAccount($company, $connectedBankAccount);
  19. }
  20. return $company->bankAccounts()->find($selectedBankAccountId);
  21. }
  22. public function getOrProcessAccountForConnectedBankAccount(BankAccount $bankAccount, Company $company, ConnectedBankAccount $connectedBankAccount): Account
  23. {
  24. if ($bankAccount->account()->doesntExist()) {
  25. return $this->processNewAccountForBank($bankAccount, $company, $connectedBankAccount);
  26. }
  27. return $bankAccount->account;
  28. }
  29. public function processNewAccountForBank(BankAccount $bankAccount, Company $company, ConnectedBankAccount $connectedBankAccount): Account
  30. {
  31. $defaultAccountSubtypeName = $bankAccount->type->getDefaultSubtype();
  32. $accountSubtype = $this->accountSubtypeRepository->findAccountSubtypeByNameOrFail($company, $defaultAccountSubtypeName);
  33. return $this->connectedBankAccountRepository->createAccountForConnectedBankAccount($company, $connectedBankAccount, $bankAccount, $accountSubtype);
  34. }
  35. }