<?php
session_start();

// Habilitar reporte de errores para debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);

header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');

if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

require(__DIR__ . '/../lib/fpdf/fpdf.php');
require(__DIR__ . '/../config/db_auto.php');

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

// Debug temporal
error_log("DEBUG PDF: entrevista_id recibido = " . $entrevista_id);
error_log("DEBUG PDF: GET parameters = " . print_r($_GET, true));

if ($entrevista_id == 0) {
    die("Error: No se proporcionó un ID de entrevista válido.");
}


$stmt = $pdo->prepare("SELECT e.*, a.nombre AS alumno_nombre, a.ap_paterno, a.ap_materno, a.run, 
f.nombre AS familiar_nombre, f.ap_paterno AS familiar_ap_paterno, f.ap_materno AS familiar_ap_materno, f.run AS familiar_run,
COALESCE(af.parentesco_especifico, f.parentesco) AS parentesco_relacion
FROM entrevistas_apoderados e
LEFT JOIN alumnos a ON e.alumno_id = a.id
LEFT JOIN familiares f ON e.familiar_id = f.id
LEFT JOIN alumno_familiar af ON af.alumno_id = e.alumno_id AND af.familiar_id = e.familiar_id
WHERE e.id = ?");
$stmt->execute([$entrevista_id]);
$entrevista = $stmt->fetch(PDO::FETCH_ASSOC);

// Debug temporal
error_log("DEBUG PDF: Query result = " . print_r($entrevista, true));

if (!$entrevista) {
    error_log("DEBUG PDF: No se encontró entrevista con ID: " . $entrevista_id);
    die("Error: No se encontró la entrevista con el ID proporcionado: " . $entrevista_id);
}


// Valores por defecto para evitar errores
$alumno_nombre = $entrevista['alumno_nombre'] ?? '-';
$ap_paterno = $entrevista['ap_paterno'] ?? '';
$ap_materno = $entrevista['ap_materno'] ?? '';
$run = $entrevista['run'] ?? '';
$familiar_nombre = $entrevista['familiar_nombre'] ?? '-';
$familiar_ap_paterno = $entrevista['familiar_ap_paterno'] ?? '';
$familiar_ap_materno = $entrevista['familiar_ap_materno'] ?? '';
$familiar_run = $entrevista['familiar_run'] ?? '';
$parentesco_relacion = $entrevista['parentesco_relacion'] ?? '-';

// Extraer fecha y hora del campo datetime
$fecha_completa = $entrevista['fecha'] ?? '-';

// DEBUG: Log para verificar datos en PDF
error_log("DEBUG PDF - Fecha completa recibida: " . $fecha_completa);

if ($fecha_completa !== '-' && $fecha_completa !== null) {
    try {
        // Verificar si la fecha incluye hora
        if (strpos($fecha_completa, ' ') !== false) {
            // Tiene fecha y hora
            $dt = new DateTime($fecha_completa);
            $fecha = $dt->format('d-m-Y');
            $hora = $dt->format('H:i');
            error_log("DEBUG PDF - Fecha con hora - Fecha: $fecha, Hora: $hora");
        } else {
            // Solo tiene fecha, sin hora
            $dt = new DateTime($fecha_completa);
            $fecha = $dt->format('d-m-Y');
            $hora = '-'; // No hay hora disponible
            error_log("DEBUG PDF - Solo fecha - Fecha: $fecha");
        }
    } catch (Exception $e) {
        $fecha = $fecha_completa;
        $hora = '-';
        error_log("DEBUG PDF - Error al procesar fecha: " . $e->getMessage());
    }
} else {
    $fecha = '-';
    $hora = '-';
    error_log("DEBUG PDF - Fecha vacía o nula");
}

$motivo = $entrevista['motivo'] ?? '-';
$observaciones = $entrevista['observaciones'] ?? '-';
$acuerdos = $entrevista['acuerdos_compromisos'] ?? '-';
$derivacion = $entrevista['derivacion'] ?? 'no';
$institucion_derivada = $entrevista['institucion_derivada'] ?? '-';

// Clase extendida de FPDF con función NbLines y Header personalizado
class PDF_Extended extends FPDF
{
    // 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
    }

    // Encabezado personalizado que aparece en cada 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);
    }

    // Pie de página con número de página
    function Footer()
    {
        // Posición a 15 mm del final
        $this->SetY(-15);
        $this->SetFont('Arial', 'I', 8);

        // Línea separadora respetando márgenes simétricos
        $this->SetDrawColor(0, 0, 0);
        $this->Line(20, $this->GetY(), 190, $this->GetY()); // 20mm margen izq, 190mm = 210-20 margen der
        $this->Ln(2);

        // Número de página
        $this->Cell(0, 5, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Página ' . $this->PageNo() . ' de {nb}'), 0, 0, 'C');
    }

    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;
    }
}

