<?php
// modules/tutor/evaluacion_satisfaccion.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_TUTOR);

$user = currentUser();
$db   = getDB();
$pageTitle = 'Evaluación de Satisfacción';

$idPrac = (int)($_GET['id'] ?? 0);
if (!$idPrac) { header('Location: evaluaciones.php'); exit; }

// Verificar que la práctica pertenece a este tutor
$stTutor = $db->prepare("SELECT id_tutor FROM tutores WHERE id_usuario = :uid");
$stTutor->execute([':uid' => $user['id']]);
$tutor = $stTutor->fetch();
if (!$tutor) { header('Location: evaluaciones.php'); exit; }

$stPr = $db->prepare("
    SELECT pr.id_practica, pr.estado,
           CONCAT(u.apellidos,' ',u.nombres) AS estudiante,
           em.razon_social AS empresa, per.nombre AS periodo
    FROM practicas pr
    JOIN estudiantes est ON est.id_estudiante = pr.id_estudiante
    JOIN usuarios u      ON u.id_usuario      = est.id_usuario
    JOIN empresas em     ON em.id_empresa     = pr.id_empresa
    JOIN periodos_academicos per ON per.id_periodo = pr.id_periodo
    WHERE pr.id_practica = :ip AND pr.id_tutor = :tid LIMIT 1
");
$stPr->execute([':ip' => $idPrac, ':tid' => $tutor['id_tutor']]);
$practica = $stPr->fetch();
if (!$practica) { header('Location: evaluaciones.php'); exit; }

// ¿Ya evaluó?
$yaEvaluo = false;
try {
    $ev = $db->prepare("SELECT id_eval FROM evaluaciones_satisfaccion WHERE id_practica=:p AND tipo_evaluador='tutor_academico'");
    $ev->execute([':p' => $idPrac]);
    $yaEvaluo = (bool)$ev->fetch();
} catch(Exception $e) {}

// ── POST ─────────────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !$yaEvaluo) {
    $p1 = (int)($_POST['p1'] ?? 0);
    $p2 = (int)($_POST['p2'] ?? 0);
    $p3 = (int)($_POST['p3'] ?? 0);
    $p4 = (int)($_POST['p4'] ?? 0);
    $p5 = (int)($_POST['p5'] ?? 0);
    $com = trim($_POST['comentarios'] ?? '');
    $err = [];
    foreach (['p1'=>$p1,'p2'=>$p2,'p3'=>$p3,'p4'=>$p4] as $k=>$v)
        if ($v < 1 || $v > 5) $err[] = "La pregunta $k debe ser entre 1 y 5.";
    if (empty($err)) {
        try {
            $db->prepare("
                INSERT INTO evaluaciones_satisfaccion
                  (id_practica, tipo_evaluador, p1_satisfaccion, p2_aprendizaje, p3_infraestructura, p4_tutoria, p5_recomendaria, comentarios)
                VALUES (:p, 'tutor_academico', :p1, :p2, :p3, :p4, :p5, :com)
            ")->execute([':p'=>$idPrac,':p1'=>$p1,':p2'=>$p2,':p3'=>$p3,':p4'=>$p4,':p5'=>$p5,':com'=>$com]);

            // ¿Todos evaluaron? → completar práctica
            $count = $db->prepare("SELECT COUNT(*) FROM evaluaciones_satisfaccion WHERE id_practica=:p");
            $count->execute([':p' => $idPrac]);
            if ($count->fetchColumn() >= 3) {
                $db->prepare("UPDATE practicas SET estado='completado' WHERE id_practica=:p")->execute([':p' => $idPrac]);
            }
            flashSet('ok', '¡Gracias! Tu evaluación de satisfacción ha sido registrada.');
            header('Location: evaluaciones.php'); exit;
        } catch(Exception $e) {
            flashSet('err', 'Error al guardar: ' . $e->getMessage());
        }
    } else {
        flashSet('err', implode(' | ', $err));
    }
}

// Bitácoras pendientes para badge
$bitsPendientes = 0;
try {
    $stBits = $db->prepare("SELECT COUNT(*) FROM bitacoras b JOIN practicas pr ON pr.id_practica=b.id_practica WHERE pr.id_tutor=:tid AND b.estado='enviada'");
    $stBits->execute([':tid' => $tutor['id_tutor']]);
    $bitsPendientes = (int)$stBits->fetchColumn();
} catch(Exception $e) {}

function estrellas(string $name): string {
    $out = '<div class="star-group" data-name="'.$name.'">';
    for ($i = 1; $i <= 5; $i++)
        $out .= '<button type="button" class="star-btn" data-val="'.$i.'">★</button>';
    $out .= '<input type="hidden" name="'.$name.'" id="val_'.$name.'" value="0">';
    $out .= '</div>';
    return $out;
}
?>
<?php $paginaActual = 'satisfaccion'; ?>
<!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-tutor.css">
<style>
.eval-card { background:var(--bs-body-bg,#fff); border:1px solid #30363d; border-radius:12px; padding:20px 24px; margin-bottom:14px; transition:border-color .2s; }
.eval-card:hover { border-color:#2ea8ff44; }
.eval-num { display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#2ea8ff18;color:#2ea8ff;font-size:11px;font-weight:700;flex-shrink:0;border:1px solid #2ea8ff33;margin-right:8px; }
.eval-q { font-weight:600;font-size:14px;color:#1a1a2e;margin-bottom:14px;display:flex;align-items:flex-start;line-height:1.5; }
.eval-label { font-size:11px;font-weight:700;color:#57606a;text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px; }
.star-group { display:flex;gap:6px; }
.star-btn { background:none;border:none;font-size:2rem;color:#d0d0d0;cursor:pointer;transition:color .15s,transform .1s;padding:0;line-height:1; }
.star-btn.active,.star-btn:hover { color:#ffb74d;transform:scale(1.15); }
.star-hint { font-size:11px;color:#57606a;margin-top:8px;min-height:16px; }
.toggle-group { display:flex;gap:8px; }
.toggle-btn { padding:8px 20px;border:1px solid #d0d7de;border-radius:20px;background:none;color:#57606a;cursor:pointer;font-size:13px;font-weight:500;transition:all .15s; }
.toggle-btn.active { background:#2ea8ff22;border-color:#2ea8ff;color:#2ea8ff; }
.toggle-btn:not(.active):hover { background:#f3f4f6;color:#1a1a2e;border-color:#8b949e; }
</style>
</head>
<body>
<?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'navbar.php'; ?>
<div class="app-shell">
  <?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'sidebar-tutor.php'; ?>

  <main class="main-area">
    <div class="mb-3">
      <a href="evaluaciones.php" style="font-size:12px;color:#8b949e;text-decoration:none;">
        <i class="fa fa-arrow-left me-1"></i> Volver a Evaluaciones
      </a>
    </div>
    <div class="page-header">
      <h4><i class="fa fa-star me-2" style="color:#ffb74d;"></i>Evaluación de Satisfacción</h4>
      <p><?= htmlspecialchars($practica['empresa']) ?> · <?= htmlspecialchars($practica['estudiante']) ?> — Obligatoria para finalizar el proceso</p>
    </div>
    <?= flashHtml() ?>

    <?php if ($yaEvaluo): ?>
    <div class="tbl-wrap p-4 text-center">
      <i class="fa fa-circle-check" style="font-size:3rem;color:#3dffa0;margin-bottom:1rem;display:block;"></i>
      <h5>Ya completaste esta evaluación</h5>
      <p style="color:#8b949e;">Gracias por tu retroalimentación.</p>
      <a href="evaluaciones.php" class="btn btn-primary mt-2">Volver a Evaluaciones</a>
    </div>
    <?php else: ?>
    <form method="POST" id="evalForm">

      <div class="eval-card">
        <div class="eval-q"><span class="eval-num">1</span>¿Qué tan satisfecho estás con el desempeño del estudiante en general?</div>
        <div class="eval-label">Tu calificación</div>
        <?= estrellas('p1') ?>
        <div class="star-hint" id="hint_p1"></div>
      </div>

      <div class="eval-card">
        <div class="eval-q"><span class="eval-num">2</span>¿El estudiante aplicó los conocimientos de su carrera durante la práctica?</div>
        <div class="eval-label">Tu calificación</div>
        <?= estrellas('p2') ?>
        <div class="star-hint" id="hint_p2"></div>
      </div>

      <div class="eval-card">
        <div class="eval-q"><span class="eval-num">3</span>¿Cómo evaluarías la calidad de los informes y bitácoras presentados?</div>
        <div class="eval-label">Tu calificación</div>
        <?= estrellas('p3') ?>
        <div class="star-hint" id="hint_p3"></div>
      </div>

      <div class="eval-card">
        <div class="eval-q"><span class="eval-num">4</span>¿Cómo calificarías la comunicación y compromiso del estudiante contigo?</div>
        <div class="eval-label">Tu calificación</div>
        <?= estrellas('p4') ?>
        <div class="star-hint" id="hint_p4"></div>
      </div>

      <div class="eval-card">
        <div class="eval-q"><span class="eval-num">5</span>¿Recomendarías a este estudiante para futuras prácticas?</div>
        <div class="toggle-group">
          <button type="button" class="toggle-btn" onclick="setToggle(this,1)">
            <i class="fa fa-thumbs-up me-1"></i> Sí, lo recomendaría
          </button>
          <button type="button" class="toggle-btn" onclick="setToggle(this,0)">
            <i class="fa fa-thumbs-down me-1"></i> No lo recomendaría
          </button>
        </div>
        <input type="hidden" name="p5" id="val_p5" value="0">
      </div>

      <div class="eval-card">
        <div class="eval-q"><span class="eval-num">💬</span>Comentarios adicionales <span style="font-weight:400;color:#8b949e;font-size:12px;">(opcional)</span></div>
        <textarea name="comentarios" class="form-control" rows="3"
                  placeholder="Observaciones sobre el proceso de tutoría o el desempeño del estudiante…"
                  style="font-size:13px;"></textarea>
      </div>

      <div class="d-flex gap-2 mt-2 mb-4">
        <button type="submit" class="btn btn-primary px-4">
          <i class="fa fa-paper-plane me-2"></i>Enviar evaluación
        </button>
        <a href="evaluaciones.php" class="btn btn-outline-secondary">Volver</a>
      </div>
    </form>
    <?php endif; ?>
  </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>
const HINTS = ['','Muy malo','Malo','Regular','Bueno','Excelente'];
document.querySelectorAll('.star-group').forEach(grp => {
    const btns = grp.querySelectorAll('.star-btn');
    const inp  = grp.querySelector('input[type=hidden]');
    const hint = document.getElementById('hint_' + inp.name);
    let current = 0;
    btns.forEach((b,i) => {
        b.addEventListener('click', () => { current=i+1; inp.value=current; update(); });
        b.addEventListener('mouseover', () => { highlight(i+1); if(hint) hint.textContent=HINTS[i+1]; });
        b.addEventListener('mouseout',  () => { highlight(current); if(hint) hint.textContent=current?HINTS[current]:''; });
    });
    function highlight(n){ btns.forEach((b,i)=>b.classList.toggle('active',i<n)); }
    function update(){ highlight(current); if(hint) hint.textContent=HINTS[current]; }
});
function setToggle(btn,val){
    document.querySelectorAll('.toggle-btn').forEach(b=>b.classList.remove('active'));
    btn.classList.add('active');
    document.getElementById('val_p5').value=val;
}
document.getElementById('evalForm')?.addEventListener('submit',function(e){
    for(const c of ['p1','p2','p3','p4']){
        if(document.getElementById('val_'+c)?.value==='0'){
            e.preventDefault(); alert('Por favor califica todas las preguntas antes de enviar.'); return;
        }
    }
});
</script>
</body>
</html>