<?php
/**
 * api/ver_informe_coord.php
 * Sirve el informe final PDF de una práctica al coordinador.
 * Compatible con archivos locales Y archivos en OneDrive.
 *
 * Uso: /api/ver_informe_coord.php?practica=14
 *
 * Coloca este archivo en: SIGVP/api/ver_informe_coord.php
 */
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);

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

if (!$idPractica) {
    http_response_code(400);
    exit('Parámetro practica requerido.');
}

// Obtener el informe final de esta práctica
$st = $db->prepare("
    SELECT inf.archivo_pdf, inf.estado_coordinador,
           CONCAT(uu.nombres,' ',uu.apellidos) AS estudiante
    FROM   informes_finales inf
    JOIN   practicas pr ON pr.id_practica = inf.id_practica
    JOIN   estudiantes est ON est.id_estudiante = pr.id_estudiante
    JOIN   usuarios uu ON uu.id_usuario = est.id_usuario
    WHERE  inf.id_practica = :ip
    LIMIT 1
");
$st->execute([':ip' => $idPractica]);
$inf = $st->fetch();

if (!$inf || empty($inf['archivo_pdf'])) {
    http_response_code(404);
    exit('El estudiante aún no ha subido un informe final para esta práctica.');
}

$rutaBD        = $inf['archivo_pdf'];
$nombreArchivo = 'informe_practica_' . $idPractica . '.pdf';

// OneDriveStorage::servirArchivo detecta automáticamente si es
// OneDrive (prefijo "onedrive:") o archivo local, y lo sirve.
OneDriveStorage::servirArchivo($rutaBD, $nombreArchivo, 'application/pdf');