<?php
require_once __DIR__ . '/../../config/app.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/functions.php';
require_once __DIR__ . '/../../includes/flash.php';
requireRol(ROL_TUTOR_EMPRESA);
$idInst = instId();
$user = currentUser(); $db = getDB(); $pageTitle = 'Calificar — Tutor Empresa';

// Empresas del tutor
$te = $db->prepare("SELECT te.id_empresa, em.id_instituto FROM tutores_empresa te JOIN empresas em ON em.id_empresa=te.id_empresa WHERE te.id_usuario=:uid AND te.activo=1");
$te->execute([':uid'=>$user['id']]);
$teRows      = $te->fetchAll();
$idsEmpresas = array_column($teRows, 'id_empresa');
$sinEmpresa  = empty($idsEmpresas);
$inEmp       = $sinEmpresa ? '0' : implode(',', array_map('intval',$idsEmpresas));
// Instituto de la empresa (reemplaza instId() para filtrar correctamente)
$idInst      = (int)($teRows[0]['id_instituto'] ?? $idInst);

// Guardar calificación
if (!$sinEmpresa && $_SERVER['REQUEST_METHOD']==='POST') {
    $id    = (int)($_POST['id_practica'] ?? 0);
    $nota  = min(100, max(0, (float)str_replace(',','.',($_POST['nota_empresa_100'] ?? 0))));
    $obs   = trim($_POST['observacion'] ?? '');

    // Verificar que la práctica pertenece a su empresa
    $check = $db->prepare("SELECT id_practica FROM practicas WHERE id_practica=:id AND id_empresa IN ($inEmp) AND id_instituto=:inst");
    $check->execute([':id'=>$id, ':inst'=>$idInst]);
    if ($check->fetch()) {
        // Guardar nota 0-100 y convertir a 0-10 para la fórmula
        $nota10 = round($nota / 10, 2);
        $db->prepare("
            UPDATE practicas SET
                nota_empresa_100    = :n100,
                nota_tutor_empresa  = :n10,
                observaciones       = :obs
            WHERE id_practica = :id
        ")->execute([':n100'=>$nota,':n10'=>$nota10,':obs'=>$obs,':id'=>$id]);

        // ── Notificar a Gestores PPP que la empresa ya calificó ───
        $stNomE = $db->prepare("
            SELECT CONCAT(uu.apellidos,' ',uu.nombres)
            FROM   practicas pr
            JOIN   estudiantes est ON est.id_estudiante = pr.id_estudiante
            JOIN   usuarios uu     ON uu.id_usuario     = est.id_usuario
            WHERE  pr.id_practica = :id LIMIT 1
        ");
        $stNomE->execute([':id' => $id]);
        $nomEst = $stNomE->fetchColumn() ?: "Práctica #{$id}";

        $stNotifGest = $db->prepare("
            INSERT INTO notificaciones (id_usuario, tipo, asunto, mensaje)
            VALUES (:uid, 'sistema', :asunto, :msg)
        ");
        $stGest = $db->prepare("SELECT id_usuario FROM usuarios WHERE id_rol = :rol AND activo = 1 AND id_instituto = :inst");
        $stGest->execute([':rol' => ROL_GESTOR_PPP, ':inst' => $idInst]);
        foreach ($stGest->fetchAll() as $g) {
            $stNotifGest->execute([
                ':uid'    => $g['id_usuario'],
                ':asunto' => "Empresa calificó a {$nomEst}",
                ':msg'    => "El supervisor de empresa {$user['nombre']} registró la nota de empresa ({$nota}/100) para {$nomEst}. Práctica #{$id} lista para nota final.",
            ]);
        }

        flashSet('ok',"Calificación guardada: $nota/100 (equivale a ".number_format($nota10,2)."/10 en la rúbrica)");
    }
    header("Location: calificacion.php?id=$id"); exit;
}

$idPractica = (int)($_GET['id'] ?? 0);

// Lista de practicantes
$lista = [];
$practica = null;
$bitacoras = [];

if (!$sinEmpresa) {
$stLista = $db->prepare("
    SELECT p.id_practica, p.estado, p.nota_empresa_100,
           CONCAT(u.apellidos,' ',u.nombres) AS estudiante,
           em.razon_social AS empresa, c.nombre AS carrera
    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
    JOIN empresas em     ON em.id_empresa=p.id_empresa
    JOIN periodos_academicos pa ON pa.id_periodo=p.id_periodo
    WHERE p.id_empresa IN ($inEmp)
      AND pa.activo      = 1
      AND pa.id_instituto = :inst
      AND p.estado IN ('aprobado','en_progreso','informe_enviado','calificado','completado')
    ORDER BY (p.nota_empresa_100 IS NULL) DESC, p.updated_at DESC
");
$stLista->execute([':inst' => $idInst]);
$lista = $stLista->fetchAll();

// Práctica seleccionada
if ($idPractica) {
    $st = $db->prepare("
        SELECT p.*,
               CONCAT(u.apellidos,' ',u.nombres) AS estudiante,
               u.email, u.cedula, c.nombre AS carrera,
               em.razon_social AS empresa, pa.nombre AS periodo,
               (SELECT COUNT(*) FROM bitacoras b WHERE b.id_practica=p.id_practica) AS total_bit,
               (SELECT COUNT(*) FROM bitacoras b WHERE b.id_practica=p.id_practica AND b.estado='validada') AS bit_val,
               (SELECT COALESCE(SUM(horas_semana),0) FROM bitacoras b WHERE b.id_practica=p.id_practica AND b.estado='validada') AS horas_val
        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
        JOIN empresas em     ON em.id_empresa=p.id_empresa
        JOIN periodos_academicos pa ON pa.id_periodo=p.id_periodo
        WHERE p.id_practica=:id AND p.id_empresa IN ($inEmp) AND pa.id_instituto=:inst
    ");
    $st->execute([':id'=>$idPractica, ':inst'=>$idInst]);
    $practica = $st->fetch();

    if ($practica) {
        $stB = $db->prepare("SELECT * FROM bitacoras WHERE id_practica=:id ORDER BY semana_numero");
        $stB->execute([':id'=>$idPractica]);
        $bitacoras = $stB->fetchAll();
    }
}
} // end if !sinEmpresa
?>
<!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-tutor-empresa.css">
</head>
<body>
<?php include __DIR__ . '/../../includes/navbar.php'; ?>
<div class="app-shell">
  <aside class="sidebar">
    <div class="sidebar-label">Tutor Empresa</div>
    <a href="dashboard.php"><span class="icon"><i class="fa fa-gauge"></i></span> Dashboard</a>

    <!-- Prácticas — Rosa -->
    <div class="sidebar-group g-practicas">
      <span class="sg-label"><i class="fa fa-briefcase me-1"></i>Prácticas</span>
      <a href="mis_estudiantes.php"><span class="icon"><i class="fa fa-users"></i></span> Mis Estudiantes</a>
      <a href="bitacoras.php"><span class="icon"><i class="fa fa-book-open"></i></span> Bitácoras</a>
    </div>

    <!-- Calificación — Ámbar -->
    <div class="sidebar-group g-calificacion">
      <span class="sg-label"><i class="fa fa-star me-1"></i>Calificación</span>
      <a href="calificacion.php" class="active"><span class="icon"><i class="fa fa-star"></i></span> Calificar</a>
    </div>

    <!-- Cuenta — Neutro -->
    <div class="sidebar-group g-cuenta">
      <span class="sg-label"><i class="fa fa-user me-1"></i>Cuenta</span>
      <a href="<?= BASE_URL ?>/auth/cambiar_password.php"><span class="icon"><i class="fa fa-lock"></i></span> Contraseña</a>
    </div>

    <div class="sidebar-sep"></div>
    <a href="<?= BASE_URL ?>/auth/logout.php"><span class="icon"><i class="fa fa-right-from-bracket"></i></span> Salir</a>
  </aside>
  <main class="main-area">
    <?= flashHtml() ?>
    <div class="page-header">
      <h4><i class="fa fa-star me-2" style="color:#f59e0b;"></i>Calificar Practicante</h4>
      <p><?= $sinEmpresa ? 'Panel del supervisor de empresa' : 'Escala de calificación: <strong>0 a 100 puntos</strong> · Mínimo aprobatorio: 70' ?></p>
    </div>

    <?php if ($sinEmpresa): ?>
    <!-- ── Mensaje profesional: sin empresa asignada ── -->
    <div style="max-width:560px;margin:60px auto;text-align:center;">
      <div style="width:80px;height:80px;border-radius:50%;background:#1a2332;border:2px solid #f59e0b44;
                  display:flex;align-items:center;justify-content:center;margin:0 auto 24px;">
        <i class="fa fa-star" style="font-size:2rem;color:#f59e0b66;"></i>
      </div>
      <h5 style="font-size:18px;font-weight:700;margin-bottom:10px;">Sin practicantes asignados aún</h5>
      <p style="color:#8b949e;font-size:14px;line-height:1.7;margin-bottom:24px;">
        Tu perfil de supervisor no está vinculado a una empresa en el sistema.<br>
        Una vez que el coordinador complete la asignación, podrás calificar aquí a tus practicantes.
      </p>
      <div style="background:#1a2332;border:1px solid #f59e0b33;border-radius:12px;padding:20px 24px;text-align:left;font-size:13px;">
        <div style="font-size:11px;color:#f59e0b;text-transform:uppercase;letter-spacing:.6px;margin-bottom:12px;">
          <i class="fa fa-circle-info me-1"></i> Información sobre el proceso de calificación
        </div>
        <div style="display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;color:#c9d1d9;">
          <i class="fa fa-check-circle" style="color:#3dffa0;margin-top:2px;flex-shrink:0;"></i>
          <span>La calificación es en escala de <strong style="color:#f59e0b;">0 a 100 puntos</strong>. El mínimo aprobatorio es 70.</span>
        </div>
        <div style="display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;color:#c9d1d9;">
          <i class="fa fa-check-circle" style="color:#3dffa0;margin-top:2px;flex-shrink:0;"></i>
          <span>Podrás ver las bitácoras del practicante antes de calificar.</span>
        </div>
        <div style="display:flex;align-items:flex-start;gap:10px;color:#c9d1d9;">
          <i class="fa fa-check-circle" style="color:#3dffa0;margin-top:2px;flex-shrink:0;"></i>
          <span>Contacta al coordinador si ya deberías tener practicantes asignados.</span>
        </div>
      </div>
      <a href="mis_estudiantes.php" class="btn btn-outline-secondary mt-4" style="font-size:13px;">
        <i class="fa fa-users me-2"></i>Ir a Mis Estudiantes
      </a>
    </div>

    <?php else: ?>
    <div class="row g-3">
      <!-- Lista izquierda -->
      <div class="col-lg-4">
        <div class="tbl-wrap p-0" style="max-height:75vh;overflow-y:auto;">
          <?php if(empty($lista)): ?>
          <div class="p-4 text-center text-muted">Sin practicantes activos</div>
          <?php else: foreach($lista as $p):
            $activo = $idPractica == $p['id_practica'];
          ?>
          <a href="calificacion.php?id=<?= $p['id_practica'] ?>"
             style="display:block;padding:12px 16px;border-bottom:1px solid var(--border);
                    text-decoration:none;
                    background:<?= $activo?'var(--card-alt)':'transparent' ?>;
                    border-left:3px solid <?= $activo?'#ec4899':'transparent' ?>;">
            <div style="font-size:12px;font-weight:700;color:var(--text);"><?= htmlspecialchars($p['estudiante']) ?></div>
            <div style="font-size:11px;color:var(--text-2);"><?= htmlspecialchars($p['carrera']) ?></div>
            <div class="d-flex justify-content-between align-items-center mt-1">
              <?= badgeEstado($p['estado']) ?>
              <?php if($p['nota_empresa_100'] !== null): ?>
              <span style="font-size:14px;font-weight:800;color:<?= $p['nota_empresa_100']>=70?'var(--green)':'var(--red)' ?>;">
                <?= number_format($p['nota_empresa_100'],1) ?>/100
              </span>
              <?php else: ?>
              <span style="font-size:10px;color:#ec4899;font-weight:700;">SIN NOTA</span>
              <?php endif; ?>
            </div>
          </a>
          <?php endforeach; endif; ?>
        </div>
      </div>

      <!-- Panel derecha -->
      <div class="col-lg-8">
        <?php if(!$practica): ?>
        <div class="tbl-wrap p-5 text-center" style="color:var(--text-2);">
          <div style="font-size:48px;margin-bottom:16px;">👈</div>
          <div>Selecciona un practicante de la lista</div>
        </div>
        <?php else: ?>

        <!-- Info estudiante -->
        <div class="tbl-wrap p-3 mb-3" style="border-left:4px solid #ec4899;">
          <div style="font-size:16px;font-weight:800;"><?= htmlspecialchars($practica['estudiante']) ?></div>
          <div style="font-size:12px;color:var(--text-2);"><?= htmlspecialchars($practica['carrera']) ?> · <?= htmlspecialchars($practica['empresa']) ?></div>
          <div class="row g-2 mt-2" style="font-size:12px;">
            <div class="col-4"><span style="color:var(--text-2);">Área:</span> <?= htmlspecialchars($practica['area_practica']??'—') ?></div>
            <div class="col-4"><span style="color:var(--text-2);">Cargo:</span> <?= htmlspecialchars($practica['cargo_practica']??'—') ?></div>
            <div class="col-4"><span style="color:var(--text-2);">Horas validadas:</span> <strong style="color:var(--green);"><?= $practica['horas_val'] ?>h</strong> / <?= $practica['horas_requeridas'] ?>h</div>
            <div class="col-4"><span style="color:var(--text-2);">Bitácoras:</span> <?= $practica['bit_val'] ?>/<?= $practica['total_bit'] ?> validadas</div>
            <div class="col-4"><span style="color:var(--text-2);">Período:</span> <?= htmlspecialchars($practica['periodo']) ?></div>
            <div class="col-4"><span style="color:var(--text-2);">Estado:</span> <?= badgeEstado($practica['estado']) ?></div>
          </div>
        </div>

        <!-- Bitácoras del estudiante -->
        <?php if($bitacoras): ?>
        <div class="tbl-wrap mb-3">
          <div style="padding:12px 16px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2);border-bottom:1px solid var(--border);">
            📓 Bitácoras del practicante
          </div>
          <table class="table table-borderless mb-0" style="font-size:12px;">
            <thead><tr><th>Semana</th><th>Fechas</th><th style="text-align:center;">Horas</th><th>Actividades</th><th>Estado</th></tr></thead>
            <tbody>
              <?php foreach($bitacoras as $b): ?>
              <tr>
                <td style="font-weight:700;">Sem. <?= $b['semana_numero'] ?></td>
                <td style="color:var(--text-2);font-size:11px;">
                  <?= date('d/m', strtotime($b['fecha_inicio_semana'])) ?> – <?= date('d/m', strtotime($b['fecha_fin_semana'])) ?>
                </td>
                <td style="text-align:center;font-weight:700;color:var(--accent);"><?= $b['horas_semana'] ?>h</td>
                <td style="max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;" title="<?= htmlspecialchars($b['actividades']) ?>">
                  <?= htmlspecialchars(mb_strimwidth($b['actividades'],0,70,'...')) ?>
                </td>
                <td><span class="badge-estado st-<?= $b['estado'] ?>"><?= $b['estado'] ?></span></td>
              </tr>
              <?php endforeach; ?>
            </tbody>
          </table>
        </div>
        <?php endif; ?>

        <!-- Formulario calificación -->
        <form method="POST">
          <input type="hidden" name="id_practica" value="<?= $practica['id_practica'] ?>">
          <div class="tbl-wrap p-4">
            <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-2);margin-bottom:16px;">
              🏢 Calificación de la empresa (escala 0 – 100)
            </div>

            <!-- Criterios orientativos -->
            <div class="row g-2 mb-4">
              <?php foreach([
                ['Puntualidad y asistencia','⏰','25 pts'],
                ['Calidad del trabajo','💼','25 pts'],
                ['Actitud y responsabilidad','🎯','25 pts'],
                ['Conocimientos aplicados','🧠','25 pts'],
              ] as [$lbl,$ico,$pts]): ?>
              <div class="col-6">
                <div style="background:var(--card-alt);border-radius:var(--r-md);padding:10px;border:1px solid var(--border);">
                  <div style="font-size:16px;"><?= $ico ?></div>
                  <div style="font-size:11px;font-weight:600;color:var(--text);margin-top:4px;"><?= $lbl ?></div>
                  <div style="font-size:10px;color:var(--text-2);"><?= $pts ?></div>
                </div>
              </div>
              <?php endforeach; ?>
            </div>

            <!-- Nota principal -->
            <div class="text-center mb-3">
              <label style="font-size:13px;font-weight:700;color:var(--text-2);display:block;margin-bottom:8px;">
                NOTA FINAL DEL PRACTICANTE
              </label>
              <input type="number" name="nota_empresa_100" id="notaInput"
                     min="0" max="100" step="0.5"
                     value="<?= htmlspecialchars($practica['nota_empresa_100'] ?? '') ?>"
                     class="form-control"
                     style="font-size:48px;font-weight:900;text-align:center;max-width:200px;margin:0 auto;
                            background:var(--card-alt);border:2px solid var(--border);color:var(--accent);
                            border-radius:var(--r-lg);height:90px;"
                     placeholder="0">
              <div style="font-size:12px;color:var(--text-2);margin-top:6px;">de 100 puntos · Mínimo aprobatorio: 70</div>
            </div>

            <!-- Barra visual -->
            <div style="background:var(--border);border-radius:6px;height:12px;margin-bottom:6px;">
              <div id="barraVis" style="height:12px;border-radius:6px;background:var(--accent);width:0%;transition:width .3s;"></div>
            </div>
            <div id="estadoVis" style="text-align:center;font-size:13px;font-weight:700;margin-bottom:16px;"></div>

            <div class="mb-3">
              <label class="form-label">Observaciones (opcional)</label>
              <textarea name="observacion" class="form-control" rows="3"
                        placeholder="Comentarios sobre el desempeño del practicante..."><?= htmlspecialchars($practica['observaciones']??'') ?></textarea>
            </div>

            <button type="submit" class="btn btn-primary w-100">
              <i class="fa fa-save me-2"></i>Guardar calificación
            </button>
          </div>
        </form>

        <?php if ($practica): ?>
        <div style="margin-top:12px;">
          <a href="evaluacion_satisfaccion.php?id=<?= $practica['id_practica'] ?>"
             class="btn btn-outline-warning w-100">
            <i class="fa fa-heart me-2"></i>Ir a Evaluación de Satisfacción
          </a>
        </div>
        <?php endif; ?>

        <?php endif; ?>
      </div>
    </div><!-- end row -->
    <?php endif; // sinEmpresa ?>
  </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 ?>';
$(function(){
  function actualizar(){
    var v = parseFloat($('#notaInput').val());
    if(isNaN(v)){ $('#barraVis').css('width','0%'); $('#estadoVis').text(''); return; }
    v = Math.min(100,Math.max(0,v));
    var color = v>=70 ? 'var(--green)' : 'var(--red)';
    $('#barraVis').css({'width':v+'%','background':color});
    var equiv = (v/10).toFixed(2);
    $('#estadoVis').html(
      (v>=70?'✅ APROBADO':'❌ REPROBADO') +
      ' <span style="color:var(--text-2);font-weight:400;font-size:11px;">(equivale a '+equiv+'/10 en la rúbrica PPP)</span>'
    ).css('color',color);
  }
  $('#notaInput').on('input',actualizar);
  actualizar();
});
</script>
</body></html>