<?php
session_start();

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

// Establecer la zona horaria de Santiago de Chile
date_default_timezone_set('America/Santiago');

if (!isset($_SESSION['user_id'])) {
    die("Acceso denegado.");
}

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

$matricula_id = $_GET['matricula_id'] ?? 0;
if ($matricula_id == 0) {
    die("Error: No se proporcionó un ID de matrícula válido.");
}

// Consulta para obtener los datos necesarios para el comprobante
$stmt = $pdo->prepare("
    SELECT 
        a.run AS alumno_run,
        CONCAT(a.nombre, ' ', a.ap_paterno, ' ', a.ap_materno) AS alumno_nombre,
        m.anio AS anio_matricula,
        m.fecha_matricula,
        g.nombre AS grado_nombre,
        te.nombre AS tipo_ensenanza_nombre,
        CONCAT(f_apod.nombre, ' ', f_apod.ap_paterno, ' ', f_apod.ap_materno) AS apoderado_nombre,
        f_apod.run AS apoderado_run,
        f_apod.telefono AS apoderado_telefono
    FROM matriculas m
    JOIN alumnos a ON m.alumno_id = a.id
    JOIN grados g ON m.grado_id = g.id
    JOIN tipo_ensenanza te ON g.tipo_ensenanza_id = te.id
    LEFT JOIN alumno_familiar af_apod ON a.id = af_apod.alumno_id AND af_apod.tipo_relacion = 'APODERADO TITULAR'
    LEFT JOIN familiares f_apod ON af_apod.familiar_id = f_apod.id
    WHERE m.id = ?
");
$stmt->execute([$matricula_id]);
$data = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$data) {
    die("No se encontraron datos para la matrícula especificada.");
}

class PDF_Comprobante extends FPDF
{
    function __construct()
    {
        // Inicializar FPDF con orientación Portrait y tamaño Oficio Chileno (igual que ficha_pdf.php)
        parent::__construct('P', 'mm', array(215.9, 330.2));
    }

    function AddPage($orientation = '', $size = '', $rotation = 0)
    {
        parent::AddPage($orientation, $size, $rotation);
        $this->configurarMargenesAlternados();
    }

    function configurarMargenesAlternados()
    {
        $pageNum = $this->PageNo();
        if ($pageNum % 2 == 1) {
            // Páginas impares: margen izquierdo 20mm
            $this->SetMargins(20, 10, 10);
            $this->SetX(20);
        } else {
            // Páginas pares: margen derecho 20mm (izquierdo 10mm)
            $this->SetMargins(10, 10, 20);
            $this->SetX(10);
        }
    }

    function getAnchoDisponible()
    {
        // Ancho Oficio (215.9) - Margen Izq (20/10) - Margen Der (10/20) = 185.9 mm
        return 185.9;
    }

