<?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['clase'] ?? 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 {
  $t = strtoupper($t);
  return match($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
$d = $pdo->prepare("SELECT id FROM docentes WHERE usuario_id=? LIMIT 1");
$d->execute([$uid]);
$doc = $d->fetch(PDO::FETCH_ASSOC);
if (!$doc) { http_response_code(403); die("Tu usuario no está vinculado a la tabla docentes."); }
$docenteId = (int)$doc['id'];

// validar clase pertenece al docente + info
$cl = $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"
);
$cl->execute([$claseId,$docenteId]);
$C = $cl->fetch(PDO::FETCH_ASSOC);
if (!$C) { http_response_code(403); die("No tenés permiso."); }

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

// total inscriptos a esta clase (PRO)
$st = $pdo->prepare("SELECT COUNT(*) FROM inscripciones_clase WHERE clase_id=?");
$st->execute([$claseId]);
$totalInscriptos = (int)$st->fetchColumn();

// traer evaluaciones de esta clase + progreso (cantidad calificada)
$st = $pdo->prepare("
  SELECT e.id, e.tipo, e.titulo, e.fecha, e.puntaje_max, e.creado_en,
         (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);

// agrupar por tipo
$byTipo = [
  'TP_IND' => [],
  'TP_GRUP'=> [],
  'PARCIAL'=> [],
  'OTROS'  => [],
];
foreach ($evals as $e) {
  $t = (string)$e['tipo'];
  if (!isset($byTipo[$t])) $byTipo['OTROS'][] = $e;
  else $byTipo[$t][] = $e;
}

$title="Cargar puntajes";
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);}
  .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;}
  .chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:.85rem;border:1px solid rgba(0,0,0,.08);background:#fff;}
</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']) ?> · <?= h($C['nivel']) ?> · Turno <?= h($C['turno']) ?></h1>
    <div class="text-muted">
      <?= h($C['curso'].' '.$C['seccion']) ?> · Año <?= (int)$anio ?> · Etapa <?= (int)$C['etapa'] ?>
      · Inscriptos: <b><?= (int)$totalInscriptos ?></b>
    </div>
  </div>
  <div class="d-flex gap-2">
    <a class="btn btn-outline-secondary btn-sm" href="/Comercio/public/docente/clase.php?id=<?= (int)$claseId ?>">
      ← Volver
    </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>
  </div>
</div>

<?php if ($totalInscriptos === 0): ?>
  <div class="alert alert-warning">
    <b>No hay alumnos inscriptos a esta clase.</b><br>
    👉 Pedí al Admin: Matricular PRO y luego <b>Sync inscripciones</b>.
  </div>
<?php endif; ?>

<div class="card-pro p-3 mb-3">
  <div class="d-flex flex-wrap gap-2">
    <span class="chip"><i class="bi bi-ui-checks"></i> Evaluaciones: <b><?= (int)count($evals) ?></b></span>
    <span class="chip"><i class="bi bi-people"></i> Inscriptos: <b><?= (int)$totalInscriptos ?></b></span>
    <span class="chip"><i class="bi bi-calendar3"></i> Etapa: <b><?= (int)$C['etapa'] ?></b></span>
  </div>
</div>

<div class="row g-3">
  <?php
    $bloques = [
      'TP_IND' => 'TP Individual',
      'TP_GRUP'=> 'TP Grupal',
      'PARCIAL'=> 'Parcial',
      'OTROS'  => 'Otros'
    ];
  ?>

  <?php foreach ($bloques as $key => $label): ?>
    <?php $list = $byTipo[$key] ?? []; ?>
    <div class="col-12 col-xl-6">
      <div class="card-pro p-3 h-100">
        <div class="d-flex justify-content-between align-items-center mb-2">
          <div class="fw-bold"><?= h($label) ?></div>
          <span class="badge text-bg-light"><?= (int)count($list) ?></span>
        </div>

        <?php if (empty($list)): ?>
          <div class="text-muted small">No hay evaluaciones en este bloque.</div>
        <?php else: ?>
          <div class="soft-table table-responsive">
            <table class="table table-sm align-middle mb-0">
              <thead>
                <tr>
                  <th>Evaluación</th>
                  <th>Puntaje máx</th>
                  <th>Progreso</th>
                  <th style="width:130px;"></th>
                </tr>
              </thead>
              <tbody>
                <?php foreach ($list as $e):
                  $cargados = (int)$e['cargados'];
                  $total = (int)$totalInscriptos;
                  $pct = ($total>0) ? (int)round(($cargados/$total)*100) : 0;
                ?>
                  <tr>
                    <td>
                      <div class="d-flex flex-column">
                        <div class="fw-semibold">
                          <?= tipo_badge((string)$e['tipo']) ?>
                          <span class="ms-1"><?= h($e['titulo']) ?></span>
                        </div>
                        <div class="text-muted small">
                          <?= $e['fecha'] ? 'Fecha: '.h($e['fecha']).' · ' : '' ?>
                          ID <?= (int)$e['id'] ?>
                        </div>
                      </div>
                    </td>
                    <td><span class="badge text-bg-light"><?= h($e['puntaje_max']) ?></span></td>
                    <td>
                      <div class="small text-muted mb-1"><?= $cargados ?> / <?= $total ?> (<?= $pct ?>%)</div>
                      <div class="progress" style="height:8px;">
                        <div class="progress-bar" role="progressbar" style="width: <?= $pct ?>%;" aria-valuenow="<?= $pct ?>" aria-valuemin="0" aria-valuemax="100"></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'] ?>">
                        <i class="bi bi-pencil-square me-1"></i>Cargar
                      </a>
                    </td>
                  </tr>
                <?php endforeach; ?>
              </tbody>
            </table>
          </div>
        <?php endif; ?>

      </div>
    </div>
  <?php endforeach; ?>
</div>

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