<?php
require_once '../../config/config.php';
require_once '../../config/database.php';
require_once '../../includes/functions.php';
require_once '../../models/Ticket.php';
require_once '../../controllers/TicketController.php';

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 1. Verificación de sesión
if (!isset($_SESSION['usuario_id'])) {
    header("Location: ../../index.php");
    exit();
}

$id_ticket = $_GET['id'] ?? null;
if (!$id_ticket) {
    header("Location: index.php");
    exit();
}

// Inicialización de clases (Asegúrate de que Ticket.php y TicketController.php existan)
$ticketModel = new Ticket($pdo);
$ticketCtrl = new TicketController($pdo);

// 2. Procesamiento de POST (Nuevas respuestas y fotos)
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $mensaje = !empty($_POST['mensaje']) ? limpiar($_POST['mensaje']) : null;
    $nombre_foto = null;
    $hay_archivo = !empty($_FILES['foto_seguimiento']['name']);

    // Validar que al menos haya texto o una imagen
    if ($mensaje || $hay_archivo) {
        if ($hay_archivo) {
            $ext = pathinfo($_FILES['foto_seguimiento']['name'], PATHINFO_EXTENSION);
            $nombre_foto = "TK_IMG_" . time() . "." . $ext;
            $ruta_destino = "../../assets/uploads/tickets/" . $nombre_foto;
            
            if (!is_dir('../../assets/uploads/tickets/')) {
                mkdir('../../assets/uploads/tickets/', 0777, true);
            }
            move_uploaded_file($_FILES['foto_seguimiento']['tmp_name'], $ruta_destino);
        }

        // Guardar comentario/foto
        $ticketCtrl->agregarSeguimiento($id_ticket, $_SESSION['usuario_id'], $mensaje, $nombre_foto);
        
        // Cambio de estado (Solo Admin)
        if (isset($_POST['nuevo_estado']) && $_SESSION['usuario_rol'] == ROL_ADMIN) {
                        try {
                $stmt_est = $pdo->prepare("UPDATE tickets SET id_estado = ?, fecha_actualizacion = NOW() WHERE id = ?");
                $resultado = $stmt_est->execute([$_POST['nuevo_estado'], $id_ticket]);
            
                if ($resultado) {
                    // Filas afectadas nos dice si realmente cambió algo
                    if ($stmt_est->rowCount() > 0) {
                        // Éxito real
                    } else {
                        // El ID existe pero el estado ya era el mismo, o el ID no coincide
                        error_log("No hubo cambios. ID: $id_ticket, Estado enviado: " . $_POST['nuevo_estado']);
                    }
                }
            } catch (PDOException $e) {
                // Esto te dirá si hay un error de sintaxis o de nombres de columnas
                die("Error en DB: " . $e->getMessage());
            }
            
           // echo "ticket cerrado".$_POST['nuevo_estado']." ".$id_ticket;
        }

        header("Location: detalle.php?id=$id_ticket&msg=ok");
        exit();
    }
}

