<?php
/**
 * modules/secretaria/titulacion.php
 * Vista de titulación para la Secretaria — solo lectura.
 *
 *  — Examen Complexivo  : conteo por carrera + estado (sin notas)
 *  — Trabajo de Investigación : lista de estudiantes con notas finales
 */
require_once __DIR__ . '/../../config/app.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/functions.php';
requireRol(ROL_SECRETARIA);

$idInst    = instId();
$db        = getDB();
$pageTitle = 'Titulación';

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

// ── Filtros ────────────────────────────────────────────────
$idCar   = (int)($_GET['carrera'] ?? 0);
$buscar  = trim($_GET['q'] ?? '');
$filtEst = $_GET['estado'] ?? '';

$instCond = $idInst ? "AND est.id_instituto = $idInst" : '';
$carCond  = $idCar  ? "AND est.id_carrera   = $idCar"  : '';

// ════════════════════════════════════════════════════════════
//  KPIs globales (sin filtro de búsqueda para los totales)
// ════════════════════════════════════════════════════════════
$totCompl = (int)$db->query("
    SELECT COUNT(*) FROM titulaciones t
    JOIN estudiantes est ON est.id_estudiante = t.id_estudiante
    WHERE t.modalidad = 'examen_complexivo' $instCond $carCond
")->fetchColumn();

$aprobCompl = (int)$db->query("
    SELECT COUNT(*) FROM titulaciones t
    JOIN estudiantes est ON est.id_estudiante = t.id_estudiante
    WHERE t.modalidad = 'examen_complexivo' AND t.estado = 'aprobado' $instCond $carCond
")->fetchColumn();

$totInvest = (int)$db->query("
    SELECT COUNT(*) FROM titulaciones t
    JOIN estudiantes est ON est.id_estudiante = t.id_estudiante
    WHERE t.modalidad = 'trabajo_investigacion' $instCond $carCond
")->fetchColumn();

$aprobInvest = (int)$db->query("
    SELECT COUNT(*) FROM titulaciones t
    JOIN estudiantes est ON est.id_estudiante = t.id_estudiante
    WHERE t.modalidad = 'trabajo_investigacion' AND t.estado = 'aprobado' $instCond $carCond
")->fetchColumn();

// ════════════════════════════════════════════════════════════
//  COMPLEXIVO — resumen por carrera
// ════════════════════════════════════════════════════════════
$stComp = $db->prepare("
    SELECT car.nombre AS carrera,
           COUNT(*)                      AS total,
           SUM(t.estado='aprobado')      AS aprobados,
           SUM(t.estado='enviada')       AS en_proceso,
           SUM(t.estado='rechazado')     AS rechazados,
           SUM(t.estado='pendiente')     AS pendientes
    FROM titulaciones t
    JOIN estudiantes est ON est.id_estudiante = t.id_estudiante
    JOIN carreras car    ON car.id_carrera    = est.id_carrera
    WHERE t.modalidad = 'examen_complexivo' $instCond $carCond
    GROUP BY car.id_carrera
    ORDER BY total DESC
");
$stComp->execute();
$complexivoCarreras = $stComp->fetchAll();

// ════════════════════════════════════════════════════════════
//  INVESTIGACIÓN — lista con notas (secretaria solo ve nota_global)
// ════════════════════════════════════════════════════════════
$whereI = ["t.modalidad = 'trabajo_investigacion'"];
$prmI   = [];
if ($idInst) $whereI[] = "est.id_instituto = $idInst";
if ($idCar)  $whereI[] = "est.id_carrera   = $idCar";
if ($buscar) {
    $whereI[] = "(u.nombres LIKE :q OR u.apellidos LIKE :q OR u.cedula LIKE :q)";
    $prmI[':q'] = "%$buscar%";
}
if ($filtEst) {
    $whereI[] = "t.estado = :est";
    $prmI[':est'] = $filtEst;
}

$stInv = $db->prepare("
    SELECT t.id_titulacion,
           t.estado, t.tema,
           t.nota_trabajo,
           t.nota_director, t.nota_lector, t.nota_tribunal,
           t.nota_final,    t.nota_global,
           CONCAT(u.apellidos,' ',u.nombres)   AS estudiante,
           u.cedula,
           car.nombre                          AS carrera,
           CONCAT(ut.apellidos,' ',ut.nombres) AS tutor_nombre,
           CONCAT(ud.apellidos,' ',ud.nombres) AS director_nombre
    FROM titulaciones t
    JOIN estudiantes est ON est.id_estudiante = t.id_estudiante
    JOIN usuarios u      ON u.id_usuario      = est.id_usuario
    JOIN carreras car    ON car.id_carrera     = est.id_carrera
    LEFT JOIN tutores tut ON tut.id_tutor      = t.id_tutor
    LEFT JOIN usuarios ut ON ut.id_usuario     = tut.id_usuario
    LEFT JOIN tutores td  ON td.id_tutor       = t.id_director
    LEFT JOIN usuarios ud ON ud.id_usuario     = td.id_usuario
    WHERE " . implode(' AND ', $whereI) . "
    ORDER BY car.nombre, u.apellidos
");
$stInv->execute($prmI);
$investigaciones = $stInv->fetchAll();

// Estado labels
$estadoLabel = [
    'pendiente' => ['Pendiente', '#8b949e'],
    'enviada'   => ['Esperando', '#2ea8ff'],
    'aprobado'  => ['Aprobado',  '#3dffa0'],
    'rechazado' => ['Rechazado', '#ff9d93'],
];

$paginaActual   = 'titulacion';
$sidebarBaseUrl = '.';
include __DIR__ . '/../../includes/sidebar-secretaria.php';
?>
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars($pageTitle) ?> — SIGVP</title>
<?php include __DIR__ . '/../../includes/head.php'; ?>
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar.css">
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar-secretaria.css">
<style>
.kpi-card  { background:var(--card);border:1px solid var(--border);border-radius:12px;
             padding:14px 18px;border-top:3px solid var(--kc,#f59e0b); }
.kpi-val   { font-size:28px;font-weight:800;line-height:1; }
.kpi-lbl   { font-size:11px;color:#8b949e;margin-top:4px;text-transform:uppercase;letter-spacing:.05em; }
.filter-bar{ background:var(--card);border:1px solid var(--border);border-radius:12px;
             padding:14px 18px;margin-bottom:16px; }
.sec-hdr   { font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
             color:#6b7280;margin:24px 0 10px;display:flex;align-items:center;gap:8px; }
.sec-hdr span { flex:1;height:1px;background:var(--border); }
.prog-wrap { display:flex;align-items:center;gap:8px; }
.prog-bar  { flex:1;height:5px;background:var(--border);border-radius:3px;overflow:hidden;min-width:80px; }
.prog-fill { height:100%;border-radius:3px; }
.nota-pill { display:inline-block;padding:2px 9px;border-radius:6px;font-size:12px;font-weight:700; }
.nota-ok   { background:#3dffa022;color:#3dffa0;border:1px solid #3dffa033; }
.nota-bad  { background:#ff9d9322;color:#ff9d93;border:1px solid #ff9d9333; }
.nota-nd   { color:#6b7280;font-style:italic;font-size:12px; }
.nota-big  { font-size:16px;font-weight:800; }
.chip-doc  { display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:20px;
             font-size:11px;font-weight:600; }
.chip-tutor { background:rgba(46,168,255,.12);border:1px solid #2ea8ff33;color:#2ea8ff; }
.chip-dir   { background:rgba(247,185,62,.12);border:1px solid #f7b93e33;color:#f7b93e; }
</style>
</head>
<body>
<div class="layout-wrapper">

  <main class="main-content">

    <!-- Cabecera -->
    <div class="d-flex align-items-center justify-content-between mb-3 flex-wrap gap-2">
      <div>
        <h4 class="mb-0" style="font-weight:700;">
          <i class="fa fa-graduation-cap me-2" style="color:#f59e0b;"></i>Titulación
        </h4>
        <div style="font-size:12px;color:#6b7280;margin-top:2px;">
          Examen complexivo · Trabajo de investigación — vista Secretaria
        </div>
      </div>
    </div>

    <!-- KPIs -->
    <div class="row g-3 mb-3">
      <div class="col-6 col-lg-3">
        <div class="kpi-card" style="--kc:#8b5cf6;">
          <div class="kpi-val" style="color:#8b5cf6;"><?= $totCompl ?></div>
          <div class="kpi-lbl">Total complexivos</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="kpi-card" style="--kc:#3dffa0;">
          <div class="kpi-val" style="color:#3dffa0;"><?= $aprobCompl ?></div>
          <div class="kpi-lbl">Complexivos aprobados</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="kpi-card" style="--kc:#ec4899;">
          <div class="kpi-val" style="color:#ec4899;"><?= $totInvest ?></div>
          <div class="kpi-lbl">Total investigaciones</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="kpi-card" style="--kc:#3dffa0;">
          <div class="kpi-val" style="color:#3dffa0;"><?= $aprobInvest ?></div>
          <div class="kpi-lbl">Investigaciones aprobadas</div>
        </div>
      </div>
    </div>

    <!-- Filtros -->
    <div class="filter-bar">
      <form method="GET" class="row g-2 align-items-end">
        <div class="col-12 col-md-4">
          <label class="form-label" style="font-size:11px;color:#8b949e;">Buscar estudiante (investigación)</label>
          <input type="text" name="q" class="form-control form-control-sm"
                 placeholder="Nombre o cédula" value="<?= htmlspecialchars($buscar) ?>">
        </div>
        <div class="col-6 col-md-3">
          <label class="form-label" style="font-size:11px;color:#8b949e;">Carrera</label>
          <select name="carrera" class="form-select form-select-sm">
            <option value="">Todas las carreras</option>
            <?php foreach ($carreras as $c): ?>
              <option value="<?= $c['id_carrera'] ?>"
                <?= $idCar == $c['id_carrera'] ? 'selected' : '' ?>>
                <?= htmlspecialchars($c['nombre']) ?>
              </option>
            <?php endforeach; ?>
          </select>
        </div>
        <div class="col-6 col-md-2">
          <label class="form-label" style="font-size:11px;color:#8b949e;">Estado</label>
          <select name="estado" class="form-select form-select-sm">
            <option value="">Todos</option>
            <option value="pendiente"  <?= $filtEst === 'pendiente'  ? 'selected' : '' ?>>Pendiente</option>
            <option value="enviada"    <?= $filtEst === 'enviada'    ? 'selected' : '' ?>>Esperando</option>
            <option value="aprobado"   <?= $filtEst === 'aprobado'   ? 'selected' : '' ?>>Aprobado</option>
            <option value="rechazado"  <?= $filtEst === 'rechazado'  ? 'selected' : '' ?>>Rechazado</option>
          </select>
        </div>
        <div class="col-12 col-md-3 d-flex gap-2">
          <button type="submit" class="btn btn-sm btn-primary flex-fill">
            <i class="fa fa-filter me-1"></i>Filtrar
          </button>
          <a href="titulacion.php" class="btn btn-sm btn-outline-secondary">
            <i class="fa fa-rotate-left"></i>
          </a>
        </div>
      </form>
    </div>

    <!-- ══ EXAMEN COMPLEXIVO ══ -->
    <div class="sec-hdr">
      <i class="fa fa-file-pen" style="color:#8b5cf6;"></i>
      Examen complexivo — estudiantes por carrera
      <span></span>
      <span style="font-weight:400;"><?= $totCompl ?> estudiante(s)</span>
    </div>

    <?php if (empty($complexivoCarreras)): ?>
      <div style="text-align:center;padding:30px;color:#6b7280;font-size:13px;">
        <i class="fa fa-folder-open fa-2x mb-2 d-block" style="color:#374151;"></i>
        Sin registros de examen complexivo<?= $idCar ? ' para esta carrera' : '' ?>.
      </div>
    <?php else: ?>
    <div style="overflow-x:auto;">
      <table class="table table-borderless" style="font-size:13px;">
        <thead>
          <tr style="color:#8b949e;font-size:11px;">
            <th>Carrera</th>
            <th class="text-center">Total</th>
            <th class="text-center">Aprobados</th>
            <th class="text-center">En proceso</th>
            <th class="text-center">Rechazados</th>
            <th class="text-center">Pendientes</th>
            <th style="min-width:160px;">Tasa aprobación</th>
          </tr>
        </thead>
        <tbody>
        <?php foreach ($complexivoCarreras as $r):
          $pct = $r['total'] > 0 ? round($r['aprobados'] / $r['total'] * 100) : 0;
          $colorBar = $pct >= 70 ? '#3dffa0' : ($pct >= 40 ? '#f7b93e' : '#ff9d93');
        ?>
          <tr style="border-bottom:1px solid var(--border);">
            <td style="font-weight:700;vertical-align:middle;">
              <?= htmlspecialchars($r['carrera']) ?>
            </td>
            <td class="text-center" style="font-weight:800;vertical-align:middle;font-size:15px;">
              <?= $r['total'] ?>
            </td>
            <td class="text-center" style="vertical-align:middle;">
              <span style="background:#3dffa022;color:#3dffa0;border:1px solid #3dffa033;
                           padding:2px 10px;border-radius:4px;font-size:12px;font-weight:700;">
                <?= $r['aprobados'] ?>
              </span>
            </td>
            <td class="text-center" style="vertical-align:middle;color:#2ea8ff;font-weight:700;">
              <?= $r['en_proceso'] ?>
            </td>
            <td class="text-center" style="vertical-align:middle;color:#ff9d93;font-weight:700;">
              <?= $r['rechazados'] ?>
            </td>
            <td class="text-center" style="vertical-align:middle;color:#6b7280;">
              <?= $r['pendientes'] ?>
            </td>
            <td style="vertical-align:middle;">
              <div class="prog-wrap">
                <div class="prog-bar">
                  <div class="prog-fill" style="width:<?= $pct ?>%;background:<?= $colorBar ?>;"></div>
                </div>
                <span style="font-size:12px;font-weight:700;color:<?= $colorBar ?>;min-width:36px;">
                  <?= $pct ?>%
                </span>
              </div>
            </td>
          </tr>
        <?php endforeach; ?>
        </tbody>
      </table>
    </div>
    <?php endif; ?>


    <!-- ══ TRABAJO DE INVESTIGACIÓN ══ -->
    <div class="sec-hdr" style="margin-top:30px;">
      <i class="fa fa-microscope" style="color:#ec4899;"></i>
      Trabajo de investigación — calificaciones finales
      <span></span>
      <span style="font-weight:400;"><?= count($investigaciones) ?> estudiante(s)</span>
    </div>

    <?php if (empty($investigaciones)): ?>
      <div style="text-align:center;padding:30px;color:#6b7280;font-size:13px;">
        <i class="fa fa-microscope fa-2x mb-2 d-block" style="color:#374151;"></i>
        Sin registros de trabajo de investigación<?= $idCar ? ' para esta carrera' : '' ?>.
      </div>
    <?php else: ?>
    <div style="overflow-x:auto;">
      <table class="table table-borderless" style="font-size:12px;">
        <thead>
          <tr style="color:#8b949e;font-size:11px;">
            <th>Estudiante</th>
            <th>Carrera</th>
            <th class="text-center">Estado</th>
            <th>Docente asignado</th>
            <th class="text-center" title="Nota del trabajo escrito">N. Trabajo</th>
            <th class="text-center" title="Nota del director">N. Director</th>
            <th class="text-center" title="Nota del lector">N. Lector</th>
            <th class="text-center" title="Nota del tribunal">N. Tribunal</th>
            <th class="text-center">Nota global</th>
          </tr>
        </thead>
        <tbody>
        <?php foreach ($investigaciones as $r):
          $est  = $estadoLabel[$r['estado']] ?? ['?', '#6b7280'];
          $nota = $r['nota_global'];

          // Función inline para renderizar nota parcial
          $notaSpan = function($val, $umbral = 7) {
              if ($val === null) return '<span class="nota-nd">—</span>';
              $col = $val >= $umbral ? '#3dffa0' : '#ff9d93';
              return "<span style='font-weight:700;color:{$col};'>".number_format($val,2)."</span>";
          };
        ?>
          <tr style="border-bottom:1px solid var(--border);">
            <td style="vertical-align:middle;">
              <div style="font-weight:700;font-size:13px;"><?= htmlspecialchars($r['estudiante']) ?></div>
              <div style="color:#6b7280;font-size:11px;"><?= htmlspecialchars($r['cedula']) ?></div>
              <?php if ($r['tema']): ?>
                <div style="color:#8b949e;font-size:11px;margin-top:2px;font-style:italic;
                            max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"
                     title="<?= htmlspecialchars($r['tema']) ?>">
                  <?= htmlspecialchars($r['tema']) ?>
                </div>
              <?php endif; ?>
            </td>
            <td style="vertical-align:middle;color:#c9d1d9;font-size:11px;">
              <?= htmlspecialchars($r['carrera']) ?>
            </td>
            <td class="text-center" style="vertical-align:middle;">
              <span style="font-size:10px;padding:2px 8px;border-radius:4px;font-weight:600;
                           background:<?= $est[1] ?>22;color:<?= $est[1] ?>;border:1px solid <?= $est[1] ?>33;">
                <?= $est[0] ?>
              </span>
            </td>
            <td style="vertical-align:middle;">
              <div style="display:flex;flex-wrap:wrap;gap:3px;">
                <?php if ($r['tutor_nombre'] && trim($r['tutor_nombre']) !== ' '): ?>
                  <span class="chip-doc chip-tutor">
                    <i class="fa fa-user-tie" style="font-size:9px;"></i>
                    <?= htmlspecialchars($r['tutor_nombre']) ?>
                  </span>
                <?php endif; ?>
                <?php if ($r['director_nombre'] && trim($r['director_nombre']) !== ' '): ?>
                  <span class="chip-doc chip-dir">
                    <i class="fa fa-star" style="font-size:9px;"></i>
                    <?= htmlspecialchars($r['director_nombre']) ?>
                  </span>
                <?php endif; ?>
                <?php if ((!$r['tutor_nombre'] || trim($r['tutor_nombre']) === ' ') && (!$r['director_nombre'] || trim($r['director_nombre']) === ' ')): ?>
                  <span class="nota-nd">Sin asignar</span>
                <?php endif; ?>
              </div>
            </td>
            <td class="text-center" style="vertical-align:middle;">
              <?= $notaSpan($r['nota_trabajo']) ?>
            </td>
            <td class="text-center" style="vertical-align:middle;">
              <?= $notaSpan($r['nota_director'] !== null ? $r['nota_director'] / 10 : null) ?>
              <?php if ($r['nota_director'] !== null): ?>
                <div style="font-size:10px;color:#6b7280;"><?= number_format($r['nota_director'],0) ?>/100</div>
              <?php endif; ?>
            </td>
            <td class="text-center" style="vertical-align:middle;">
              <?= $notaSpan($r['nota_lector'] !== null ? $r['nota_lector'] / 10 : null) ?>
              <?php if ($r['nota_lector'] !== null): ?>
                <div style="font-size:10px;color:#6b7280;"><?= number_format($r['nota_lector'],0) ?>/100</div>
              <?php endif; ?>
            </td>
            <td class="text-center" style="vertical-align:middle;">
              <?= $notaSpan($r['nota_tribunal'] !== null ? $r['nota_tribunal'] / 10 : null) ?>
              <?php if ($r['nota_tribunal'] !== null): ?>
                <div style="font-size:10px;color:#6b7280;"><?= number_format($r['nota_tribunal'],0) ?>/100</div>
              <?php endif; ?>
            </td>
            <!-- Nota global — la más importante -->
            <td class="text-center" style="vertical-align:middle;">
              <?php if ($nota !== null): ?>
                <span class="nota-big" style="color:<?= $nota >= 7 ? '#3dffa0' : '#ff9d93' ?>;">
                  <?= number_format($nota, 2) ?>
                </span>
                <span style="font-size:10px;color:#6b7280;">/10</span>
              <?php else: ?>
                <span class="nota-nd">Pendiente</span>
              <?php endif; ?>
            </td>
          </tr>
        <?php endforeach; ?>
        </tbody>
      </table>
    </div>
    <?php endif; ?>

  </main>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js"></script>
</body>
</html>