<?php
// api/ver_pdf_conv_coord.php — MODIFICADO PARA AZURE BLOB STORAGE
// Ver PDF de convalidación — rol COORDINADOR / ADMIN / SECRETARIA
require_once __DIR__ . '/../config/app.php';
require_once __DIR__ . '/../config/onedrive.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/OneDriveStorage.php';
requireRol(ROL_COORDINADOR, ROL_ADMIN, ROL_SECRETARIA);

$db   = getDB();
$user = currentUser();

$idPractica = (int)($_GET['practica'] ?? 0);
$codDoc     = trim($_GET['doc'] ?? '');

if (!$idPractica || !$codDoc) {
    http_response_code(400); die('Parámetros inválidos.');
}

$stSol = $db->prepare("
    SELECT c.id_solicitud
    FROM   convalidaciones c
    WHERE  c.id_practica = :ip
    LIMIT  1
");
$stSol->execute([':ip' => $idPractica]);
$sol = $stSol->fetch();

if (!$sol) {
    http_response_code(404); die('Solicitud de convalidación no encontrada para esta práctica.');
}
$idSolicitud = $sol['id_solicitud'];

$idInst = instId();
$st = $db->prepare("
    SELECT cd.ruta_archivo, cd.nombre_archivo
    FROM   convalidacion_documentos cd
    JOIN   convalidaciones conv ON conv.id_solicitud = cd.id_solicitud
    JOIN   practicas p          ON p.id_practica     = conv.id_practica
    JOIN   estudiantes e        ON e.id_estudiante   = p.id_estudiante
    JOIN   carreras car         ON car.id_carrera    = e.id_carrera
    WHERE  cd.id_solicitud = :is
      AND  cd.codigo_doc   = :cod
      AND  (:inst = 0 OR car.id_instituto = :inst2)
    LIMIT  1
");
$st->execute([':is' => $idSolicitud, ':cod' => $codDoc, ':inst' => $idInst, ':inst2' => $idInst]);
$doc = $st->fetch();

if (!$doc || !$doc['ruta_archivo']) {
    http_response_code(404); die('Documento no encontrado.');
}

OneDriveStorage::servirArchivo($doc['ruta_archivo'], $doc['nombre_archivo'], 'application/pdf');
