<?php
// modules/secretaria/informes.php
// Revisión de informes finales de prácticas preprofesionales.
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'config'   . DIRECTORY_SEPARATOR . 'app.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'auth.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'functions.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'flash.php';
requireRol(ROL_SECRETARIA);
$idInst = instId();

$user      = currentUser();
$db        = getDB();
$pageTitle = 'Informes Finales';

// ── Filtros ────────────────────────────────────────────────────
$filtroEstado  = $_GET['estado']  ?? 'todos';
$q             = trim($_GET['q']  ?? '');
$idCarrera     = (int)($_GET['carrera']  ?? 0);
$filtroPeriodo = (int)($_GET['periodo']  ?? 0);

// Catálogos
$periodos    = $db->query("SELECT id_periodo, nombre, activo FROM periodos_academicos WHERE 1=1" . instCond() . " ORDER BY id_periodo DESC")->fetchAll();
$pa          = $db->query("SELECT id_periodo FROM periodos_academicos WHERE 1=1" . instCond() . " AND activo=1 LIMIT 1")->fetch();
$idPerActivo = $pa ? $pa['id_periodo'] : ($periodos[0]['id_periodo'] ?? 0);
// Pre-seleccionar período activo si el usuario no eligió ninguno explícitamente
if ($filtroPeriodo === 0 && !isset($_GET['periodo'])) $filtroPeriodo = $idPerActivo;

$carreras = $db->query("SELECT id_carrera, nombre FROM carreras WHERE 1=1" . instCond() . " AND activa=1 ORDER BY nombre")->fetchAll();

$where  = ['1=1'];
$params = [];

if ($filtroEstado === 'pendientes') {
    $where[] = "(inf.estado_coordinador = 'pendiente' OR inf.estado_tutor = 'pendiente')";
}
if ($filtroEstado === 'aprobados') {
    $where[] = "inf.estado_coordinador = 'aprobado'";
}
if ($filtroEstado === 'observados') {
    $where[] = "(inf.estado_coordinador = 'observado' OR inf.estado_tutor = 'observado')";
}
if ($q) {
    $where[]    = "(CONCAT(u.nombres,' ',u.apellidos) LIKE :q OR inf.titulo LIKE :q OR em.razon_social LIKE :q)";
    $params[':q'] = '%' . $q . '%';
}
if ($idCarrera) {
    $where[]        = 'carr.id_carrera = :car';
    $params[':car'] = $idCarrera;
}
if ($filtroPeriodo) {
    $where[]        = 'pr.id_periodo = :per';
    $params[':per'] = $filtroPeriodo;
}