// 3. Consulta de datos del Ticket
$stmt = $pdo->prepare("SELECT t.*, e.nombre as estado_nombre, e.color_hex, p.nombre as prioridad_nombre, 
                              u.nombre as solicitante, i.marca, i.modelo, i.serie
                       FROM tickets t
                       JOIN ticket_estados e ON t.id_estado = e.id
                       JOIN ticket_prioridades p ON t.id_prioridad = p.id
                       JOIN usuarios u ON t.id_solicitante = u.id
                       LEFT JOIN inventario i ON t.id_equipo_relacionado = i.id
                       WHERE t.id = ?");
$stmt->execute([$id_ticket]);
$ticket = $stmt->fetch();

if (!$ticket) { die("Ticket no encontrado."); }

//echo "ticket id".$id_ticket;

// Obtener el historial de seguimientos
$seguimientos = $ticketModel->listarSeguimientos($id_ticket);

//var_dump($seguimientos);

$estados = $pdo->query("SELECT * FROM ticket_estados")->fetchAll();

include '../layout/header.php';
?>

<div class="max-w-5xl mx-auto px-4">
    <div class="flex flex-col md:flex-row justify-between items-start md:items-center mb-6 gap-4">
        <div>
            <a href="index.php" class="text-blue-600 text-sm hover:underline"><i class="fas fa-arrow-left mr-1"></i> Regresar</a>
            <h2 class="text-3xl font-bold text-slate-800 mt-2">Ticket #<?php echo str_pad($ticket['id'], 5, "0", STR_PAD_LEFT); ?></h2>
            <p class="text-slate-500 font-medium"><?php echo $ticket['titulo']; ?></p>
        </div>
        <div class="flex gap-2">
            <span class="px-4 py-2 rounded-xl text-white text-xs font-bold uppercase shadow-sm" style="background-color: <?php echo $ticket['color_hex']; ?>">
                <?php echo $ticket['estado_nombre']; ?>
            </span>
        </div>
    </div>

    <div class="grid grid-cols-1 lg:grid-cols-3 gap-8">
        <div class="lg:col-span-2 space-y-8">
            
            <div class="bg-white p-6 rounded-2xl shadow-sm border border-slate-100">
                <h4 class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-3">Reporte Inicial</h4>
                <div class="bg-slate-50 p-4 rounded-xl text-slate-700 text-sm italic">
                    <?php echo nl2br(htmlspecialchars($ticket['descripcion'])); ?>
                </div>
                <?php if($ticket['marca']): ?>
                    <div class="mt-4 p-3 bg-blue-50 text-blue-700 rounded-lg text-xs flex items-center border border-blue-100">
                        <i class="fas fa-laptop mr-2"></i> 
                        <strong>Equipo:</strong> <?php echo $ticket['marca']." ".$ticket['modelo']." (".$ticket['serie'].")"; ?>
                    </div>
                <?php endif; ?>
            </div>

            <div class="space-y-4">
                <h4 class="text-sm font-bold text-slate-800 flex items-center gap-2">
                    <i class="fas fa-comments text-blue-500"></i> Historial de Soporte
                </h4>
                
                <?php if(empty($seguimientos)): ?>
                    <p class="text-center py-6 text-slate-400 italic text-sm">No hay comentarios en este ticket.</p>
                <?php endif; ?>

                <?php foreach($seguimientos as $s): ?>
                    <div class="flex <?php echo ($s['id_autor'] == $_SESSION['usuario_id']) ? 'justify-end' : 'justify-start'; ?>">
                        <div class="max-w-[85%] p-4 rounded-2xl shadow-sm <?php echo ($s['id_autor'] == $_SESSION['usuario_id']) ? 'bg-slate-800 text-white' : 'bg-white border border-slate-200 text-slate-700'; ?>">
                            <div class="flex justify-between items-center mb-2 gap-4">
                                <span class="text-[10px] font-bold <?php echo ($s['id_autor'] == $_SESSION['usuario_id']) ? 'text-blue-300' : 'text-slate-400'; ?>">
                                    <?php echo htmlspecialchars($s['autor']); ?>
                                </span>
                                <span class="text-[9px] opacity-60">
                                    <?php echo date('H:i | d M', strtotime($s['fecha'])); ?>
                                </span>
                            </div>
                            
                            <?php if($s['mensaje']): ?>
                                <p class="text-sm"><?php echo nl2br(htmlspecialchars($s['mensaje'])); ?></p>
                            <?php endif; ?>

                            <?php if($s['foto']): ?>
                                <div class="mt-3 overflow-hidden rounded-lg">
                                    <a href="../../assets/uploads/tickets/<?php echo $s['foto']; ?>" target="_blank">
                                        <img src="../../assets/uploads/tickets/<?php echo $s['foto']; ?>" class="w-full h-auto hover:opacity-90 transition shadow-inner">
                                    </a>
                                </div>
                            <?php endif; ?>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>

            <div class="bg-white p-6 rounded-2xl shadow-lg border border-slate-200">
                <form action="detalle.php?id=<?php echo $id_ticket; ?>" method="POST" enctype="multipart/form-data" class="space-y-4">
                    <textarea name="mensaje" rows="3" placeholder="Escriba una actualización o respuesta técnica..." 
                              class="w-full p-4 bg-slate-50 border border-slate-200 rounded-xl focus:ring-2 focus:ring-blue-500 outline-none text-sm transition"></textarea>
                    
                    <div class="flex flex-col md:flex-row justify-between items-center gap-4">
                        <label class="flex items-center gap-2 cursor-pointer bg-slate-100 px-4 py-2 rounded-xl hover:bg-slate-200 transition group w-full md:w-auto">
                            <i class="fas fa-image text-slate-500 group-hover:text-blue-600"></i>
                            <span class="text-xs font-bold text-slate-500">Adjuntar Foto</span>
                            <input type="file" name="foto_seguimiento" accept="image/*" class="hidden" onchange="document.getElementById('filename').innerText = this.files[0].name">
                            <span id="filename" class="text-[10px] text-blue-600 truncate max-w-[100px]"></span>
                        </label>

                        <?php if($_SESSION['usuario_rol'] == ROL_ADMIN): ?>
                            <div class="w-full md:w-auto">
                                <select name="nuevo_estado" class="text-xs font-bold p-2.5 border rounded-xl bg-slate-50 outline-none w-full">
                                    <?php foreach($estados as $est): ?>
                                        <option value="<?php echo $est['id']; ?>" <?php echo ($est['id'] == $ticket['id_estado']) ? 'selected' : ''; ?>>
                                            Estado: <?php echo $est['nombre']; ?>
                                        </option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                        <?php endif; ?>

                        <button type="submit" class="bg-blue-600 hover:bg-blue-700 text-white px-8 py-2.5 rounded-xl font-bold text-sm shadow-lg shadow-blue-600/20 transition w-full md:w-auto">
                            Enviar Respuesta
                        </button>
                    </div>
                </form>
            </div>
        </div>

        <div class="lg:col-span-1">
            <div class="bg-slate-800 rounded-2xl p-6 text-white shadow-xl sticky top-6">
                <h4 class="text-[10px] font-bold text-blue-400 uppercase mb-6 tracking-widest">Información del Ticket</h4>
                <div class="space-y-5">
                    <div>
                        <p class="text-slate-500 text-[10px] uppercase font-bold">Solicitante</p>
                        <p class="text-sm font-semibold"><?php echo $ticket['solicitante']; ?></p>
                    </div>
                    <div>
                        <p class="text-slate-500 text-[10px] uppercase font-bold">Prioridad</p>
                        <p class="text-sm"><?php echo $ticket['prioridad_nombre']; ?></p>
                    </div>
                    <div>
                        <p class="text-slate-500 text-[10px] uppercase font-bold">Reportado el</p>
                        <p class="text-sm"><?php echo date('d/m/Y H:i', strtotime($ticket['fecha_creacion'])); ?></p>
                    </div>
                    <div>
                        <p class="text-slate-500 text-[10px] uppercase font-bold">Última Actividad</p>
                        <p class="text-sm">
                            <?php echo !empty($ticket['fecha_actualizacion']) ? date('d/m/Y H:i', strtotime($ticket['fecha_actualizacion'])) : 'Sin cambios'; ?>
                        </p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<?php include '../layout/footer.php'; ?>