<?php
declare(strict_types=1);

require_once __DIR__ . '/../../app/bootstrap.php';
require_login();

if (!has_role('DOCENTE')) { http_response_code(403); die("Acceso no permitido"); }

$pdo = db();
$uid = (int)($_SESSION['uid'] ?? 0);

$claseId = (int)($_GET['id'] ?? 0);
if ($claseId<=0) { header('Location: /Comercio/public/docente/mis_clases.php'); exit; }

function h($v): string { return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8'); }
function tipo_label(string $t): string {
  return match($t){
    'TP_IND' => 'TP Individual',
    'TP_GRUP'=> 'TP Grupal',
    'PARCIAL'=> 'Parcial',
    default  => $t
  };
}
function tipo_badge(string $t): string {
  return match(strtoupper($t)){
    'TP_IND' => '<span class="badge text-bg-primary">TP Individual</span>',
    'TP_GRUP'=> '<span class="badge text-bg-warning text-dark">TP Grupal</span>',
    'PARCIAL'=> '<span class="badge text-bg-danger">Parcial</span>',
    default  => '<span class="badge text-bg-secondary">'.h($t).'</span>',
  };
}

// docente_id real
$st = $pdo->prepare("SELECT id, apellidos, nombres FROM docentes WHERE usuario_id=? LIMIT 1");
$st->execute([$uid]);
$doc = $st->fetch(PDO::FETCH_ASSOC);
if (!$doc) { http_response_code(403); die("Tu usuario no está vinculado a la tabla docentes."); }
$docenteId = (int)$doc['id'];

// info clase (validar pertenencia)
$st = $pdo->prepare(
  "SELECT c.id, c.anio_lectivo, c.etapa, c.nivel, c.turno,
          cu.nombre AS curso, s.nombre AS seccion,
          m.nombre AS materia
   FROM clases c
   JOIN cursos cu ON cu.id=c.curso_id
   JOIN secciones s ON s.id=c.seccion_id
   JOIN materias m ON m.id=c.materia_id
   WHERE c.id=? AND c.docente_id=? AND c.activo=1
   LIMIT 1"
);
$st->execute([$claseId, $docenteId]);
$C = $st->fetch(PDO::FETCH_ASSOC);
if (!$C) { http_response_code(403); die("No tenés permiso."); }

$anio = (int)$C['anio_lectivo'];

// KPIs
$st = $pdo->prepare("SELECT COUNT(*) FROM inscripciones_clase WHERE clase_id=?");
$st->execute([$claseId]);
$inscriptos = (int)$st->fetchColumn();

$st = $pdo->prepare("SELECT COUNT(*) FROM evaluaciones WHERE clase_id=?");
$st->execute([$claseId]);
$totalEval = (int)$st->fetchColumn();

$st = $pdo->prepare("
  SELECT COUNT(*) 
  FROM calificaciones ca
  JOIN evaluaciones e ON e.id=ca.evaluacion_id
  WHERE e.clase_id=? AND ca.estudiante_id IS NOT NULL
");
$st->execute([$claseId]);
$totalCargadas = (int)$st->fetchColumn();

// evaluaciones con progreso
$st = $pdo->prepare("
  SELECT e.id, e.tipo, e.titulo, e.fecha, e.puntaje_max,
         (SELECT COUNT(*) FROM calificaciones ca WHERE ca.evaluacion_id=e.id AND ca.estudiante_id IS NOT NULL) AS cargados
  FROM evaluaciones e
  WHERE e.clase_id=?
  ORDER BY
    CASE e.tipo
      WHEN 'TP_IND' THEN 1
      WHEN 'TP_GRUP' THEN 2
      WHEN 'PARCIAL' THEN 3
      ELSE 9
    END,
    e.id ASC
");
$st->execute([$claseId]);
$evals = $st->fetchAll(PDO::FETCH_ASSOC);

$title="Clase";
include __DIR__ . '/../../app/views/header.php';
?>

<style>
  .card-pro{border-radius:16px;border:1px solid rgba(0,0,0,.06);background:#fff;box-shadow:0 8px 22px rgba(0,0,0,.04);}
  .kpi{display:flex;align-items:center;gap:12px}
  .kpi .ico{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.08);background:rgba(13,110,253,.08)}
  .kpi .val{font-size:1.8rem;font-weight:900;line-height:1}
  .kpi .lab{color:#6c757d;font-size:.86rem}
  .soft-table{border-radius:16px;overflow:hidden;border:1px solid rgba(0,0,0,.06);}
  .soft-table thead th{background:rgba(248,249,250,1);font-size:.85rem;color:#6c757d;font-weight:800;letter-spacing:.2px;}
</style>

<div class="d-flex justify-content-between align-items-start flex-wrap gap-2 mb-3">
  <div>
    <h1 class="h5 mb-1"><?= h($C['materia']) ?></h1>
    <div class="text-muted">
      <?= h($C['nivel'].' · '.$C['curso'].' '.$C['seccion'].' · Turno '.$C['turno']) ?>
      · Año <?= (int)$anio ?> · Etapa <?= (int)$C['etapa'] ?>
    </div>
    <div class="text-muted small mt-1">
      Docente: <?= h($doc['apellidos'].' '.$doc['nombres']) ?>
    </div>
  </div>
  <div class="d-flex gap-2">
    <a class="btn btn-outline-secondary btn-sm" href="/Comercio/public/docente/mis_clases.php">← Mis asignaturas</a>
    <a class="btn btn-brand btn-sm" href="/Comercio/public/docente/configurar.php?clase=<?= (int)$claseId ?>">
      <i class="bi bi-gear me-1"></i>Configurar
    </a>
    <a class="btn btn-outline-primary btn-sm" href="/Comercio/public/docente/cargar.php?clase=<?= (int)$claseId ?>">
      <i class="bi bi-pencil-square me-1"></i>Cargar puntajes
    </a>
  </div>
</div>

<?php if ($inscriptos === 0): ?>
  <div class="alert alert-warning">
    <b>Sin alumnos inscriptos.</b> Pedí al Admin: Matricular PRO y luego Sync inscripciones.
  </div>
<?php endif; ?>

<div class="row g-3 mb-3">
  <div class="col-12 col-md-4">
    <div class="card-pro p-3">
      <div class="kpi">
        <div class="ico"><i class="bi bi-people fs-4"></i></div>
        <div>
          <div class="val"><?= (int)$inscriptos ?></div>
          <div class="lab">Inscriptos a esta clase</div>
        </div>
      </div>
    </div>
  </div>
  <div class="col-12 col-md-4">
    <div class="card-pro p-3">
      <div class="kpi">
        <div class="ico" style="background:rgba(25,135,84,.10)"><i class="bi bi-ui-checks fs-4"></i></div>
        <div>
          <div class="val"><?= (int)$totalEval ?></div>
          <div class="lab">Evaluaciones creadas</div>
        </div>
      </div>
    </div>
  </div>
  <div class="col-12 col-md-4">
    <div class="card-pro p-3">
      <div class="kpi">
        <div class="ico" style="background:rgba(255,193,7,.14)"><i class="bi bi-check2-circle fs-4"></i></div>
        <div>
          <div class="val"><?= (int)$totalCargadas ?></div>
          <div class="lab">Calificaciones cargadas</div>
        </div>
      </div>
    </div>
  </div>
</div>

<div class="card-pro p-3">
  <div class="d-flex justify-content-between align-items-center mb-2">
    <div class="fw-bold">Evaluaciones</div>
    <a class="btn btn-sm btn-outline-secondary" href="/Comercio/public/docente/cargar.php?clase=<?= (int)$claseId ?>">
      Ver en vista de carga
    </a>
  </div>

  <?php if (empty($evals)): ?>
    <div class="text-muted">Aún no hay evaluaciones. Entrá a <b>Configurar</b> para crear.</div>
  <?php else: ?>
    <div class="soft-table table-responsive">
      <table class="table table-sm align-middle mb-0">
        <thead>
          <tr>
            <th>Tipo</th>
            <th>Título</th>
            <th>Puntaje máx</th>
            <th>Progreso</th>
            <th style="width:130px;"></th>
          </tr>
        </thead>
        <tbody>
          <?php foreach ($evals as $e):
            $cargados = (int)$e['cargados'];
            $pct = ($inscriptos>0) ? (int)round(($cargados/$inscriptos)*100) : 0;
          ?>
            <tr>
              <td><?= tipo_badge((string)$e['tipo']) ?></td>
              <td class="fw-semibold"><?= h($e['titulo']) ?></td>
              <td><span class="badge text-bg-light"><?= h($e['puntaje_max']) ?></span></td>
              <td>
                <div class="small text-muted mb-1"><?= $cargados ?> / <?= (int)$inscriptos ?> (<?= $pct ?>%)</div>
                <div class="progress" style="height:8px;">
                  <div class="progress-bar" style="width: <?= $pct ?>%;"></div>
                </div>
              </td>
              <td class="text-end">
                <a class="btn btn-sm btn-brand" href="/Comercio/public/docente/cargar_eval.php?eval=<?= (int)$e['id'] ?>">
                  Cargar
                </a>
              </td>
            </tr>
          <?php endforeach; ?>
        </tbody>
      </table>
    </div>
  <?php endif; ?>
</div>

<?php include __DIR__ . '/../../app/views/footer.php'; ?>