$stmt = $db->prepare("
    SELECT inf.id_informe, inf.titulo, inf.fecha_entrega,
           inf.estado_coordinador, inf.estado_tutor,
           inf.observacion_coordinador, inf.observacion_tutor,
           pr.horas_cumplidas, pr.nota_final,
           CONCAT(u.nombres,' ',u.apellidos) AS estudiante,
           u.cedula,
           carr.nombre  AS carrera,
           em.razon_social AS empresa,
           pe.nombre    AS periodo
    FROM   informes_finales inf
    JOIN   practicas pr    ON pr.id_practica    = inf.id_practica
    JOIN   estudiantes e   ON e.id_estudiante   = pr.id_estudiante
    JOIN   usuarios u      ON u.id_usuario      = e.id_usuario
    JOIN   carreras carr   ON carr.id_carrera   = e.id_carrera
    JOIN   empresas em     ON em.id_empresa     = pr.id_empresa
    JOIN   periodos_academicos pe ON pe.id_periodo = pr.id_periodo
    WHERE  " . implode(' AND ', $where) . "
    ORDER  BY inf.fecha_entrega ASC
    LIMIT  300
");
$stmt->execute($params);
$informes = $stmt->fetchAll();

// KPIs — filtrados por período y carrera seleccionados
$kpiWhere  = ['1=1'];
$kpiParams = [];
if ($filtroPeriodo) { $kpiWhere[] = 'pr.id_periodo = :kper'; $kpiParams[':kper'] = $filtroPeriodo; }
if ($idCarrera)     { $kpiWhere[] = 'e.id_carrera  = :kcar'; $kpiParams[':kcar'] = $idCarrera; }
$kpiW = implode(' AND ', $kpiWhere);

$stKpi = $db->prepare("
    SELECT
        COUNT(*)                                                            AS total,
        SUM(inf.estado_coordinador='pendiente' OR inf.estado_tutor='pendiente') AS pendientes,
        SUM(inf.estado_coordinador='aprobado')                              AS aprobados,
        SUM(inf.estado_coordinador='observado' OR inf.estado_tutor='observado') AS observados
    FROM informes_finales inf
    JOIN practicas pr  ON pr.id_practica  = inf.id_practica
    JOIN estudiantes e ON e.id_estudiante = pr.id_estudiante
    WHERE $kpiW
");
$stKpi->execute($kpiParams);
$kpis = $stKpi->fetch();

$estadoLabels = [
    'pendiente' => 'Pendiente',
    'aprobado'  => 'Aprobado',
    'observado' => 'Observado',
    'calificado'=> 'Calificado',
    'enviado'   => 'Enviado',
];
?>
<?php $paginaActual = 'informes'; ?>
<!DOCTYPE html>
<html lang="es">
<head>
<?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'head.php'; ?>
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar.css">
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar-secretaria.css">
</head>
<body>
<?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'navbar.php'; ?>

<div class="app-shell">
  <!-- ── SIDEBAR ── -->
  <?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'sidebar-secretaria.php'; ?>

  <!-- ── MAIN ── -->
  <main class="main-area">
    <div class="page-header d-flex justify-content-between align-items-start flex-wrap gap-2">
      <div>
        <h4><i class="fa fa-file-lines me-2" style="color:#2ea8ff;"></i>Informes Finales</h4>
        <p>Revisión y seguimiento de informes de prácticas preprofesionales</p>
      </div>
    </div>

    <?= flashHtml() ?>

    <!-- KPIs -->
    <div class="row g-3 mb-4">
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#2ea8ff;"><?= $kpis['total'] ?? 0 ?></div>
          <div class="stat-label">Total informes</div></div>
          <div class="stat-icon">📄</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#f7b93e;"><?= $kpis['pendientes'] ?? 0 ?></div>
          <div class="stat-label">Pendientes revisión</div></div>
          <div class="stat-icon">⏳</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#3dffa0;"><?= $kpis['aprobados'] ?? 0 ?></div>
          <div class="stat-label">Aprobados</div></div>
          <div class="stat-icon">✅</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#ff9d93;"><?= $kpis['observados'] ?? 0 ?></div>
          <div class="stat-label">Con observaciones</div></div>
          <div class="stat-icon">📝</div>
        </div>
      </div>
    </div>

    <!-- ── FILTROS ── -->
    <div style="background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 18px;margin-bottom:16px;">
      <form method="GET" class="row g-2 align-items-end">

        <!-- Búsqueda -->
        <div class="col-sm-6 col-md-3">
          <label class="form-label">Buscar</label>
          <input type="text" name="q" class="form-control form-control-sm"
                 placeholder="Estudiante, título, empresa..." value="<?= htmlspecialchars($q) ?>">
        </div>

        <!-- Período -->
        <div class="col-sm-6 col-md-3">
          <label class="form-label">Período</label>
          <select name="periodo" class="form-select form-select-sm">
            <option value="0">— Todos los períodos —</option>
            <?php foreach ($periodos as $p): ?>
            <option value="<?= $p['id_periodo'] ?>" <?= $filtroPeriodo == $p['id_periodo'] ? 'selected' : '' ?>>
              <?= htmlspecialchars($p['nombre']) ?><?= $p['activo'] ? ' ★' : '' ?>
            </option>
            <?php endforeach; ?>
          </select>
        </div>

        <!-- Carrera -->
        <div class="col-sm-6 col-md-3">
          <label class="form-label">Carrera</label>
          <select name="carrera" class="form-select form-select-sm">
            <option value="0">— Todas las carreras —</option>
            <?php foreach ($carreras as $c): ?>
            <option value="<?= $c['id_carrera'] ?>" <?= $idCarrera == $c['id_carrera'] ? 'selected' : '' ?>>
              <?= htmlspecialchars($c['nombre']) ?>
            </option>
            <?php endforeach; ?>
          </select>
        </div>

        <!-- Botones -->
        <div class="col-auto d-flex gap-2">
          <button type="submit" class="btn btn-primary btn-sm"><i class="fa fa-filter me-1"></i>Filtrar</button>
          <a href="informes.php" class="btn btn-sm btn-outline-secondary"><i class="fa fa-xmark me-1"></i>Limpiar</a>
        </div>
      </form>

      <!-- Tabs de estado -->
      <div class="d-flex gap-2 mt-3 flex-wrap align-items-center">
        <span style="font-size:11px;color:var(--text-2);font-weight:600;text-transform:uppercase;letter-spacing:.05em;">Estado:</span>
        <div class="btn-group btn-group-sm">
          <?php foreach (['todos'=>'Todos','pendientes'=>'Pendientes','aprobados'=>'Aprobados','observados'=>'Observados'] as $k=>$v): ?>
          <a href="?estado=<?=$k?>&periodo=<?=$filtroPeriodo?>&carrera=<?=$idCarrera?>&q=<?=urlencode($q)?>"
             class="btn <?= $filtroEstado===$k?'btn-primary':'btn-outline-secondary' ?>"><?= $v ?></a>
          <?php endforeach; ?>
        </div>

        <!-- Indicador de filtros activos -->
        <?php
          $perNom = ''; foreach($periodos as $p){ if($p['id_periodo']==$filtroPeriodo){ $perNom=$p['nombre']; break; } }
          $carNom = ''; foreach($carreras as $c){ if($c['id_carrera']==$idCarrera){ $carNom=$c['nombre']; break; } }
        ?>
        <?php if($filtroPeriodo || $idCarrera): ?>
        <span style="font-size:11px;color:var(--text-2);margin-left:6px;">
          <i class="fa fa-filter" style="color:var(--accent);"></i>
          <?php if($filtroPeriodo): ?><strong style="color:var(--text);"><?= htmlspecialchars($perNom) ?></strong><?php endif; ?>
          <?php if($idCarrera): ?> · <strong style="color:var(--text);"><?= htmlspecialchars($carNom) ?></strong><?php endif; ?>
        </span>
        <?php endif; ?>

        <span style="margin-left:auto;font-size:12px;color:var(--text-2);"><?= count($informes) ?> informe(s)</span>
      </div>
    </div>

    <!-- Tabla -->
    <div class="tbl-wrap mb-3">
      <table class="table table-borderless mb-0">
        <thead>
          <tr>
            <th>Estudiante</th>
            <th>Carrera</th>
            <th>Empresa</th>
            <th>Título del informe</th>
            <th>Período</th>
            <th>Entregado</th>
            <th style="text-align:center">Horas</th>
            <th>Estado Tutor</th>
            <th>Estado Coord.</th>
            <th>Acciones</th>
          </tr>
        </thead>
        <tbody>
          <?php if (empty($informes)): ?>
          <tr>
            <td colspan="10" class="text-center py-5">
              <div style="font-size:28px;margin-bottom:8px;">📋</div>
              <div style="color:#8b949e;font-size:13px;">Sin informes con los filtros aplicados.</div>
            </td>
          </tr>
          <?php else: foreach ($informes as $inf): ?>
          <tr>
            <td>
              <div style="font-size:13px;font-weight:600;"><?= htmlspecialchars($inf['estudiante']) ?></div>
              <div style="font-size:10px;color:#8b949e;font-family:monospace;"><?= htmlspecialchars($inf['cedula']) ?></div>
            </td>
            <td style="font-size:12px;color:#8b949e;"><?= htmlspecialchars($inf['carrera']) ?></td>
            <td style="font-size:12px;"><?= htmlspecialchars($inf['empresa']) ?></td>
            <td>
              <div style="font-size:13px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"
                   title="<?= htmlspecialchars($inf['titulo']) ?>">
                <?= htmlspecialchars($inf['titulo']) ?>
              </div>
            </td>
            <td style="font-size:11px;color:#8b949e;"><?= htmlspecialchars($inf['periodo']) ?></td>
            <td style="font-size:12px;"><?= formatFecha($inf['fecha_entrega'], 'd/m/Y') ?></td>
            <td style="text-align:center;font-weight:700;color:#3dffa0;"><?= $inf['horas_cumplidas'] ?>h</td>
            <td>
              <?php
                $et = $inf['estado_tutor'];
                $etColor = ['calificado'=>'#3dffa0','observado'=>'#f7b93e','pendiente'=>'#8b949e','enviado'=>'#2ea8ff'];
                $ec = $etColor[$et] ?? '#8b949e';
              ?>
              <span style="font-size:11px;font-weight:700;color:<?= $ec ?>"><?= ucfirst($et) ?></span>
            </td>
            <td>
              <?php
                $eco = $inf['estado_coordinador'];
                $ecColor = ['aprobado'=>'#3dffa0','observado'=>'#f7b93e','pendiente'=>'#8b949e'];
                $ecc = $ecColor[$eco] ?? '#8b949e';
              ?>
              <span style="font-size:11px;font-weight:700;color:<?= $ecc ?>"><?= ucfirst($eco) ?></span>
            </td>
            <td>
              <button class="btn btn-sm btn-outline-secondary btn-ver-informe"
                data-id="<?= $inf['id_informe'] ?>"
                data-estudiante="<?= htmlspecialchars($inf['estudiante']) ?>"
                data-carrera="<?= htmlspecialchars($inf['carrera']) ?>"
                data-empresa="<?= htmlspecialchars($inf['empresa']) ?>"
                data-titulo="<?= htmlspecialchars($inf['titulo']) ?>"
                data-periodo="<?= htmlspecialchars($inf['periodo']) ?>"
                data-horas="<?= $inf['horas_cumplidas'] ?>"
                data-tutor="<?= ucfirst($inf['estado_tutor']) ?>"
                data-coord="<?= ucfirst($inf['estado_coordinador']) ?>"
                data-obs_tutor="<?= htmlspecialchars($inf['observacion_tutor'] ?? '—') ?>"
                data-obs_coord="<?= htmlspecialchars($inf['observacion_coordinador'] ?? '—') ?>"
                title="Ver detalle">
                <i class="fa fa-eye"></i>
              </button>
            </td>
          </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </div>
  </main>
</div>

<!-- Modal detalle informe -->
<div class="modal fade" id="modalVerInforme" tabindex="-1">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title"><i class="fa fa-file-lines me-2" style="color:#2ea8ff;"></i>Detalle del Informe</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <div class="modal-body">
        <div class="row g-3" style="font-size:13px;">
          <div class="col-12">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Título</div>
            <div id="mi-titulo" style="font-weight:700;font-size:15px;"></div>
          </div>
          <div class="col-md-6">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Estudiante</div>
            <div id="mi-est" style="font-weight:600;"></div>
          </div>
          <div class="col-md-6">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Carrera</div>
            <div id="mi-carr"></div>
          </div>
          <div class="col-md-6">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Empresa</div>
            <div id="mi-emp"></div>
          </div>
          <div class="col-md-3">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Período</div>
            <div id="mi-per"></div>
          </div>
          <div class="col-md-3">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Horas</div>
            <div id="mi-hrs" style="font-weight:700;font-size:18px;color:#3dffa0;"></div>
          </div>
          <div class="col-md-6">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Estado Tutor</div>
            <div id="mi-tutor" style="font-weight:700;"></div>
          </div>
          <div class="col-md-6">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Observaciones Tutor</div>
            <div id="mi-obs-tutor" style="font-size:12px;color:#f7b93e;"></div>
          </div>
          <div class="col-md-6">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Estado Coordinador</div>
            <div id="mi-coord" style="font-weight:700;"></div>
          </div>
          <div class="col-md-6">
            <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Observaciones Coordinador</div>
            <div id="mi-obs-coord" style="font-size:12px;color:#f7b93e;"></div>
          </div>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cerrar</button>
      </div>
    </div>
  </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js"></script>
<script>
$(function(){
  $(document).on('click', '.btn-ver-informe', function(){
    var d = $(this).data();
    $('#mi-titulo').text(d.titulo);
    $('#mi-est').text(d.estudiante);
    $('#mi-carr').text(d.carrera);
    $('#mi-emp').text(d.empresa);
    $('#mi-per').text(d.periodo);
    $('#mi-hrs').text(d.horas + ' h');
    $('#mi-tutor').text(d.tutor);
    $('#mi-coord').text(d.coord);
    $('#mi-obs-tutor').text(d.obs_tutor || '—');
    $('#mi-obs-coord').text(d.obs_coord || '—');
    new bootstrap.Modal('#modalVerInforme').show();
  });

  // Búsqueda en tiempo real al presionar Enter
  $('input[name="q"]').on('keydown', function(e){
    if(e.key === 'Enter') $(this).closest('form').submit();
  });
});
</script>
</body>
</html>