<?php

namespace App\Observers;

use App\Models\Ticket;
use App\Services\HablameService;
use Illuminate\Support\Facades\Log;

class TicketObserver
{
    public function created(Ticket $ticket): void
    {
        try {
            $adminPhone = env('SMS_ADMIN_PHONE');
            if (!$adminPhone) return;

            // Cargar relaciones necesarias
            $ticket->loadMissing(['requester', 'priority']);

            $numero    = $ticket->number ?? 'N/A';
            $solicitante = $ticket->requester?->name ?? 'Desconocido';
            $prioridad = $ticket->priority?->name ?? 'Sin prioridad';
            $titulo    = mb_substr($ticket->title ?? '', 0, 40);

            $mensaje = "NEXUS ServiceDesk\n"
                     . "Nueva solicitud: {$numero}\n"
                     . "Usuario: {$solicitante}\n"
                     . "Prioridad: {$prioridad}\n"
                     . "Asunto: {$titulo}";

            (new HablameService())->send($adminPhone, $mensaje);

        } catch (\Throwable $e) {
            // Nunca romper el flujo principal por un SMS
            Log::error('TicketObserver SMS error: ' . $e->getMessage());
        }
    }
}