$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();
$pdf->SetFont('Arial', 'B', 14);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ACTA ENTREVISTA APODERADO(A)'), 0, 1, 'C');
$pdf->Ln(8);

// Tabla con información básica
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'INFORMACIÓN DE LA ENTREVISTA'), 0, 1);
$pdf->SetFont('Arial', '', 10);

// Fila 1: Alumno
$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Alumno(a):'), 1, 0, 'L');
$pdf->Cell(130, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $alumno_nombre . ' ' . $ap_paterno . ' ' . $ap_materno . ' (RUN: ' . $run . ')'), 1, 1, 'L');

// Fila 2: Familiar entrevistado
$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Apoderado(a):'), 1, 0, 'L');
$pdf->Cell(130, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $familiar_nombre . ' ' . $familiar_ap_paterno . ' ' . $familiar_ap_materno . ' (RUN: ' . $familiar_run . ')'), 1, 1, 'L');

// Fila 2.5: Parentesco específico
$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Parentesco:'), 1, 0, 'L');
$pdf->Cell(130, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $parentesco_relacion), 1, 1, 'L');

// Fila 3: Fecha y Hora
$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Fecha:'), 1, 0, 'L');
$pdf->Cell(65, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $fecha), 1, 0, 'L');
$pdf->Cell(25, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Hora:'), 1, 0, 'L');
$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $hora), 1, 1, 'L');

// Fila 4: Motivo
$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Motivo:'), 1, 0, 'L');
$pdf->Cell(130, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $motivo), 1, 1, 'L');

$pdf->Ln(5);

// === VERIFICAR ESPACIO PARA SECCIÓN DE OBSERVACIONES ===
$pdf->verificarEspacio(50); // Verificar espacio mínimo de 50mm para la sección

// Tabla para Registro y Observaciones
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'REGISTRO Y OBSERVACIONES'), 0, 1);
$pdf->SetFont('Arial', '', 10);

// Calcular altura necesaria para el contenido con padding
$observaciones_text = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $observaciones);
$nb_lines = $pdf->NbLines(160, $observaciones_text); // Ancho real disponible para el texto
$cell_height = max(25, $nb_lines * 5); // Mínimo 25mm, aumenta según contenido

// Verificar nuevamente si hay espacio para el contenido real calculado
$pdf->verificarEspacio($cell_height + 15); // +15 para padding y espaciado adicional

// Dibujar el borde del cuadro respetando márgenes
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Rect($x, $y, 170, $cell_height + 10); // 170mm = 210-20-20, +10 para padding vertical

// Posicionar dentro del cuadro con padding de 5
$pdf->SetXY($x + 5, $y + 5);
$pdf->MultiCell(160, 5, $observaciones_text, 0, 'L'); // 160mm = 170-10 de padding lateral

// Mover cursor después del cuadro
$pdf->SetY($y + $cell_height + 10);

$pdf->Ln(3);

// === VERIFICAR ESPACIO PARA SECCIÓN DE ACUERDOS ===
$pdf->verificarEspacio(50); // Verificar espacio mínimo de 50mm para la sección

// Tabla para Acuerdos y Compromisos
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ACUERDOS Y COMPROMISOS'), 0, 1);
$pdf->SetFont('Arial', '', 10);

// Calcular altura necesaria para el contenido con padding
$acuerdos_text = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $acuerdos);
$nb_lines_acuerdos = $pdf->NbLines(160, $acuerdos_text); // Ancho real disponible para el texto
$cell_height_acuerdos = max(25, $nb_lines_acuerdos * 5); // Mínimo 25mm, aumenta según contenido

// Verificar nuevamente si hay espacio para el contenido real calculado
$pdf->verificarEspacio($cell_height_acuerdos + 15); // +15 para padding y espaciado adicional

// Dibujar el borde del cuadro respetando márgenes
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Rect($x, $y, 170, $cell_height_acuerdos + 10); // 170mm = 210-20-20, +10 para padding vertical

// Posicionar dentro del cuadro con padding de 5
$pdf->SetXY($x + 5, $y + 5);
$pdf->MultiCell(160, 5, $acuerdos_text, 0, 'L'); // 160mm = 170-10 de padding lateral

// Mover cursor después del cuadro
$pdf->SetY($y + $cell_height_acuerdos + 10);

$pdf->Ln(3);

// === VERIFICAR ESPACIO PARA SECCIÓN DE DERIVACIÓN ===
$pdf->verificarEspacio(25); // Verificar espacio mínimo de 25mm para la sección

// Tabla para Derivación
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'DERIVACIÓN'), 0, 1);
$pdf->SetFont('Arial', '', 10);

