<?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 = 'Prácticas — Gestor PPP';

// Catálogos
$periodos    = $db->query("SELECT id_periodo, nombre FROM periodos_academicos WHERE 1=1" . instCond() . " ORDER BY id_periodo DESC")->fetchAll();
$pa          = $db->query("SELECT id_periodo FROM periodos_academicos WHERE activo=1" . instCond() . " LIMIT 1")->fetch();
$idPerActivo = $pa ? $pa['id_periodo'] : ($periodos[0]['id_periodo'] ?? 0);

// Filtros
$filtroPeriodo = (int)($_GET['periodo'] ?? $idPerActivo);
$filtroEstado  = $_GET['estado']  ?? '';
$filtroCarrera = (int)($_GET['carrera'] ?? 0);
$busqueda      = trim($_GET['q']  ?? '');

$where  = ['1=1'];
$params = [];
if ($idInst) { $where[] = 'c.id_instituto = :inst'; $params[':inst'] = $idInst; }
// Período: si es 0 muestra todos, si >0 filtra
if ($filtroPeriodo) { $where[] = 'p.id_periodo = :per'; $params[':per'] = $filtroPeriodo; }
if ($filtroEstado)  { $where[] = 'p.estado = :est';     $params[':est'] = $filtroEstado; }
if ($filtroCarrera) { $where[] = 'est.id_carrera = :car'; $params[':car'] = $filtroCarrera; }
if ($busqueda)      { $where[] = "(CONCAT(u.apellidos,' ',u.nombres) LIKE :q OR em.razon_social LIKE :q2 OR p.emp_nueva_nombre LIKE :q3)"; $params[':q'] = "%$busqueda%"; $params[':q2'] = "%$busqueda%"; $params[':q3'] = "%$busqueda%"; }
$wStr = implode(' AND ', $where);

