<?php
session_start();
require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/../lib/fpdf/fpdf.php';

// Verificar autenticación
if (!isset($_SESSION['user_id'])) {
    die("Acceso denegado. Por favor, inicie sesión.");
}

$entrevista_id = $_GET['entrevista_id'] ?? null;

if (!$entrevista_id) {
    die("ID de entrevista no proporcionado.");
}

try {
    $stmt = $pdo->prepare("
        SELECT 
            ea.fecha_entrevista,
            ea.fecha_modificacion,
            ea.motivo,
            ea.observaciones,
            ea.acuerdos,
            CONCAT(a.nombre, ' ', a.ap_paterno, ' ', a.ap_materno) as alumno_nombre,
            a.run as alumno_run,
            ur.usuario as entrevistador_nombre,
            um.usuario as modificador_nombre
        FROM entrevistas_alumnos ea
        JOIN alumnos a ON ea.alumno_id = a.id
        LEFT JOIN usuarios ur ON ea.usuario_registro = ur.id
        LEFT JOIN usuarios um ON ea.usuario_modificacion = um.id
        WHERE ea.id = ?
    ");
    $stmt->execute([$entrevista_id]);
    $entrevista = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$entrevista) {
        die("Entrevista no encontrada.");
    }
} catch (Exception $e) {
    die("Error al obtener los datos de la entrevista: " . $e->getMessage());
}

class PDF_Extended extends FPDF
{
    // Cabecera de página
    function Header()
    {
        // Verificar si existe el logo
        $logo_path = __DIR__ . '/../assets/logo_crn.png';
        $logo_exists = file_exists($logo_path);

        if ($logo_exists) {
            // Agregar logo al lado izquierdo respetando el margen
            $this->Image($logo_path, 20, 10, 25); // x=20 para respetar margen izquierdo, y, ancho (25mm)

            // Posicionar texto al centro, dejando espacio para el logo
            $this->SetY(12); // Ajustar posición vertical
            $this->SetFont('Arial', 'B', 12);
            $this->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ESCUELA CARMEN REVECO NÚÑEZ'), 0, 1, 'C');
            $this->SetFont('Arial', '', 10);
            $this->Cell(0, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'EQUIPO DE CONVIVENCIA EDUCATIVA'), 0, 1, 'C');

            // Asegurar que el contenido comience después del logo
            $current_y = $this->GetY();
            $logo_bottom = 10 + 25; // posición Y + altura del logo
            if ($current_y < $logo_bottom) {
                $this->SetY($logo_bottom + 2);
            }
        } else {
            // Fallback sin logo
            $this->SetFont('Arial', 'B', 12);
            $this->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ESCUELA CARMEN REVECO NÚÑEZ'), 0, 1, 'C');
            $this->SetFont('Arial', '', 10);
            $this->Cell(0, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'EQUIPO DE CONVIVENCIA EDUCATIVA'), 0, 1, 'C');
        }

        // Espaciado después del encabezado
        $this->Ln(8);

        // Título específico del documento
        $this->SetFont('Arial', 'B', 14);
        $this->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'FICHA DE ENTREVISTA CON ALUMNO'), 0, 1, 'C');
        $this->Ln(8);
    }

    // Pie de página
    function Footer()
    {
        $this->SetY(-15);
        $this->SetFont('Arial', 'I', 8);
        $this->Cell(0, 10, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Página ') . $this->PageNo() . '/{nb}', 0, 0, 'C');
    }

    // Función para verificar si hay espacio suficiente y hacer salto de página si es necesario
    function verificarEspacio($alto_necesario)
    {
        $margen_inferior = 25; // Margen inferior definido
        $espacio_disponible = 297 - $this->GetY() - $margen_inferior; // A4 = 297mm de alto

        if ($espacio_disponible < $alto_necesario) {
            $this->AddPage();
            return true; // Se hizo salto de página
        }
        return false; // No se necesitó salto de página
    }
    // Función para calcular el número de líneas para MultiCell
    function NbLines($w, $txt)
    {
        $cw = &$this->CurrentFont['cw'];
        if ($w == 0)
            $w = $this->w - $this->rMargin - $this->x;
        $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
        $s = str_replace("\r", '', $txt);
        $nb = strlen($s);
        if ($nb > 0 and $s[$nb - 1] == "\n")
            $nb--;
        $sep = -1;
        $i = 0;
        $j = 0;
        $l = 0;
        $nl = 1;
        while ($i < $nb) {
            $c = $s[$i];
            if ($c == "\n") {
                $i++;
                $sep = -1;
                $j = $i;
                $l = 0;
                $nl++;
                continue;
            }
            if ($c == ' ')
                $sep = $i;
            $l += $cw[$c];
            if ($l > $wmax) {
                if ($sep == -1) {
                    if ($i == $j)
                        $i++;
                } else
                    $i = $sep + 1;
                $sep = -1;
                $j = $i;
                $l = 0;
                $nl++;
            } else
                $i++;
        }
        return $nl;
    }

    // Celda con múltiples líneas
    function MultiCellB($w, $h, $txt, $border = 0, $align = 'J', $fill = false)
    {
        $this->MultiCell($w, $h, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $txt), $border, $align, $fill);
    }

    // Caja de texto con título y contenido multilínea
    function TextBox($title, $content)
    {
        $this->verificarEspacio(30); // Espacio mínimo para el cuadro

        $this->SetFont('Arial', 'B', 11);
        $this->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $title), 0, 1);
        $this->SetFont('Arial', '', 10);

        $content_text = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $content);
        $nb_lines = $this->NbLines(170, $content_text);
        $cell_height = max(20, $nb_lines * 5);

        $this->verificarEspacio($cell_height + 10);

        $x = $this->GetX();
        $y = $this->GetY();
        $this->Rect($x, $y, 170, $cell_height + 10);
        $this->SetXY($x + 5, $y + 5);
        $this->MultiCell(160, 5, $content_text, 0, 'L');
        $this->SetY($y + $cell_height + 10);
    }
}

