<?php
/**
 * Generación de la Ficha de Arriendo en PDF (FPDF + FPDI sobre plantilla).
 * Única fuente de verdad: la usan el registro, el envío de correos,
 * la vista por token y el conserje.
 */
use setasign\Fpdi\Fpdi;

require_once __DIR__ . '/../lib/fpdf/fpdf.php';
require_once __DIR__ . '/../lib/fpdi/src/autoload.php';

/**
 * Construye el PDF de la ficha.
 * $modo 'F' => guarda en temp_pdf y devuelve la ruta.
 * $modo 'I' => lo muestra en el navegador (inline) y termina.
 */
function generarFichaPDF(mysqli $conn, int $id_arrendatario, string $modo = 'F') {

    /* ---------- Datos del arrendatario ---------- */
    $stmt = $conn->prepare("
        SELECT
            a.nombre AS arrendatario_nombre,
            a.rut    AS arrendatario_rut,
            a.direccion, a.celular, a.email,
            a.fecha_inicio, a.fecha_salida,
            a.hora_ingreso, a.hora_salida,
            a.patente_vehiculo, a.autorizado_visitas,
            p.numero_departamento, p.estacionamiento,
            u.nombre AS propietario_nombre
        FROM arrendatarios a
        INNER JOIN propietarios p ON a.id_propietario = p.id_propietario
        INNER JOIN usuarios u     ON u.id_usuario    = p.id_usuario
        WHERE a.id_arrendatario = ?
        LIMIT 1");
    $stmt->bind_param('i', $id_arrendatario);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($result->num_rows !== 1) {
        return false;
    }
    $data = $result->fetch_assoc();
    $dias = max((new DateTime($data['fecha_inicio']))->diff(new DateTime($data['fecha_salida']))->days, 1);

    /* ---------- Acompañantes ---------- */
    $stmt = $conn->prepare("SELECT nombre, rut FROM acompanantes WHERE id_arrendatario = ?");
    $stmt->bind_param('i', $id_arrendatario);
    $stmt->execute();
    $acompanantes = $stmt->get_result();

    /* ---------- PDF sobre plantilla ---------- */
    $pdf = new Fpdi();
    $plantilla = __DIR__ . '/../plantillas/Ficha_arrendatario_lagunamar_6.pdf';
    $pdf->setSourceFile($plantilla);

    $tpl = $pdf->importPage(1);
    $pdf->AddPage();
    $pdf->useTemplate($tpl);

    $txt = function ($s) { return iconv('UTF-8', 'ISO-8859-1//TRANSLIT', (string)$s); };

    $numeroDpto = $data['numero_departamento'];
    $piso       = substr($numeroDpto, 1, 2);

    $pdf->SetFont('Arial', 'B', 15);
    $pdf->SetXY(77, 16);
    $pdf->Write(9, $txt('FICHA ARRENDATARIO'));

    $pdf->SetFont('Arial', 'B', 9);
    $pdf->SetXY(78, 20);
    $pdf->Write(9, $txt('Propietario(a): ' . $data['propietario_nombre']));

    $pdf->SetFont('Arial', 'B', 11);
    $pdf->SetXY(61, 32.5);
    $pdf->Write(10, $txt($data['arrendatario_nombre']));

    $pdf->SetFont('Arial', 'B', 10);
    $pdf->SetXY(140, 32.5);
    $pdf->Write(10, $txt($data['arrendatario_rut']));

    $pdf->SetFont('Arial', 'B', 11);
    $pdf->SetXY(40, 42.5);
    $pdf->Write(10, $txt($data['direccion']));

    $pdf->SetFont('Arial', 'B', 10);
    $pdf->SetXY(140, 53);
    $pdf->Write(10, $txt($data['celular']));

    $pdf->SetXY(58, 63);
    $pdf->Write(10, $txt($data['email']));

    $pdf->SetXY(58, 76);
    $pdf->Write(10, (string)$dias);

    $pdf->SetXY(116, 77);
    $pdf->Write(8, $txt($numeroDpto . ' Piso ' . $piso));

    $pdf->SetFont('Arial', 'B', 12);
    $pdf->SetXY(182, 76.5);
    $pdf->Write(10, $txt($data['estacionamiento']));

    $pdf->SetFont('Arial', 'B', 10);
    $pdf->SetXY(32, 87);
    $pdf->Write(10, date('d-m-Y', strtotime($data['fecha_inicio'])));

    $pdf->SetXY(80, 87);
    $pdf->Write(10, date('d-m-Y', strtotime($data['fecha_salida'])));

    /* Registros antiguos traen el campo en NULL o en minúsculas: lo normalizamos
       para que la ficha nunca salga con el campo en blanco. */
    $visitas = strtoupper(trim((string)$data['autorizado_visitas']));
    if ($visitas !== 'SI' && $visitas !== 'NO') {
        $visitas = 'NO INDICADO';
    }
    $pdf->SetXY(17, 97);
    $pdf->Write(9, $txt('Autorizado para recibir visitas: ' . $visitas));

    $pdf->SetXY(18, 262);
    $pdf->Write(10, $txt('Dirección Depto: ' . CONDOMINIO_DIRECCION));

    $pdf->SetXY(55, 197);
    $pdf->Write(10, $txt($data['patente_vehiculo']));

    $pdf->SetXY(55, 217);
    $pdf->Write(10, date('H:i', strtotime($data['hora_ingreso'])));

    $pdf->SetXY(55, 234.5);
    $pdf->Write(10, date('H:i', strtotime($data['hora_salida'])));

    /* Acompañantes */
    $y = 126;
    while ($acom = $acompanantes->fetch_assoc()) {
        $pdf->SetXY(27, $y);
        $pdf->Write(6, $txt($acom['nombre']));
        $pdf->SetXY(120, $y);
        $pdf->Write(6, $txt($acom['rut']));
        $y += 8;
    }

    /* Página 2 de la plantilla (reglamento) */
    $pdf->AddPage();
    $tpl2 = $pdf->importPage(2);
    $pdf->useTemplate($tpl2);

    if ($modo === 'I') {
        $pdf->Output('Ficha_Arriendo.pdf', 'I');
        exit;
    }

    $ruta = __DIR__ . "/../temp_pdf/ficha_{$id_arrendatario}.pdf";
    $pdf->Output($ruta, 'F');
    return $ruta;
}