    function Header()
    {
        $this->configurarMargenesAlternados();

        $logoPath = __DIR__ . '/../assets/logo_crn.png';
        if (file_exists($logoPath)) {
            // Ajustar X del logo según el margen actual
            $x_logo = $this->PageNo() % 2 == 1 ? 20 : 10;
            $this->Image($logoPath, $x_logo, 10, 25);
        }

        $this->SetY(12);
        $this->SetFont('Arial', 'B', 14);
        $this->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ESCUELA CARMEN REVECO NÚÑEZ'), 0, 1, 'C');
        $this->SetFont('Arial', '', 8);
        $this->Cell(0, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'RBD: 10671-2 | AVDA. MIGUEL LETELIER S-N PAINE'), 0, 1, 'C');
        $this->Cell(0, 4, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'TELÉFONO: +569 6606 0084 - EMAIL: ESCUELACRN@PAINEDUCA.CL'), 0, 1, 'C');
        $this->Ln(12);

        $this->SetFont('Arial', 'B', 16);
        $this->Cell(0, 10, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'COMPROBANTE DE MATRÍCULA'), 0, 1, 'C');
        $this->Ln(10);
    }

    function Footer()
    {
        $this->SetY(-25);
        $this->SetFont('Arial', 'I', 8);
        $this->SetTextColor(128);
        $this->Cell(0, 5, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Este documento certifica la matrícula del estudiante para el año escolar indicado.'), 0, 1, 'C');
        $this->Cell(0, 5, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Generado el: ' . date('d/m/Y H:i') . ' | Página ' . $this->PageNo() . '/{nb}'), 0, 0, 'C');
    }

    // --- NUEVAS FUNCIONES AUXILIARES ---
    function TituloSeccion($titulo)
    {
        $this->SetFont('Arial', 'B', 11);
        $this->SetFillColor(128, 0, 32); // Color burdeo/vino
        $this->SetTextColor(255, 255, 255);
        $w = $this->getAnchoDisponible();
        $this->Cell($w, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $titulo), 1, 1, 'C', true);
        $this->SetTextColor(0, 0, 0);
        $this->SetFont('Arial', '', 10);
    }

    function CampoDato($label, $data)
    {
        $this->SetFont('Arial', 'B', 10);
        $w_total = $this->getAnchoDisponible();
        $w_label = 50;
        $w_data = $w_total - $w_label;

        $this->Cell($w_label, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $label), 'LTB', 0, 'L');
        $this->SetFont('Arial', '', 10);
        $this->Cell($w_data, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $data), 'TRB', 1, 'L');
    }
    // --- FIN DE FUNCIONES AUXILIARES ---

    function Body($data)
    {
        // --- SECCIÓN DATOS DEL ESTUDIANTE ---
        $this->TituloSeccion('DATOS DEL ESTUDIANTE');
        $this->CampoDato('Nombre Completo', $data['alumno_nombre']);
        $this->CampoDato('RUN', $data['alumno_run']);
        $this->Ln(8);

        // --- SECCIÓN DATOS DEL APODERADO TITULAR ---
        $this->TituloSeccion('DATOS DEL APODERADO TITULAR');
        $this->CampoDato('Nombre Completo', $data['apoderado_nombre'] ?? 'No asignado');
        $this->CampoDato('RUN', $data['apoderado_run'] ?? 'No asignado');
        $this->CampoDato('Teléfono', $data['apoderado_telefono'] ?? 'No asignado');
        $this->Ln(8);

        // --- SECCIÓN DATOS DE LA MATRÍCULA ---
        $this->TituloSeccion('DATOS DE LA MATRÍCULA');
        $fecha_matricula_dt = new DateTime($data['fecha_matricula']);
        $this->CampoDato('Año Escolar', $data['anio_matricula']);
        $this->CampoDato('Curso Matriculado', $data['grado_nombre'] . ' (' . $data['tipo_ensenanza_nombre'] . ')');
        $this->CampoDato('Fecha de Matrícula', $fecha_matricula_dt->format('d/m/Y'));
        $this->Ln(8);

        // --- SECCIÓN CLÁUSULAS ---
        $this->SetFont('Arial', '', 9);
        $this->MultiCell(0, 5, iconv(
            'UTF-8',
            'ISO-8859-1//TRANSLIT',
            "1.- Este comprobante se entrega de conformidad a lo establecido en el artículo 53 inciso 1 del Decreto Exento Nº 152 año 2016, del Ministerio de Educación, y acredita la matrícula del alumno individualizado en este documento, para el año escolar {$data['anio_matricula']}."
        ), 0, 'J');
        $this->Ln(2);
        $this->MultiCell(0, 5, iconv(
            'UTF-8',
            'ISO-8859-1//TRANSLIT',
            "2.- Es responsabilidad del Establecimiento Educacional formalizar esta matrícula a través del Sistema de Información General de Estudiantes (SIGE)."
        ), 0, 'J');
        $this->Ln(2);
        $this->MultiCell(0, 5, iconv(
            'UTF-8',
            'ISO-8859-1//TRANSLIT',
            "3.- Este documento debe extenderse en 2 copias, quedando una en poder del establecimiento, y otra en poder del apoderado."
        ), 0, 'J');

        // --- SECCIÓN DE FIRMAS ---
        $this->Ln(25);

        // Verificar espacio para firmas
        if ($this->GetY() + 40 > $this->GetPageHeight() - 25) {
            $this->AddPage();
        }

        $y_firmas = $this->GetY();
        $ancho_firma = 80;
        $espacio_entre_firmas = 10;

        // Centrar el bloque de firmas
        $ancho_total_firmas = ($ancho_firma * 2) + $espacio_entre_firmas;
        $margen_izq_actual = ($this->PageNo() % 2 == 1) ? 20 : 10;
        $ancho_pagina = 215.9;
        // Calcular X inicial para centrar en el ancho disponible
        // $x_firma1 = $margen_izq_actual + ($this->getAnchoDisponible() - $ancho_total_firmas) / 2;
        // O simplemente usar el margen izquierdo actual como base si queremos alineado a la izquierda del contenido
        $x_firma1 = $this->GetX() + ($this->getAnchoDisponible() - $ancho_total_firmas) / 2;

        $x_firma2 = $x_firma1 + $ancho_firma + $espacio_entre_firmas;

        // --- INICIO: Añadir imagen del timbre ---
        $timbrePath = __DIR__ . '/../assets/TIMBRE ESCUELA.png';
        if (file_exists($timbrePath)) {
            // Ajustar dimensiones para que sea más redonda y centrarla
            $this->Image($timbrePath, $x_firma2 + 25, $y_firmas - 18, 30, 30);
        }
        // --- FIN: Añadir imagen del timbre ---

        // Líneas de firma
        $this->Line($x_firma1, $y_firmas + 10, $x_firma1 + $ancho_firma, $y_firmas + 10);
        $this->Line($x_firma2, $y_firmas + 10, $x_firma2 + $ancho_firma, $y_firmas + 10);

        // Texto debajo de las líneas
        $this->SetXY($x_firma1, $y_firmas + 12);
        $this->SetFont('Arial', '', 10);
        $this->Cell($ancho_firma, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Firma Apoderado'), 0, 0, 'C');

        $this->SetXY($x_firma2, $y_firmas + 12);
        $this->Cell($ancho_firma, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'PATRICIO CONTRERAS BUSTAMANTE'), 0, 1, 'C');

        // --- INICIO: Añadir cargo debajo del nombre ---
        $this->SetFont('Arial', 'B', 9);
        $this->SetX($x_firma2);
        $this->Cell($ancho_firma, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'ENCARGADO DE ADMISIÓN'), 0, 1, 'C');
        // --- FIN: Añadir cargo ---
    }
}

$pdf = new PDF_Comprobante();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->Body($data);

$nombre_archivo = 'Comprobante_Matricula_' . str_replace(' ', '_', $data['alumno_nombre']) . '.pdf';
$pdf->Output('I', $nombre_archivo);