$fecha_formateada = 'No especificada';
if (!empty($entrevista['fecha_entrevista'])) {
    try {
        $dt = new DateTime($entrevista['fecha_entrevista']);
        $fecha_formateada = $dt->format('d/m/Y H:i');
    } catch (Exception $e) {
        // Si la fecha es inválida, se mantiene el valor por defecto.
    }
}

$fecha_modificacion_formateada = 'No especificada';
if (!empty($entrevista['fecha_modificacion'])) {
    try {
        $dt = new DateTime($entrevista['fecha_modificacion']);
        $fecha_modificacion_formateada = $dt->format('d/m/Y H:i');
    } catch (Exception $e) {
        // Si la fecha es inválida, se mantiene el valor por defecto.
    }
}

$modificador_nombre = 'No especificado';
if (!empty($entrevista['modificador_nombre'])) {
    $modificador_nombre = $entrevista['modificador_nombre'];
} elseif (!empty($entrevista['entrevistador_nombre'])) {
    // Si no hay modificador, se asume que el creador es el último en tocarlo.
    $modificador_nombre = $entrevista['entrevistador_nombre'];
}

$pdf = new PDF_Extended();
$pdf->AliasNbPages(); // Habilitar conteo total de páginas para el pie
$pdf->SetMargins(20, 35, 20); // Izquierda, Superior (más espacio para header con logo), Derecha - Márgenes simétricos
$pdf->SetAutoPageBreak(true, 25); // Margen inferior para el pie de página
$pdf->AddPage();

// --- Datos Generales ---
$pdf->SetFont('Arial', 'B', 11);
$pdf->SetFillColor(230, 230, 230);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'DATOS GENERALES'), 1, 1, 'C', true);
$pdf->SetFont('Arial', '', 10);

$pdf->Cell(40, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Alumno:'), 1, 0, 'L');
$pdf->MultiCellB(130, 7, $entrevista['alumno_nombre'] . ' (RUN: ' . $entrevista['alumno_run'] . ')', 1, 'L');

$pdf->Cell(40, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Fecha Entrevista:'), 1, 0, 'L');
$pdf->Cell(130, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $fecha_formateada), 1, 1, 'L');

$pdf->Cell(40, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Entrevistador:'), 1, 0, 'L');
$pdf->Cell(130, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $entrevista['entrevistador_nombre'] ?? 'No especificado'), 1, 1, 'L');

$pdf->Cell(40, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Últ. Modificación:'), 1, 0, 'L');
$pdf->Cell(130, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $fecha_modificacion_formateada), 1, 1, 'L');

$pdf->Cell(40, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Modificado por:'), 1, 0, 'L');
$pdf->Cell(130, 7, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $modificador_nombre), 1, 1, 'L');

$pdf->Ln(5);

// --- Detalles de la Entrevista ---
$pdf->TextBox('MOTIVO', $entrevista['motivo'] ?? '-');
$pdf->Ln(3);

$pdf->TextBox('Observaciones y Registro', $entrevista['observaciones'] ?? '-');
$pdf->Ln(3);

$pdf->TextBox('Acuerdos y Compromisos', $entrevista['acuerdos'] ?? '-');
$pdf->Ln(15);

// --- Sección de Firmas ---
$pdf->verificarEspacio(40); // Espacio para las firmas

$y_firmas = $pdf->GetY();
$ancho_firma = 80;
$espacio_entre_firmas = 10;
$x_firma1 = $pdf->GetX();
$x_firma2 = $x_firma1 + $ancho_firma + $espacio_entre_firmas;

// Firma Entrevistador
$pdf->Line($x_firma1, $y_firmas + 10, $x_firma1 + $ancho_firma, $y_firmas + 10);
$pdf->SetXY($x_firma1, $y_firmas + 11);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell($ancho_firma, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $entrevista['entrevistador_nombre'] ?? 'Entrevistador'), 0, 0, 'C');
$pdf->SetXY($x_firma1, $y_firmas + 16);
$pdf->SetFont('Arial', 'I', 8);
$pdf->Cell($ancho_firma, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Firma Entrevistador'), 0, 0, 'C');

// Firma Alumno
$pdf->Line($x_firma2, $y_firmas + 10, $x_firma2 + $ancho_firma, $y_firmas + 10);
$pdf->SetXY($x_firma2, $y_firmas + 11);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell($ancho_firma, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $entrevista['alumno_nombre'] ?? 'Alumno'), 0, 1, 'C');
$pdf->SetXY($x_firma2, $y_firmas + 16);
$pdf->SetFont('Arial', 'I', 8);
$pdf->Cell($ancho_firma, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Firma Alumno'), 0, 1, 'C');


$pdf->Output('I', 'Entrevista_Alumno_' . $entrevista['alumno_run'] . '.pdf');