$practicas = $db->prepare("
    SELECT p.id_practica, p.estado, p.horas_requeridas, p.horas_cumplidas,
           p.nota_final, p.fecha_calificacion, p.fecha_inicio, p.fecha_fin,
           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,
           u.cedula, c.nombre AS carrera,
           COALESCE(em.razon_social, p.emp_nueva_nombre) AS empresa,
           pa.nombre AS periodo, pa.id_periodo
    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
    JOIN periodos_academicos pa ON pa.id_periodo = p.id_periodo
    WHERE $wStr
    ORDER BY p.updated_at DESC
");
$practicas->execute($params);
$practicas = $practicas->fetchAll();

$carreras = $db->query("SELECT id_carrera, nombre FROM carreras WHERE 1=1" . instCond() . " ORDER BY nombre")->fetchAll();
$estados  = ['postulado','aprobado','en_progreso','informe_enviado','calificado','completado','rechazado'];
?>
<?php $paginaActual = 'practicas'; ?>
<!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">
    <div class="page-header d-flex justify-content-between align-items-start flex-wrap gap-2">
      <div>
        <h4><i class="fa fa-briefcase me-2" style="color:var(--accent);"></i>Prácticas</h4>
        <p><?= count($practicas) ?> registro(s) encontrado(s)</p>
      </div>
    </div>

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

        <!-- 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 —</option>
            <?php foreach($periodos as $p): ?>
            <option value="<?= $p['id_periodo'] ?>" <?= $filtroPeriodo==$p['id_periodo']?'selected':'' ?>>
              <?= htmlspecialchars($p['nombre']) ?><?= $p['id_periodo']==$idPerActivo?' ★':'' ?>
            </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" style="min-width:160px;">
            <option value="0">Todas</option>
            <?php foreach($carreras as $c): ?>
            <option value="<?= $c['id_carrera'] ?>" <?= $filtroCarrera==$c['id_carrera']?'selected':'' ?>><?= htmlspecialchars($c['nombre']) ?></option>
            <?php endforeach; ?>
          </select>
        </div>

        <!-- Estado -->
        <div class="col-sm-6 col-md-2">
          <label class="form-label">Estado</label>
          <select name="estado" class="form-select form-select-sm">
            <option value="">Todos</option>
            <?php foreach($estados as $e): ?>
            <option value="<?= $e ?>" <?= $filtroEstado===$e?'selected':'' ?>><?= ucfirst(str_replace('_',' ',$e)) ?></option>
            <?php endforeach; ?>
          </select>
        </div>

        <!-- Búsqueda -->
        <div class="col-sm-6 col-md-3">
          <label class="form-label">Buscar</label>
          <input type="text" name="q" value="<?= htmlspecialchars($busqueda) ?>" class="form-control form-control-sm" placeholder="Estudiante o empresa...">
        </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="practicas.php" class="btn btn-sm btn-outline-secondary">Limpiar</a>
        </div>
      </div>

      <!-- Indicador de filtro activo -->
      <?php
        $perNom='Todos los períodos';
        foreach($periodos as $p){ if($p['id_periodo']==$filtroPeriodo){ $perNom=$p['nombre']; break; } }
      ?>
      <?php if($filtroPeriodo||$filtroCarrera||$filtroEstado||$busqueda): ?>
      <div style="margin-top:10px;font-size:11px;color:var(--text-2);border-top:1px solid var(--border);padding-top:8px;">
        <i class="fa fa-filter me-1" style="color:var(--accent);"></i>
        <strong style="color:var(--text);"><?= htmlspecialchars($perNom) ?></strong>
        <?php if($filtroCarrera): foreach($carreras as $c){ if($c['id_carrera']==$filtroCarrera){ echo ' · <strong style="color:var(--text);">'.htmlspecialchars($c['nombre']).'</strong>'; break; } } endif; ?>
        <?php if($filtroEstado): ?> · Estado: <strong style="color:var(--text);"><?= ucfirst(str_replace('_',' ',$filtroEstado)) ?></strong><?php endif; ?>
        · <strong style="color:var(--accent);"><?= count($practicas) ?></strong> resultado(s)
      </div>
      <?php endif; ?>
    </form>

    <div class="tbl-wrap">
      <table class="table table-borderless mb-0" style="font-size:12px;">
        <thead>
          <tr>
            <th>#</th><th>Estudiante</th><th>Modalidad</th><th>Carrera</th><th>Empresa</th>
            <th>Período</th><th style="text-align:center;">Horas / Avance</th>
            <th>Estado</th><th style="text-align:center;">Nota</th><th>Acciones</th>
          </tr>
        </thead>
        <tbody>
          <?php if(empty($practicas)): ?>
          <tr><td colspan="10" class="text-center text-muted py-5">Sin registros para el filtro seleccionado.</td></tr>
          <?php else: foreach($practicas as $i => $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 style="color:var(--text-2);"><?= $i+1 ?></td>
            <td>
              <strong><?= htmlspecialchars($r['estudiante']) ?></strong>
              <div style="font-size:10px;color:var(--text-2);font-family:monospace;"><?= htmlspecialchars($r['cedula']) ?></div>
            </td>
            <td>
              <?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:10px;font-weight:700;padding:2px 9px;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 9px;white-space:nowrap;"><i class="fa fa-briefcase fa-xs"></i> PPP</span>
              <?php endif; ?>
            </td>
            <td style="color:var(--text-2);"><?= htmlspecialchars($r['carrera']) ?></td>
            <td><?= htmlspecialchars($r['empresa']) ?></td>
            <td style="color:var(--text-2);"><?= htmlspecialchars($r['periodo']) ?></td>
            <td style="text-align:center;min-width:100px;">
              <?php if ($r['es_conval']): ?>
                <span style="font-size:10px;color:#94a3b8;font-style:italic;">No aplica</span>
              <?php else: ?>
              <div style="display:flex;align-items:center;gap:5px;">
                <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 ?>;"><?= $r['horas_cumplidas'] ?>/<?= $r['horas_requeridas'] ?></span>
              </div>
              <?php endif; ?>
            </td>
            <td><?= badgeEstado($r['estado']) ?></td>
            <td style="text-align:center;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>
            <td>
              <?php if(in_array($r['estado'],['informe_enviado','en_progreso','calificado','completado'])): ?>
              <a href="calificaciones.php?id=<?= $r['id_practica'] ?>" class="btn btn-sm" style="background:#ec4899;color:#fff;border:none;font-size:11px;">
                <i class="fa fa-star me-1"></i><?= $r['nota_final'] ? 'Editar nota' : 'Calificar' ?>
              </a>
              <?php endif; ?>
            </td>
          </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </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>
</body></html>