| 123456789101112131415161718192021222324252627282930 | <?php
namespace App\Observers;
use App\Models\Accounting\Transaction;
use App\Models\Banking\BankAccount;
use Illuminate\Support\Facades\DB;
class BankAccountObserver
{
    /**
     * 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();
            }
        });
    }
}
 |