<?php

namespace App\Observers;

use App\Models\Transaction;
use App\Services\CallCreditService;

class TransactionObserver
{
    /**
     * After a transaction is created, check if the spending profile
     * still has sufficient credits. If not, pause all their active calls.
     */
    public function created(Transaction $transaction): void
    {
        $fromAccount = $transaction->accountFrom;
        if (!$fromAccount) {
            return;
        }

        $accountable = $fromAccount->accountable;
        if (!$accountable) {
            return;
        }

        $profileType = get_class($accountable);
        $profileId   = $accountable->id;

        if (!CallCreditService::profileHasCredits($profileType, $profileId)) {
            CallCreditService::pauseAllActiveCalls($profileType, $profileId);
        }
    }
}
