| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | 
							- <?php
 - 
 - namespace App\Observers;
 - 
 - use App\Enums\Accounting\AccountType;
 - use App\Models\Accounting\AccountSubtype;
 - use App\Models\Accounting\Transaction;
 - use App\Models\Banking\BankAccount;
 - use Illuminate\Support\Facades\DB;
 - 
 - class BankAccountObserver
 - {
 -     /**
 -      * Handle the BankAccount "created" event.
 -      */
 -     public function created(BankAccount $bankAccount): void
 -     {
 -         //
 -     }
 - 
 -     /**
 -      * Handle the BankAccount "creating" event.
 -      */
 -     public function creating(BankAccount $bankAccount): void
 -     {
 -         //
 -     }
 - 
 -     /**
 -      * Get the default bank account subtype.
 -      */
 -     protected function getDefaultBankAccountSubtype(int $companyId, AccountType $type)
 -     {
 -         $subType = AccountSubtype::where('company_id', $companyId)
 -             ->where('name', 'Cash and Cash Equivalents')
 -             ->where('type', $type)
 -             ->first();
 - 
 -         if (! $subType) {
 -             $subType = AccountSubtype::where('company_id', $companyId)
 -                 ->where('type', $type)
 -                 ->first();
 -         }
 - 
 -         return $subType?->id;
 -     }
 - 
 -     /**
 -      * Handle the BankAccount "updated" event.
 -      */
 -     public function updated(BankAccount $bankAccount): void
 -     {
 -         //
 -     }
 - 
 -     /**
 -      * Handle the BankAccount "deleting" event.
 -      */
 -     public function deleting(BankAccount $bankAccount): void
 -     {
 -         DB::transaction(function () use ($bankAccount) {
 -             $account = $bankAccount->account;
 -             $connectedBankAccount = $bankAccount->connectedBankAccount;
 - 
 -             if ($account) {
 -                 $bankAccount->transactions()->each(fn (Transaction $transaction) => $transaction->delete());
 -                 $account->delete();
 -             }
 - 
 -             if ($connectedBankAccount) {
 -                 $connectedBankAccount->delete();
 -             }
 -         });
 -     }
 - 
 -     /**
 -      * Handle the BankAccount "deleted" event.
 -      */
 -     public function deleted(BankAccount $bankAccount): void
 -     {
 -         //
 -     }
 - 
 -     /**
 -      * Handle the BankAccount "restored" event.
 -      */
 -     public function restored(BankAccount $bankAccount): void
 -     {
 -         //
 -     }
 - 
 -     /**
 -      * Handle the BankAccount "force deleted" event.
 -      */
 -     public function forceDeleted(BankAccount $bankAccount): void
 -     {
 -         //
 -     }
 - }
 
 
  |