<?php
require_once __DIR__ . '/../../config/app.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/functions.php';
requireRol(ROL_GESTOR_PPP);
$idInst = instId();
$user = currentUser(); $db = getDB(); $pageTitle = 'Dashboard Gestor PPP';

// ── Datos del instituto ───────────────────────────────────────
$stInstGes  = $db->prepare("SELECT nombre, logo FROM institutos WHERE id_instituto = :id LIMIT 1");
$stInstGes->execute([':id' => $idInst ?: 1]);
$instGes    = $stInstGes->fetch() ?: [];
$logoGes    = $instGes['logo'] ?? '';
$nombreGes  = $instGes['nombre'] ?? 'SIGVP';
$logoUrlGes = $logoGes ? BASE_URL . '/uploads/institutos/' . $logoGes : '';

$stats = $db->query("
    SELECT
        COUNT(*)                                        AS total,
        SUM(p.estado='postulado')                       AS postulados,
        SUM(p.estado='en_progreso')                     AS en_progreso,
        SUM(p.estado='informe_enviado')                 AS informes,
        SUM(p.estado IN ('calificado','completado'))    AS finalizados,
        SUM(p.nota_final IS NOT NULL)                   AS calificados,
        SUM(p.nota_final >= 7)                          AS aprobados,
        ROUND(AVG(CASE WHEN p.nota_final IS NOT NULL THEN p.nota_final END),2) AS prom_nota
    FROM practicas p
    JOIN estudiantes est ON est.id_estudiante = p.id_estudiante
    JOIN carreras c      ON c.id_carrera      = est.id_carrera
    WHERE 1=1" . ($idInst ? " AND c.id_instituto = $idInst" : "") . "
")->fetch();

$recientes = $db->query("
    SELECT p.id_practica, p.estado, p.nota_final, p.horas_cumplidas, p.horas_requeridas,
           p.modalidad,
           CASE WHEN p.modalidad='convalidacion'
                     OR EXISTS(SELECT 1 FROM convalidaciones cv WHERE cv.id_practica=p.id_practica)
                THEN 1 ELSE 0 END AS es_conval,
           CONCAT(u.apellidos,' ',u.nombres) AS estudiante,
           COALESCE(em.razon_social, p.emp_nueva_nombre) AS empresa,
           c.nombre AS carrera
    FROM practicas p
    JOIN estudiantes est ON est.id_estudiante = p.id_estudiante
    JOIN usuarios u      ON u.id_usuario = est.id_usuario
    JOIN carreras c      ON c.id_carrera = est.id_carrera
    LEFT JOIN empresas em ON em.id_empresa = p.id_empresa
    WHERE p.estado IN ('informe_enviado','en_progreso','calificado') AND 1=1" . ($idInst ? " AND c.id_instituto = $idInst" : "") . "
    ORDER BY p.updated_at DESC LIMIT 8
")->fetchAll();

$pendCalif = $db->query("SELECT COUNT(*) FROM practicas p JOIN estudiantes est ON est.id_estudiante=p.id_estudiante JOIN carreras c ON c.id_carrera=est.id_carrera WHERE p.estado='informe_enviado'" . ($idInst ? " AND c.id_instituto=$idInst" : ""))->fetchColumn();

// ── Postulaciones pendientes de aprobación ──
$pendPost = (int)$db->query("SELECT COUNT(*) FROM practicas p JOIN estudiantes est ON est.id_estudiante=p.id_estudiante JOIN carreras c ON c.id_carrera=est.id_carrera WHERE p.estado='postulado'" . ($idInst ? " AND c.id_instituto=$idInst" : ""))->fetchColumn();

// ── Bitácoras enviadas sin validar (global) ──
$bitPend = (int)$db->query("SELECT COUNT(*) FROM bitacoras b JOIN practicas p ON p.id_practica=b.id_practica JOIN estudiantes est ON est.id_estudiante=p.id_estudiante JOIN carreras c ON c.id_carrera=est.id_carrera WHERE b.estado='enviada'" . ($idInst ? " AND c.id_instituto=$idInst" : ""))->fetchColumn();

// ── Prácticas postuladas recientes (para tabla) ──
$postulaciones = $db->query("
    SELECT p.id_practica, p.estado, p.created_at,
           CONCAT(u.apellidos,' ',u.nombres) AS estudiante,
           COALESCE(em.razon_social, p.emp_nueva_nombre) AS empresa,
           c.nombre AS carrera,
           p.modalidad,
           CASE WHEN p.modalidad='convalidacion' OR EXISTS(SELECT 1 FROM convalidaciones cv WHERE cv.id_practica=p.id_practica) THEN 1 ELSE 0 END AS es_conval
    FROM   practicas p
    JOIN   estudiantes est ON est.id_estudiante = p.id_estudiante
    JOIN   usuarios u      ON u.id_usuario      = est.id_usuario
    JOIN   carreras c      ON c.id_carrera      = est.id_carrera
    LEFT JOIN empresas em  ON em.id_empresa     = p.id_empresa
    WHERE  p.estado = 'postulado'" . ($idInst ? " AND c.id_instituto = $idInst" : "") . "
    ORDER  BY p.created_at ASC
    LIMIT  10
")->fetchAll();
?>
<?php $paginaActual = 'dashboard'; ?>
<!DOCTYPE html>
<html lang="es">
<head><?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-gestor-ppp.css">
</head>
<body>
<?php include __DIR__ . '/../../includes/navbar.php'; ?>
<div class="app-shell">
  <?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'sidebar-gestor-ppp.php'; ?>
  <main class="main-area">

    <!-- ── ENCABEZADO CON LOGO, INSTITUTO Y FECHA ── -->
    <div style="display:flex;align-items:center;justify-content:space-between;
                background:#fff;border:1px solid #e2e8f0;border-radius:12px;
                padding:16px 24px;margin-bottom:20px;
                box-shadow:0 1px 3px rgba(0,0,0,.06);">

      <!-- LOGO -->
      <div style="flex-shrink:0;">
        <?php if (!empty($logoUrlGes)): ?>
          <img src="<?= htmlspecialchars($logoUrlGes) ?>"
               alt="Logo <?= htmlspecialchars($nombreGes) ?>"
               style="height:72px;width:72px;object-fit:contain;border-radius:10px;
                      border:1px solid #e2e8f0;padding:4px;background:#f8fafc;">
        <?php else: ?>
          <div style="height:72px;width:72px;background:#1a3a6b;border-radius:10px;
                      display:flex;align-items:center;justify-content:center;font-size:32px;">🏫</div>
        <?php endif; ?>
      </div>

      <!-- NOMBRE DEL INSTITUTO -->
      <div style="flex:1;text-align:center;padding:0 20px;">
        <div style="font-size:11px;font-weight:700;letter-spacing:1.5px;
                    text-transform:uppercase;color:#94a3b8;margin-bottom:4px;">
          Gestor de Prácticas Pre-Profesionales
        </div>
        <div style="font-size:19px;font-weight:900;color:#1e293b;line-height:1.2;">
          <?= htmlspecialchars($nombreGes) ?>
        </div>
        <div style="font-size:12px;color:#64748b;margin-top:4px;">
          <?= htmlspecialchars($user['nombre'] ?? '') ?>
        </div>
      </div>

      <!-- FECHA Y HORA -->
      <div style="flex-shrink:0;text-align:center;background:#f8fafc;
                  border:1px solid #e2e8f0;border-radius:12px;
                  padding:12px 20px;min-width:130px;">
        <div style="font-size:22px;font-weight:800;color:#1e293b;line-height:1;" id="ges-hora">
          <?= date('H:i:s') ?>
        </div>
        <div style="font-size:11px;color:#94a3b8;margin-top:4px;font-weight:600;" id="ges-fecha">
          <?= date('d/m/Y') ?>
        </div>
        <div style="font-size:10px;color:#cbd5e1;margin-top:2px;" id="ges-dia">
          <?= ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'][date('w')] ?>
        </div>
      </div>

    </div>

    <div class="page-header">
      <h4>Bienvenido, <?= htmlspecialchars($user['nombre']) ?> 🏆</h4>
      <p>Gestor de Prácticas Pre-Profesionales</p>
    </div>

    <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:var(--accent)"><?= $stats['total'] ?></div><div class="stat-label">Total prácticas</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:var(--yellow)"><?= $stats['en_progreso'] ?></div><div class="stat-label">En progreso</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:#ec4899"><?= $stats['informes'] ?></div><div class="stat-label">Por calificar</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:var(--green)"><?= $stats['calificados'] ?></div><div class="stat-label">Calificados</div></div><div class="stat-icon">🏆</div></div></div>
    </div>

    <?php if ($pendPost > 0): ?>
    <div class="alert-dark-warn p-3 mb-3" style="border-left:3px solid #3b82f6;">
      <i class="fa fa-inbox me-2" style="color:#3b82f6;"></i>
      Hay <strong><?= $pendPost ?></strong> postulación(es) pendiente(s) de aprobación por el coordinador.
      <a href="practicas.php" style="color:#3b82f6;font-weight:600;"> Ver postulaciones →</a>
    </div>
    <?php endif; ?>

    <?php if ($bitPend > 0): ?>
    <div class="alert-dark-warn p-3 mb-3" style="border-left:3px solid #f7b93e;">
      <i class="fa fa-book-open me-2" style="color:#f7b93e;"></i>
      Hay <strong><?= $bitPend ?></strong> bitácora(s) enviadas esperando validación del tutor.
      <a href="bitacoras.php" style="color:#f7b93e;font-weight:600;"> Ver bitácoras →</a>
    </div>
    <?php endif; ?>

    <?php if($pendCalif > 0): ?>
    <div class="alert-dark-warn p-3 mb-4" style="border-left:3px solid #ec4899;">
      <i class="fa fa-file-circle-check me-2" style="color:#ec4899;"></i>
      Hay <strong><?= $pendCalif ?></strong> práctica(s) con informe enviado pendiente de calificación.
      <a href="calificaciones.php" style="color:#ec4899;font-weight:600;"> Calificar ahora →</a>
    </div>
    <?php endif; ?>

    <?php if (!empty($postulaciones)): ?>
    <!-- ── TABLA POSTULACIONES PENDIENTES ── -->
    <div class="d-flex justify-content-between align-items-center mb-2 mt-1">
      <div>
        <span style="font-size:15px;font-weight:700;"><i class="fa fa-inbox me-2" style="color:#3b82f6;"></i>Postulaciones pendientes</span>
        <span style="font-size:12px;color:#8b949e;margin-left:8px;">Esperando aprobación del coordinador</span>
      </div>
      <a href="practicas.php" class="btn btn-sm btn-outline-secondary">Ver todas <i class="fa fa-arrow-right ms-1"></i></a>
    </div>
    <div class="tbl-wrap mb-4">
      <table class="table table-borderless mb-0" style="font-size:13px;">
        <thead><tr><th>Estudiante</th><th>Modalidad</th><th>Carrera</th><th>Empresa</th><th>Solicitado</th></tr></thead>
        <tbody>
          <?php foreach ($postulaciones as $ps): ?>
          <tr>
            <td><strong><?= htmlspecialchars($ps['estudiante']) ?></strong></td>
            <td>
              <?php if ($ps['es_conval']): ?>
                <span style="display:inline-flex;align-items:center;gap:3px;background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;border-radius:20px;font-size:10px;font-weight:700;padding:2px 8px;white-space:nowrap;"><i class="fa fa-rotate fa-xs"></i> CONV PPP</span>
              <?php else: ?>
                <span style="display:inline-flex;align-items:center;gap:3px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:20px;font-size:10px;font-weight:700;padding:2px 8px;white-space:nowrap;"><i class="fa fa-briefcase fa-xs"></i> PPP</span>
              <?php endif; ?>
            </td>
            <td style="font-size:12px;color:#8b949e;"><?= htmlspecialchars($ps['carrera']) ?></td>
            <td style="font-size:12px;"><?= htmlspecialchars($ps['empresa']) ?></td>
            <td style="font-size:12px;color:#8b949e;"><?= date('d/m/Y', strtotime($ps['created_at'])) ?></td>
          </tr>
          <?php endforeach; ?>
        </tbody>
      </table>
    </div>
    <?php endif; ?>

    <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-2);margin-bottom:10px;">Prácticas recientes</div>
    <div class="tbl-wrap">
      <table class="table table-borderless mb-0" style="font-size:13px;">
        <thead><tr><th>Estudiante</th><th>Carrera</th><th>Empresa</th><th>Estado</th><th>Progreso</th><th>Nota</th></tr></thead>
        <tbody>
          <?php if(empty($recientes)): ?>
          <tr><td colspan="6" class="text-center text-muted py-4">Sin prácticas activas</td></tr>
          <?php else: foreach($recientes as $r):
            $pct = $r['horas_requeridas']>0 ? min(100,round($r['horas_cumplidas']/$r['horas_requeridas']*100)) : 0;
            $pc  = $pct>=80?'var(--green)':($pct>=40?'var(--yellow)':'var(--red)');
          ?>
          <tr>
            <td>
              <strong><?= htmlspecialchars($r['estudiante']) ?></strong>
              <?php if ($r['es_conval']): ?>
                <span style="display:inline-flex;align-items:center;gap:3px;background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;border-radius:20px;font-size:9px;font-weight:700;padding:1px 7px;margin-left:4px;white-space:nowrap;"><i class="fa fa-rotate fa-xs"></i> CONV</span>
              <?php else: ?>
                <span style="display:inline-flex;align-items:center;gap:3px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:20px;font-size:9px;font-weight:700;padding:1px 7px;margin-left:4px;white-space:nowrap;"><i class="fa fa-briefcase fa-xs"></i> PPP</span>
              <?php endif; ?>
            </td>
            <td style="font-size:11px;color:var(--text-2);"><?= htmlspecialchars($r['carrera']) ?></td>
            <td style="font-size:11px;"><?= htmlspecialchars($r['empresa']) ?></td>
            <td><?= badgeEstado($r['estado']) ?></td>
            <td style="min-width:100px;">
              <div style="display:flex;align-items:center;gap:6px;">
                <div style="flex:1;background:var(--border);border-radius:3px;height:5px;">
                  <div style="width:<?= $pct ?>%;height:5px;border-radius:3px;background:<?= $pc ?>;"></div>
                </div>
                <span style="font-size:10px;color:<?= $pc ?>;"><?= $pct ?>%</span>
              </div>
            </td>
            <td style="font-weight:700;color:<?= $r['nota_final']?($r['nota_final']>=7?'var(--green)':'var(--red)'):'var(--text-2)' ?>;">
              <?= $r['nota_final'] ? number_format($r['nota_final'],2) : '—' ?>
            </td>
          </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </div>

    <div class="row g-3 mt-3">
      <div class="col-6 col-lg-3">
        <a href="practicas.php" class="stat-card text-decoration-none" style="flex-direction:column;align-items:flex-start;gap:6px;">
          <div style="font-size:20px;">📋</div><div><div style="font-weight:600;font-size:13px;">Prácticas</div><div class="stat-label">Ver todas</div></div>
        </a>
      </div>
      <div class="col-6 col-lg-3">
        <a href="calificaciones.php" class="stat-card text-decoration-none" style="flex-direction:column;align-items:flex-start;gap:6px;">
          <div style="font-size:20px;">⭐</div><div><div style="font-weight:600;font-size:13px;">Calificaciones</div><div class="stat-label"><?= $pendCalif ?> pendiente(s)</div></div>
        </a>
      </div>
      <div class="col-6 col-lg-3">
        <a href="bitacoras.php" class="stat-card text-decoration-none" style="flex-direction:column;align-items:flex-start;gap:6px;">
          <div style="font-size:20px;">📓</div><div><div style="font-weight:600;font-size:13px;">Bitácoras</div><div class="stat-label">Validar semanas</div></div>
        </a>
      </div>
      <div class="col-6 col-lg-3">
        <a href="reportes.php" class="stat-card text-decoration-none" style="flex-direction:column;align-items:flex-start;gap:6px;">
          <div style="font-size:20px;">📊</div><div><div style="font-weight:600;font-size:13px;">Reportes</div><div class="stat-label">Exportar Excel</div></div>
        </a>
      </div>
    </div>
  </main>
</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>var BASE_URL='<?= BASE_URL ?>';</script>
<script src="<?= BASE_URL ?>/assets/js/sigvp.js"></script>
<script>
(function(){
  var dias = ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'];
  function tick() {
    var n  = new Date();
    var hh = String(n.getHours()).padStart(2,'0');
    var mm = String(n.getMinutes()).padStart(2,'0');
    var ss = String(n.getSeconds()).padStart(2,'0');
    var dd = String(n.getDate()).padStart(2,'0');
    var mo = String(n.getMonth()+1).padStart(2,'0');
    var yy = n.getFullYear();
    document.getElementById('ges-hora').textContent  = hh+':'+mm+':'+ss;
    document.getElementById('ges-fecha').textContent = dd+'/'+mo+'/'+yy;
    document.getElementById('ges-dia').textContent   = dias[n.getDay()];
  }
  setInterval(tick, 1000);
  tick();
})();
</script>
</body></html>