<?php
// api/ver_pdf_firmado.php — MODIFICADO PARA AZURE BLOB STORAGE
require_once __DIR__ . '/../config/app.php';
require_once __DIR__ . '/../config/onedrive.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/functions.php';
require_once __DIR__ . '/../includes/OneDriveStorage.php';
requireRol([ROL_COORDINADOR, ROL_ADMIN, ROL_SECRETARIA, ROL_GESTOR_PPP]);

$db         = getDB();
$idPractica = (int)($_GET['practica'] ?? 0);
$codigoDoc  = trim($_GET['doc'] ?? '');
$modo       = trim($_GET['modo'] ?? '');

$VALIDOS = ['001','002','003','004','002A','005','008','009','010','011','012'];
if (!$idPractica || !in_array($codigoDoc, $VALIDOS)) {
    http_response_code(400); die('Parámetros inválidos.');
}

// ── Modo plantilla ────────────────────────────────────────────────
if ($modo === 'plantilla') {
    header("Location: " . BASE_URL . "/modules/coordinador/generar_ficha_ppp.php?id={$idPractica}#doc-{$codigoDoc}");
    exit;
}

// ── Buscar el documento en BD ─────────────────────────────────────
$st = $db->prepare("
    SELECT ruta_archivo, nombre_archivo
    FROM   documentos_ppp_gestion
    WHERE  id_practica = :ip AND codigo_doc = :cod
    LIMIT 1
");
$st->execute([':ip' => $idPractica, ':cod' => $codigoDoc]);
$doc = $st->fetch();

if (!$doc || !$doc['ruta_archivo']) {
    http_response_code(404);
    echo '<!DOCTYPE html><html><head><meta charset="utf-8">
    <style>body{font-family:Arial,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#f5f5f5;}
    .box{text-align:center;background:#fff;padding:40px;border-radius:12px;box-shadow:0 4px 20px #0002;}
    h2{color:#c00;margin-bottom:8px;}p{color:#666;}</style></head><body>
    <div class="box"><h2>PDF no encontrado</h2>
    <p>El estudiante aún no ha subido el documento PPP-' . htmlspecialchars($codigoDoc) . '.</p>
    <a href="javascript:window.close()" style="color:#1a73e8;">Cerrar</a></div></body></html>';
    exit;
}

// ── Servir el archivo (Azure o local según ruta_archivo) ──────────
OneDriveStorage::servirArchivo($doc['ruta_archivo'], $doc['nombre_archivo'], 'application/pdf');