// Fila: Derivación
$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Derivación:'), 1, 0, 'L');
$pdf->Cell(130, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', ($derivacion == 'si' ? 'Sí' : 'No')), 1, 1, 'L');

if ($derivacion == 'si') {
    // Fila: Institución derivada (solo si hay derivación)
    $pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Institución:'), 1, 0, 'L');
    $pdf->Cell(130, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $institucion_derivada), 1, 1, 'L');
}

// Espaciado antes de las firmas
$pdf->Ln(15);

// === VERIFICAR ESPACIO PARA SECCIÓN DE FIRMAS ===
$pdf->verificarEspacio(60); // Verificar espacio para toda la sección de firmas

// === SECCIÓN DE FIRMA DEL APODERADO ===
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'FIRMA DEL APODERADO'), 0, 1, 'C');
$pdf->Ln(12); // Aumentado de 5 a 12 para mayor separación

// Línea para la firma centrada
$pdf->SetDrawColor(0, 0, 0);
$line_width = 80; // Ancho de la línea de firma
$page_width = 210; // Ancho total de la página A4
$line_start_x = ($page_width - $line_width) / 2; // Centrar la línea
$pdf->Line($line_start_x, $pdf->GetY() + 10, $line_start_x + $line_width, $pdf->GetY() + 10);

$pdf->Ln(15);

// Nombre y RUN del apoderado centrados
$pdf->SetFont('Arial', '', 10);
$nombre_completo_apoderado = trim($familiar_ap_paterno . ' ' . $familiar_ap_materno . ', ' . $familiar_nombre);
$pdf->Cell(0, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $nombre_completo_apoderado), 0, 1, 'C');
$pdf->Cell(0, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'RUN: ' . $familiar_run), 0, 1, 'C');

$pdf->Ln(20);

// === TABLA DE FIRMAS DEL EQUIPO DE CONVIVENCIA ===
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'FIRMA EQUIPO DE CONVIVENCIA EDUCATIVA'), 0, 1, 'C');
$pdf->Ln(5);

// Configurar tabla de 4 columnas respetando márgenes simétricos
$table_width = 170; // 210mm total - 20mm izq - 20mm der = 170mm
$col_width = $table_width / 4; // 42.5mm por columna
$header_height = 15; // Altura para encabezados
$signature_height = 25; // Altura para firmas

$pdf->SetFont('Arial', 'B', 9);

// Crear tabla completa con bordes uniformes
$x_start = 20; // Respetar margen izquierdo de 20mm
$y_start = $pdf->GetY();

// Dibujar todas las celdas de encabezado primero
$pdf->Rect($x_start, $y_start, $col_width, $header_height); // Columna 1
$pdf->Rect($x_start + $col_width, $y_start, $col_width, $header_height); // Columna 2  
$pdf->Rect($x_start + 2 * $col_width, $y_start, $col_width, $header_height); // Columna 3
$pdf->Rect($x_start + 3 * $col_width, $y_start, $col_width, $header_height); // Columna 4

// Agregar texto a cada encabezado con posicionamiento preciso
// Columna 1: ENCARGADA DE CONVIVENCIA
$pdf->SetXY($x_start, $y_start + 3);
$pdf->Cell($col_width, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ENCARGADA DE'), 0, 0, 'C');
$pdf->SetXY($x_start, $y_start + 7);
$pdf->Cell($col_width, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'CONVIVENCIA'), 0, 0, 'C');

// Columna 2: TRABAJADORA SOCIAL
$pdf->SetXY($x_start + $col_width, $y_start + 3);
$pdf->Cell($col_width, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'TRABAJADORA'), 0, 0, 'C');
$pdf->SetXY($x_start + $col_width, $y_start + 7);
$pdf->Cell($col_width, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'SOCIAL'), 0, 0, 'C');

// Columna 3: SICÓLOGA
$pdf->SetXY($x_start + 2 * $col_width, $y_start + 5);
$pdf->Cell($col_width, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'SICÓLOGA'), 0, 0, 'C');

// Columna 4: OTRO(A)
$pdf->SetXY($x_start + 3 * $col_width, $y_start + 5);
$pdf->Cell($col_width, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'OTRO(A)'), 0, 0, 'C');

// Posicionar cursor para las celdas de firma
$pdf->SetXY($x_start, $y_start + $header_height);

// Fila de espacios para firmas con bordes uniformes
$pdf->SetFont('Arial', '', 10);
$pdf->Cell($col_width, $signature_height, '', 1, 0, 'C');
$pdf->Cell($col_width, $signature_height, '', 1, 0, 'C');
$pdf->Cell($col_width, $signature_height, '', 1, 0, 'C');
$pdf->Cell($col_width, $signature_height, '', 1, 1, 'C');

$pdf->Output('I', 'entrevista_apoderado.pdf');
