<?php

namespace App\EventHooks\Ticket;

use App\EventHooks\HookEvent;
use App\Models\Ticket;

/**
 * Fire noktası: TicketObserver::updated (priority değişti) → TicketPriorityChange.
 * buildTicketContext. Context: ticket (model), priority (güncel).
 *
 * NOT: Fire context'i AYRI old/new anahtarı taşımıyor — yalnız değişim SONRASI
 * güncel öncelik var. newPriority() bunu döndürür; oldPriority() ctx'te yok → null.
 */
class TicketPriorityChanged extends HookEvent
{
    public const HOOK = 'TicketPriorityChange';

    public function ticket(): ?Ticket
    {
        $t = $this->get('ticket');
        if ($t instanceof Ticket) {
            return $t;
        }
        $id = $this->get('ticket_id') ?? $this->get('ticketid');

        return $id ? Ticket::find($id) : null;
    }

    /** Değişim sonrası güncel öncelik (ctx 'priority'). */
    public function newPriority(): mixed
    {
        return $this->get('priority');
    }

    /** Önceki öncelik ctx'te taşınmaz → null (PHPDoc'a bk.). */
    public function oldPriority(): mixed
    {
        return $this->get('old_priority');
    }
}
