<?php
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_ESTUDIANTE);

$user      = currentUser();
$db        = getDB();
$pageTitle = 'Dashboard Estudiante';

// ── Datos del instituto ───────────────────────────────────────
$idInstEst   = (int)($user['id_instituto'] ?? 0);
$stInstEst   = $db->prepare("SELECT nombre, logo FROM institutos WHERE id_instituto = :id LIMIT 1");
$stInstEst->execute([':id' => $idInstEst ?: 1]);
$instEst     = $stInstEst->fetch() ?: [];
$logoEst     = $instEst['logo'] ?? '';
$nombreEst   = $instEst['nombre'] ?? 'SIGVP';
$logoUrlEst  = $logoEst ? BASE_URL . '/uploads/institutos/' . $logoEst : '';

// ── Datos del estudiante + carrera (horas_minimas está en carreras, NO en estudiantes) ──
$stEst = $db->prepare("
    SELECT e.id_estudiante, e.codigo_estudiante, e.semestre_actual,
           c.nombre AS carrera_nombre, c.horas_minimas,
           p.nombre AS periodo_nombre
    FROM   estudiantes e
    JOIN   carreras c          ON c.id_carrera      = e.id_carrera
    LEFT JOIN periodos_academicos p ON p.id_periodo = e.id_periodo_ingreso
    WHERE  e.id_usuario = :uid
");
$stEst->execute([':uid' => $user['id']]);
$estudiante = $stEst->fetch();

// ── Práctica más reciente ──
// empresas.razon_social (NO nombre), usuarios.nombres/apellidos (plural)
// id_tutor puede ser NULL → LEFT JOIN
$practica = null;
if ($estudiante) {
    $stPr = $db->prepare("
        SELECT pr.id_practica, pr.estado, pr.horas_requeridas, pr.horas_cumplidas,
               pr.area_practica, pr.cargo_practica,
               pr.nombre_tutor_empresa,
               em.razon_social                            AS empresa_nombre,
               per.nombre                                 AS periodo_nombre,
               CONCAT(ut.nombres,' ',ut.apellidos)        AS tutor_nombre
        FROM   practicas pr
        JOIN   empresas em          ON em.id_empresa  = pr.id_empresa
        JOIN   periodos_academicos per ON per.id_periodo = pr.id_periodo
        LEFT JOIN tutores t         ON t.id_tutor     = pr.id_tutor
        LEFT JOIN usuarios ut       ON ut.id_usuario  = t.id_usuario
        WHERE  pr.id_estudiante = :eid
          AND  per.activo = 1
        ORDER  BY pr.created_at DESC
        LIMIT  1
    ");
    $stPr->execute([':eid' => $estudiante['id_estudiante']]);
    $practica = $stPr->fetch();
}

// ── Horas validadas por el tutor ──
$horas = 0;
if ($practica) {
    $stH = $db->prepare("SELECT COALESCE(SUM(horas_semana),0) FROM bitacoras WHERE id_practica=:pid AND estado='validada'");
    $stH->execute([':pid' => $practica['id_practica']]);
    $horas = (int)$stH->fetchColumn();
}

// ── Bitácoras en borrador (alerta) ──
$bitBorrador = 0;
if ($practica) {
    $stB = $db->prepare("SELECT COUNT(*) FROM bitacoras WHERE id_practica=:pid AND estado='borrador'");
    $stB->execute([':pid' => $practica['id_practica']]);
    $bitBorrador = (int)$stB->fetchColumn();
}

// ── Bitácoras enviadas pendientes de validar ──
$bitEnviadas = 0;
if ($practica) {
    $stBe = $db->prepare("SELECT COUNT(*) FROM bitacoras WHERE id_practica=:pid AND estado='enviada'");
    $stBe->execute([':pid' => $practica['id_practica']]);
    $bitEnviadas = (int)$stBe->fetchColumn();
}

// ── Bitácoras observadas → el tutor devolvió con correcciones ──
$bitObservadas = 0;
if ($practica) {
    $stObs = $db->prepare("SELECT COUNT(*) FROM bitacoras WHERE id_practica=:pid AND estado='observada'");
    $stObs->execute([':pid' => $practica['id_practica']]);
    $bitObservadas = (int)$stObs->fetchColumn();
}

// ── Informe final con observaciones del tutor ──
$informeObservado = null;
if ($practica) {
    $stInf = $db->prepare("
        SELECT id_informe, estado_tutor, observacion_tutor
        FROM   informes_finales
        WHERE  id_practica = :pid
          AND  estado_tutor = 'observado'
        LIMIT  1
    ");
    $stInf->execute([':pid' => $practica['id_practica']]);
    $informeObservado = $stInf->fetch() ?: null;
}

// ── Práctica recién aprobada (aún no iniciada) ──
$practicaAprobadaSinIniciar = ($practica && $practica['estado'] === 'aprobado');

// ── Total semanas registradas ──
$totalSemanas = 0;
if ($practica) {
    $stS = $db->prepare("SELECT COUNT(*) FROM bitacoras WHERE id_practica=:pid");
    $stS->execute([':pid' => $practica['id_practica']]);
    $totalSemanas = (int)$stS->fetchColumn();
}

// horas_minimas viene de carreras o del campo horas_requeridas de la práctica
$horasMin = $practica['horas_requeridas'] ?? $estudiante['horas_minimas'] ?? 400;
$pct      = pct($horas, $horasMin);
?>
<?php $paginaActual = 'dashboard'; ?>
<!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-estudiante.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-estudiante.php'; ?>

  <!-- MAIN -->
  <main class="main-area">
    <?= flashHtml() ?>

    <!-- ── NOTIFICACIONES ── -->
    <?php if ($bitObservadas > 0): ?>
    <div class="alert-dark-warn p-3 mb-3" style="border-left:3px solid #ef4444;">
      <i class="fa fa-circle-exclamation me-2" style="color:#ef4444;"></i>
      Tienes <strong><?= $bitObservadas ?></strong> bitácora(s) con <strong>observaciones del tutor</strong>. Debes corregirlas y reenviarlas.
      <a href="bitacoras.php" style="color:#ef4444;font-weight:600;"> Revisar ahora →</a>
    </div>
    <?php endif; ?>

    <?php if ($informeObservado): ?>
    <div class="alert-dark-warn p-3 mb-3" style="border-left:3px solid #ef4444;">
      <i class="fa fa-file-circle-exclamation me-2" style="color:#ef4444;"></i>
      Tu <strong>informe final</strong> fue devuelto con observaciones del tutor. Revisa los comentarios y sube la versión corregida.
      <a href="informe_final.php" style="color:#ef4444;font-weight:600;"> Ver informe →</a>
    </div>
    <?php endif; ?>

    <?php if ($practicaAprobadaSinIniciar): ?>
    <div class="alert-dark-warn p-3 mb-3" style="border-left:3px solid #3dffa0;">
      <i class="fa fa-circle-check me-2" style="color:#3dffa0;"></i>
      ¡Tu práctica fue <strong>aprobada</strong>! Ya puedes comenzar a registrar tus bitácoras semanales.
      <a href="bitacoras.php" style="color:#3dffa0;font-weight:600;"> Registrar bitácora →</a>
    </div>
    <?php endif; ?>

    <?php if ($bitBorrador > 0 && $bitObservadas === 0): ?>
    <div class="alert-dark-warn p-3 mb-3">
      <i class="fa fa-pen-to-square me-2"></i>
      Tienes <strong><?= $bitBorrador ?></strong> bitácora(s) en borrador sin enviar al tutor.
      <a href="bitacoras.php" style="color:#f7b93e;font-weight:600;"> Enviar ahora →</a>
    </div>
    <?php endif; ?>

    <!-- ── 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($logoUrlEst)): ?>
          <img src="<?= htmlspecialchars($logoUrlEst) ?>"
               alt="Logo <?= htmlspecialchars($nombreEst) ?>"
               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;">
          Portal Estudiante
        </div>
        <div style="font-size:19px;font-weight:900;color:#1e293b;line-height:1.2;">
          <?= htmlspecialchars($nombreEst) ?>
        </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="est-hora">
          <?= date('H:i:s') ?>
        </div>
        <div style="font-size:11px;color:#94a3b8;margin-top:4px;font-weight:600;" id="est-fecha">
          <?= date('d/m/Y') ?>
        </div>
        <div style="font-size:10px;color:#cbd5e1;margin-top:2px;" id="est-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>
        <?php if ($estudiante): ?>
          <?= htmlspecialchars($estudiante['carrera_nombre']) ?>
          <?php if ($estudiante['codigo_estudiante']): ?>
            &nbsp;·&nbsp; <span style="font-family:monospace;font-size:12px;"><?= htmlspecialchars($estudiante['codigo_estudiante']) ?></span>
          <?php endif; ?>
        <?php else: ?>
          Panel de control · Prácticas Preprofesionales
        <?php endif; ?>
      </p>
    </div>

    <!-- ── STAT CARDS ── -->
    <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;"><?= $horas ?></div><div class="stat-label">Horas validadas</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;"><?= max(0, $horasMin - $horas) ?></div><div class="stat-label">Horas restantes</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;"><?= $pct ?>%</div><div class="stat-label">Avance</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;"><?= $totalSemanas ?></div><div class="stat-label">Semanas registradas</div></div>
          <div class="stat-icon">📓</div>
        </div>
      </div>
    </div>

    <!-- ── PRÁCTICA ACTIVA ── -->
    <?php if ($practica): ?>
    <div class="tbl-wrap p-4 mb-4">
      <div class="d-flex justify-content-between align-items-start mb-3 flex-wrap gap-2">
        <div>
          <div style="font-size:16px;font-weight:700;"><?= htmlspecialchars($practica['empresa_nombre']) ?></div>
          <div style="font-size:12px;color:#8b949e;margin-top:2px;">
            <?= htmlspecialchars($practica['area_practica'] ?? '') ?>
            <?php if ($practica['cargo_practica']): ?> &nbsp;—&nbsp; <?= htmlspecialchars($practica['cargo_practica']) ?><?php endif; ?>
          </div>
        </div>
        <?= badgeEstado($practica['estado']) ?>
      </div>

      <div class="row g-2 mb-3">
        <div class="col-sm-4">
          <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Tutor académico</div>
          <div style="font-size:13px;"><?= htmlspecialchars($practica['tutor_nombre'] ?? 'Sin asignar') ?></div>
        </div>
        <div class="col-sm-4">
          <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Tutor empresa</div>
          <div style="font-size:13px;"><?= htmlspecialchars($practica['nombre_tutor_empresa'] ?? '—') ?></div>
        </div>
        <div class="col-sm-4">
          <div style="font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.6px;">Período</div>
          <div style="font-size:13px;"><?= htmlspecialchars($practica['periodo_nombre']) ?></div>
        </div>
      </div>

      <!-- Barra de progreso -->
      <div style="display:flex;align-items:center;gap:10px;margin-top:4px;">
        <div style="flex:1;background:#30363d;border-radius:6px;height:10px;overflow:hidden;">
          <div style="width:<?= $pct ?>%;background:<?= $pct>=100?'#3dffa0':'#2ea8ff' ?>;height:10px;border-radius:6px;transition:width .4s;"></div>
        </div>
        <span style="font-size:12px;color:#8b949e;white-space:nowrap;"><?= $horas ?> / <?= $horasMin ?> h</span>
      </div>

      <?php if ($bitEnviadas > 0): ?>
      <div class="alert-dark-info p-2 mt-3" style="font-size:12px;">
        <i class="fa fa-clock me-1"></i><?= $bitEnviadas ?> bitácora(s) esperando validación del tutor.
      </div>
      <?php endif; ?>
    </div>

    <?php elseif ($estudiante): ?>
    <div class="alert-dark-warn p-3 mb-4">
      <i class="fa fa-triangle-exclamation me-2"></i>
      Aún no tienes una práctica registrada.
      <a href="mi_practica.php" style="color:#f7b93e;font-weight:600;"> Solicitar práctica →</a>
    </div>

    <?php else: ?>
    <div class="alert-dark-danger p-3 mb-4">
      <i class="fa fa-circle-exclamation me-2"></i>
      Tu perfil de estudiante no está configurado. Contacta al coordinador.
    </div>
    <?php endif; ?>

    <!-- ── ACCIONES RÁPIDAS ── -->
    <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#8b949e;margin-bottom:10px;">Acciones rápidas</div>
    <div class="row g-3">
      <div class="col-6 col-lg-3">
        <a href="mi_practica.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;">Mi Práctica</div><div class="stat-label">Ver estado</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"><?= $bitBorrador ? "$bitBorrador pendiente(s)" : "Registrar semana" ?></div></div>
        </a>
      </div>
      <div class="col-6 col-lg-3">
        <a href="convalidacion.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;">Convalidación</div><div class="stat-label">Solicitar reconocimiento</div></div>
        </a>
      </div>
      <div class="col-6 col-lg-3">
        <a href="informe_final.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;">Informe Final</div><div class="stat-label">Subir o revisar</div></div>
        </a>
      </div>
      <div class="col-6 col-lg-3">
        <a href="certificado.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;">Certificado</div><div class="stat-label">Descargar con QR</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('est-hora').textContent  = hh+':'+mm+':'+ss;
    document.getElementById('est-fecha').textContent = dd+'/'+mo+'/'+yy;
    document.getElementById('est-dia').textContent   = dias[n.getDay()];
  }
  setInterval(tick, 1000);
  tick();
})();
</script>
</body>
</html>