<?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');

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

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

$stmt = $pdo->prepare("SELECT c.*, 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 citaciones_apoderados c
LEFT JOIN alumnos a ON c.alumno_id = a.id
LEFT JOIN familiares f ON c.familiar_id = f.id
LEFT JOIN alumno_familiar af ON af.alumno_id = c.alumno_id AND af.familiar_id = c.familiar_id
WHERE c.id = ?");
$stmt->execute([$citacion_id]);
$citacion = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$citacion) {
    die("Error: No se encontró la citación con el ID proporcionado: " . $citacion_id);
}

// Valores por defecto para evitar errores
$alumno_nombre = $citacion['alumno_nombre'] ?? '-';
$ap_paterno = $citacion['ap_paterno'] ?? '';
$ap_materno = $citacion['ap_materno'] ?? '';
$run = $citacion['run'] ?? '';

$familiar_nombre = $citacion['familiar_nombre'] ?? '-';
$familiar_ap_paterno = $citacion['familiar_ap_paterno'] ?? '';
$familiar_ap_materno = $citacion['familiar_ap_materno'] ?? '';
$familiar_run = $citacion['familiar_run'] ?? '';
$parentesco_relacion = $citacion['parentesco_relacion'] ?? '-';

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

if ($fecha_completa !== '-' && $fecha_completa !== null) {
    try {
        if (strpos($fecha_completa, ' ') !== false) {
            $dt = new DateTime($fecha_completa);
            $fecha = $dt->format('d-m-Y');
            $hora = $dt->format('H:i');
        } else {
            $dt = new DateTime($fecha_completa);
            $fecha = $dt->format('d-m-Y');
            $hora = '-';
        }
    } catch (Exception $e) {
        $fecha = $fecha_completa;
        $hora = '-';
    }
} else {
    $fecha = '-';
    $hora = '-';
}

$motivo = $citacion['motivo'] ?? '-';
$comunicacion = $citacion['comunicacion'] ?? '-';

// Clase extendida de FPDF con función NbLines y Header personalizado
class PDF_Extended extends FPDF
{
    function verificarEspacio($alto_necesario)
    {
        $margen_inferior = 25; 
        $espacio_disponible = 297 - $this->GetY() - $margen_inferior;

        if ($espacio_disponible < $alto_necesario) {
            $this->AddPage();
            return true;
        }
        return false;
    }

    function Header()
    {
        $logo_path = __DIR__ . '/../assets/logo_crn.png';
        $logo_exists = file_exists($logo_path);

        if ($logo_exists) {
            $this->Image($logo_path, 20, 10, 25);
            $this->SetY(12);
            $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');

            $current_y = $this->GetY();
            $logo_bottom = 10 + 25;
            if ($current_y < $logo_bottom) {
                $this->SetY($logo_bottom + 2);
            }
        } else {
            $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');
        }
        $this->Ln(8);
    }

    function Footer()
    {
        $this->SetY(-15);
        $this->SetFont('Arial', 'I', 8);
        $this->SetDrawColor(0, 0, 0);
        $this->Line(20, $this->GetY(), 190, $this->GetY());
        $this->Ln(2);
        $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();
$pdf->SetMargins(20, 35, 20);
$pdf->SetAutoPageBreak(true, 25);
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 14);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'CITACIÓN 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 CITACIÓN'), 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
$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 Citación:'), 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);

// === COMUNICACIÓN ENVIADA ===
$pdf->verificarEspacio(50);
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'COMUNICACIÓN ENVIADA AL APODERADO'), 0, 1);
$pdf->SetFont('Arial', '', 10);

$comunicacion_text = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $comunicacion);
$nb_lines = $pdf->NbLines(160, $comunicacion_text); 
$cell_height = max(25, $nb_lines * 5);

$pdf->verificarEspacio($cell_height + 15);

$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Rect($x, $y, 170, $cell_height + 10);

$pdf->SetXY($x + 5, $y + 5);
$pdf->MultiCell(160, 5, $comunicacion_text, 0, 'L');

$pdf->SetY($y + $cell_height + 10);
$pdf->Ln(15);

// === ESTADO DE NOTIFICACIÓN ===
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ESTADO DE REGISTRO DE NOTIFICACIÓN'), 0, 1);
$pdf->SetFont('Arial', '', 10);

$estado_email = ucfirst($citacion['estado_envio_email']);
$estado_wsp = ucfirst($citacion['estado_envio_whatsapp']);

$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Vía Correo Electrónico:'), 1, 0, 'L');
$pdf->Cell(45, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $estado_email), 1, 0, 'C');

$pdf->Cell(40, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Vía WhatsApp:'), 1, 0, 'L');
$pdf->Cell(45, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $estado_wsp), 1, 1, 'C');


$pdf->Ln(20);

// === VERIFICAR ESPACIO PARA SECCIÓN DE FIRMAS ===
$pdf->verificarEspacio(60); 

$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'CONSTANCIA DE ASISTENCIA A CITACIÓN'), 0, 1, 'C');
$pdf->SetFont('Arial', 'I', 9);
$pdf->Cell(0, 5, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', '(A completar el día de la reunión)'), 0, 1, 'C');
$pdf->Ln(15);

// Línea para la firma centrada
$pdf->SetDrawColor(0, 0, 0);
$line_width = 80;
$page_width = 210;
$line_start_x = ($page_width - $line_width) / 2;
$pdf->Line($line_start_x, $pdf->GetY() + 10, $line_start_x + $line_width, $pdf->GetY() + 10);

$pdf->Ln(15);

$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', 'Firma: ' . $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(2);
$pdf->Cell(0, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Fecha real de presentación: ____/____/________'), 0, 1, 'C');

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