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

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

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

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

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

$stmt = $pdo->prepare("
    SELECT 
        at.*,
        a.run as alumno_run,
        CONCAT(a.nombre, ' ', a.ap_paterno, ' ', a.ap_materno) as alumno_nombre_completo,
        g.nombre as grado_nombre,
        u.usuario as profesional_nombre
    FROM atencion_sicologica at
    JOIN alumnos a ON at.alumno_id = a.id
    LEFT JOIN matriculas m ON a.id = m.alumno_id AND m.anio = YEAR(CURDATE()) AND m.estado = 'ACTIVA'
    LEFT JOIN grados g ON m.grado_id = g.id
    LEFT JOIN usuarios u ON at.usuario_id = u.id
    WHERE at.id = ?
");
$stmt->execute([$atencion_id]);
$atencion = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$atencion) {
    die("Error: No se encontró la atención psicológica con el ID proporcionado.");
}

class PDF extends FPDF
{
    private $atencion;

    function __construct($atencion)
    {
        parent::__construct();
        $this->atencion = $atencion;
    }

    function Header()
    {
        $logoPath = __DIR__ . '/../assets/logo_crn.png';
        if (file_exists($logoPath)) {
            $this->Image($logoPath, 20, 8, 20);
        }

        $this->SetY(10);
        $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', '', 10);
        $this->Cell(0, 5, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'RBD: 10671-2 | DEPARTAMENTO DE CONVIVENCIA EDUCATIVA'), 0, 1, 'C');

        $this->Ln(10);
        $this->SetFont('Arial', 'B', 12);
        $this->SetFillColor(128, 0, 32); // Color vino
        $this->SetTextColor(255, 255, 255);
        $this->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'FICHA DE ATENCIÓN PSICOLÓGICA'), 1, 1, 'C', true);
        $this->SetTextColor(0, 0, 0);
        $this->Ln(8);
    }

    function Footer()
    {
        $this->SetY(-15);
        $this->SetFont('Arial', 'I', 8);
        $this->SetTextColor(128, 128, 128);
        $fecha = date('d/m/Y H:i');
        $this->Cell(95, 5, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', "Documento generado el: $fecha"), 0, 0, 'L');
        $this->Cell(95, 5, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Página ' . $this->PageNo() . ' de {nb}'), 0, 1, 'R');
        $this->SetTextColor(0, 0, 0);
    }

    function TituloSeccion($titulo)
    {
        $this->SetFont('Arial', 'B', 11);
        $this->SetFillColor(230, 230, 230);
        $this->Cell(0, 8, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $titulo), 1, 1, 'C', true);
        $this->SetFont('Arial', '', 10);
    }

    function CampoDato($campo, $dato, $multilinea = false)
    {
        $this->SetFont('Arial', 'B', 10);
        $this->Cell(40, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $campo . ':'), 'LTB', 0);
        $this->SetFont('Arial', '', 10);
        if ($multilinea) {
            $this->MultiCell(150, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $dato), 'TRB', 'L');
        } else {
            $this->Cell(150, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $dato), 'TRB', 1);
        }
    }

    function CampoDatoLargo($campo, $dato)
    {
        $this->SetFont('Arial', 'B', 10);
        $this->Cell(190, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $campo . ':'), 1, 1, 'L');
        $this->SetFont('Arial', '', 10);
        $this->MultiCell(190, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $dato), 'LRB', 'L');
    }

    function RenderizarAtencion()
    {
        $atencion = $this->atencion;

        // --- DATOS DEL ALUMNO ---
        $this->TituloSeccion('DATOS DEL ESTUDIANTE');
        $this->CampoDato('Nombre Completo', $atencion['alumno_nombre_completo']);
        $this->CampoDato('RUN', $atencion['alumno_run']);
        $this->CampoDato('Grado', $atencion['grado_nombre'] ?? 'No matriculado este año');
        $this->Ln(5);

        // --- DETALLE DE LA ATENCIÓN ---
        $this->TituloSeccion('DETALLE DE LA ATENCIÓN');
        $fecha_atencion_dt = new DateTime($atencion['fecha_atencion']);
        $this->CampoDato('Fecha y Hora', $fecha_atencion_dt->format('d/m/Y H:i'));
        $this->CampoDato('Profesional', $atencion['profesional_nombre']);
        $this->CampoDatoLargo('Motivo de la Atención', $atencion['motivo_atencion']);
        $this->Ln(5);

        // --- REGISTRO DE LA ATENCIÓN ---
        $this->TituloSeccion('REGISTRO DE LA ATENCIÓN');
        $this->CampoDatoLargo('Antecedentes Relevantes', $atencion['antecedentes']);

        // Riesgo Suicida
        $this->SetFont('Arial', 'B', 10);
        $this->Cell(190, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Evaluación de Riesgo Suicida:'), 1, 1, 'L');
        $this->SetFont('Arial', '', 10);
        $riesgo_str = sprintf(
            "  - Ideación: %s          - Planificación: %s          - Intentos Anteriores: %s",
            $atencion['ideacion'] == 1 ? 'Sí' : 'No',
            $atencion['planificacion'] == 1 ? 'Sí' : 'No',
            $atencion['intentos'] == 1 ? 'Sí' : 'No'
        );
        $this->Cell(190, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $riesgo_str), 'LRB', 1);

        $this->CampoDatoLargo('Medidas y Acuerdos', $atencion['medidas_acuerdos']);
        $this->CampoDatoLargo('Notas Adicionales', $atencion['notas']);
        $this->CampoDatoLargo('Cierre', $atencion['cierre']);
        $this->Ln(10);

        // --- FIRMAS ---
        $this->Cell(90, 20, '', 'T', 0, 'C');
        $this->Cell(10, 20, '', 0, 0, 'C');
        $this->Cell(90, 20, '', 'T', 1, 'C');

        $this->SetX(10);
        $this->Cell(90, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Firma Profesional'), 0, 0, 'C');
        $this->Cell(10, 6, '', 0, 0, 'C');
        $this->Cell(90, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'Firma Apoderado (si corresponde)'), 0, 1, 'C');

        $this->SetX(10);
        $this->SetFont('Arial', 'I', 9);
        $this->Cell(90, 6, iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $atencion['profesional_nombre']), 0, 0, 'C');
    }
}

$pdf = new PDF($atencion);
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->RenderizarAtencion();

$primer_nombre = explode(' ', trim($atencion['alumno_nombre_completo']))[0] ?? '';
$ap_paterno = explode(' ', trim($atencion['alumno_nombre_completo']))[1] ?? '';
$nombre_archivo = 'ATN_PSICOLOGICA_' . preg_replace('/[^A-Za-z0-9_\-]/', '_', strtoupper($primer_nombre . '_' . $ap_paterno)) . '.pdf';

$pdf->Output('I', $nombre_archivo);
