<?php
/**
 * SIGVP — API: Bitácoras de una práctica
 * GET /api/tutor/bitacoras_practica.php?id_practica=X
 * Devuelve SIEMPRE HTTP 200 con JSON { ok, rows, estado, msg? }
 */
require_once __DIR__ . '/../../config/app.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/functions.php';

header('Content-Type: application/json; charset=utf-8');

startSession(); // ← iniciar sesión ANTES de leer currentUser()
$user = currentUser();
if (!$user) {
    echo json_encode(['ok'=>false,'msg'=>'Sesión expirada. Recarga la página.','rows'=>[]]);
    exit;
}

$rolesPermitidos = [ROL_TUTOR, ROL_COORDINADOR];
if (!in_array((int)$user['id_rol'], $rolesPermitidos)) {
    echo json_encode(['ok'=>false,'msg'=>'Sin permiso para ver bitácoras.','rows'=>[]]);
    exit;
}

$db = getDB();

$idTutor = 0;
if ((int)$user['id_rol'] === ROL_TUTOR) {
    $stT = $db->prepare("SELECT id_tutor FROM tutores WHERE id_usuario = :uid");
    $stT->execute([':uid' => $user['id']]);
    $t = $stT->fetch();
    $idTutor = $t ? (int)$t['id_tutor'] : 0;
}

$idPractica = (int)($_GET['id_practica'] ?? 0);
if (!$idPractica) {
    echo json_encode(['ok'=>false,'msg'=>'Parámetro id_practica requerido.','rows'=>[]]);
    exit;
}

$stPr = $db->prepare("
    SELECT pr.id_practica, pr.id_tutor, pr.estado,
           CONCAT(uu.nombres,' ',uu.apellidos) AS nombre_estudiante,
           COALESCE(em.razon_social, pr.emp_nueva_nombre) AS empresa
    FROM   practicas pr
    JOIN   estudiantes e  ON e.id_estudiante = pr.id_estudiante
    JOIN   usuarios uu    ON uu.id_usuario   = e.id_usuario
    LEFT JOIN empresas em ON em.id_empresa   = pr.id_empresa
    WHERE  pr.id_practica = :id
");
$stPr->execute([':id' => $idPractica]);
$practica = $stPr->fetch();

if (!$practica) {
    echo json_encode(['ok'=>false,'msg'=>'Práctica no encontrada.','rows'=>[]]);
    exit;
}

$soloLectura = (int)$user['id_rol'] === ROL_TUTOR
            && $idTutor > 0
            && (int)$practica['id_tutor'] !== $idTutor;

$st = $db->prepare("
    SELECT b.id_bitacora, b.semana_numero,
           b.fecha_inicio_semana AS fecha_inicio,
           b.fecha_fin_semana    AS fecha_fin,
           b.horas_semana, b.actividades, b.logros, b.dificultades,
           b.estado, b.comentario_tutor, b.created_at, b.fecha_validacion
    FROM   bitacoras b
    WHERE  b.id_practica = :id
    ORDER  BY b.semana_numero ASC
");
$st->execute([':id' => $idPractica]);
$rows = $st->fetchAll(PDO::FETCH_ASSOC);

echo json_encode([
    'ok'           => true,
    'rows'         => $rows,
    'estado'       => $practica['estado'],
    'solo_lectura' => $soloLectura,
    'estudiante'   => $practica['nombre_estudiante'],
]);