<?php
// modules/coordinador/preguntas_complexivo.php
require_once __DIR__ . '/../../config/app.php';
require_once __DIR__ . '/../../config/onedrive.php';
require_once __DIR__ . '/../../includes/OneDriveStorage.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/functions.php';
require_once __DIR__ . '/../../includes/flash.php';
requireRol(ROL_COORDINADOR);
$idInst = instId(); // multi-tenant

$user = currentUser();
$db   = getDB();
$pageTitle = 'Preguntas Examen Complexivo — Coordinador';

// ── POST: subir o actualizar PDF ──────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $accion = $_POST['accion'] ?? '';

    // Subir / reemplazar PDF para una carrera
    if ($accion === 'subir_pdf') {
        $idCarrera   = (int)($_POST['id_carrera'] ?? 0);
        $descripcion = trim($_POST['descripcion'] ?? '');

        if (!$idCarrera) { flashSet('error', 'Seleccione una carrera.'); header('Location: preguntas_complexivo.php'); exit; }
        if (empty($_FILES['pdf_preguntas']['name'])) { flashSet('error', 'Debe subir un archivo PDF.'); header('Location: preguntas_complexivo.php'); exit; }

        $file     = $_FILES['pdf_preguntas'];
        $ext      = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
        if ($ext !== 'pdf') { flashSet('error', 'Solo se permiten archivos PDF.'); header('Location: preguntas_complexivo.php'); exit; }
        if ($file['size'] > 20 * 1024 * 1024) { flashSet('error', 'El archivo no puede superar 20 MB.'); header('Location: preguntas_complexivo.php'); exit; }

        $filename  = 'carrera_' . $idCarrera . '_' . time() . '.pdf';

        // Eliminar anterior del OneDrive si existe
        $prev = $db->prepare("SELECT pdf_preguntas FROM preguntas_complexivo WHERE id_carrera=:c");
        $prev->execute([':c' => $idCarrera]);
        $prevRow = $prev->fetch();

        try {
            $rutaOD = OneDriveStorage::upload($file['tmp_name'], 'preguntas_complexivo', $filename, (string)$idCarrera, $idInst);
        } catch(Exception $e) {
            flashSet('error', 'Error al subir a OneDrive: '.$e->getMessage());
            header('Location: preguntas_complexivo.php'); exit;
        }

        // INSERT o UPDATE — guardamos la ruta onedrive:... en pdf_preguntas
        $db->prepare("
            INSERT INTO preguntas_complexivo (id_carrera, pdf_preguntas, descripcion, subido_por, activo)
            VALUES (:c, :pdf, :desc, :u, 1)
            ON DUPLICATE KEY UPDATE pdf_preguntas=:pdf2, descripcion=:desc2, subido_por=:u2, activo=1, updated_at=NOW()
        ")->execute([
            ':c'     => $idCarrera,
            ':pdf'   => $rutaOD,
            ':desc'  => $descripcion,
            ':u'     => $user['id_usuario'],
            ':pdf2'  => $rutaOD,
            ':desc2' => $descripcion,
            ':u2'    => $user['id_usuario'],
        ]);

        flashSet('ok', 'PDF de preguntas subido correctamente.');
        header('Location: preguntas_complexivo.php'); exit;
    }

    // Activar / desactivar
    if ($accion === 'toggle_activo') {
        $idCarrera = (int)($_POST['id_carrera'] ?? 0);
        $nuevoVal  = (int)($_POST['activo'] ?? 0);
        if ($idCarrera) {
            $db->prepare("UPDATE preguntas_complexivo SET activo=:a WHERE id_carrera=:c")
               ->execute([':a' => $nuevoVal, ':c' => $idCarrera]);
            flashSet('ok', $nuevoVal ? 'PDF activado (visible para estudiantes).' : 'PDF desactivado.');
        }
        header('Location: preguntas_complexivo.php'); exit;
    }

    // Eliminar PDF
    if ($accion === 'eliminar_pdf') {
        $idCarrera = (int)($_POST['id_carrera'] ?? 0);
        if ($idCarrera) {
            $row = $db->prepare("SELECT pdf_preguntas FROM preguntas_complexivo WHERE id_carrera=:c");
            $row->execute([':c' => $idCarrera]);
            $r = $row->fetch();
            if ($r && $r['pdf_preguntas']) {
                try { OneDriveStorage::delete($r['pdf_preguntas']); } catch(Exception $e) {}
            }
            $db->prepare("DELETE FROM preguntas_complexivo WHERE id_carrera=:c")->execute([':c' => $idCarrera]);
            flashSet('ok', 'PDF eliminado correctamente.');
        }
        header('Location: preguntas_complexivo.php'); exit;
    }
}

// ── Datos ─────────────────────────────────────────────────────────────────────
// Carreras activas
$carreras = $db->query("SELECT id_carrera, nombre FROM carreras WHERE activa=1" . ($idInst ? " AND id_instituto=$idInst" : "") . " ORDER BY nombre")->fetchAll();

// PDFs ya subidos
$pdfs = $db->query("
    SELECT pc.*, c.nombre AS carrera_nombre,
           CONCAT(u.apellidos,' ',u.nombres) AS subido_nombre
    FROM preguntas_complexivo pc
    JOIN carreras c ON c.id_carrera = pc.id_carrera
    LEFT JOIN usuarios u ON u.id_usuario = pc.subido_por
    WHERE 1=1" . ($idInst ? " AND c.id_instituto=$idInst" : "") . "
    ORDER BY c.nombre
")->fetchAll();
$pdfsMap = array_column($pdfs, null, 'id_carrera');
?>
<?php $paginaActual = 'titulacion'; ?>
<!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-coordinador.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-coordinador.php'; ?>

  <main class="main-area">
    <div class="page-header d-flex justify-content-between align-items-center flex-wrap gap-2 mb-4">
      <div>
        <h4 class="mb-1">
          <i class="fa fa-file-pdf me-2" style="color:#ef4444;"></i>Preguntas — Examen Complexivo
        </h4>
        <p class="text-muted mb-0" style="font-size:14px;">
          Suba el PDF de preguntas <strong>por cada carrera</strong>. Cuando un estudiante de Examen Complexivo sea aprobado, verá automáticamente el PDF de su carrera en su panel.
        </p>
      </div>
    </div>

    <?= flashHtml() ?>

    <div class="row g-4">
      <!-- ── Formulario subir ── -->
      <div class="col-lg-4">
        <div class="card border-0 shadow-sm">
          <div class="card-body">
            <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#6b7280;margin-bottom:16px;">
              <i class="fa fa-upload me-1"></i> Subir / Actualizar PDF
            </div>
            <form method="POST" enctype="multipart/form-data">
              <input type="hidden" name="accion" value="subir_pdf">
              <div class="mb-3">
                <label class="form-label fw-semibold" style="font-size:13px;">Carrera</label>
                <select name="id_carrera" class="form-select form-select-sm" required>
                  <option value="">— Seleccione —</option>
                  <?php foreach ($carreras as $c): ?>
                    <option value="<?= $c['id_carrera'] ?>">
                      <?= htmlspecialchars($c['nombre']) ?>
                      <?= isset($pdfsMap[$c['id_carrera']]) ? ' ✓' : '' ?>
                    </option>
                  <?php endforeach; ?>
                </select>
                <div style="font-size:11px;color:#9ca3af;margin-top:4px;">Las carreras con ✓ ya tienen PDF cargado.</div>
              </div>
              <div class="mb-3">
                <label class="form-label fw-semibold" style="font-size:13px;">Descripción (opcional)</label>
                <input type="text" name="descripcion" class="form-control form-control-sm"
                       placeholder="Ej: Banco de preguntas 2026-A" maxlength="255">
              </div>
              <div class="mb-3">
                <label class="form-label fw-semibold" style="font-size:13px;">Archivo PDF</label>
                <input type="file" name="pdf_preguntas" class="form-control form-control-sm" accept=".pdf" required>
                <div style="font-size:11px;color:#9ca3af;margin-top:4px;">Máximo 20 MB. Solo PDF.</div>
              </div>
              <button type="submit" class="btn btn-danger btn-sm w-100">
                <i class="fa fa-cloud-upload-alt me-1"></i> Subir PDF
              </button>
            </form>
          </div>
        </div>

        <!-- Info -->
        <div class="card border-0 mt-3" style="background:linear-gradient(135deg,#fef3c7,#fde68a);border-left:4px solid #f59e0b !important;">
          <div class="card-body py-3">
            <div style="font-size:12px;font-weight:700;color:#92400e;margin-bottom:6px;">
                <i class="fa fa-circle-info me-1"></i> ¿Cómo funciona?
            </div>
            <ul style="font-size:12px;color:#78350f;margin:0;padding-left:16px;line-height:1.7;">
              <li>Suba <strong>un PDF por carrera</strong> con el banco de preguntas del examen complexivo.</li>
              <li>El PDF queda <strong>activo inmediatamente</strong> al subirlo.</li>
              <li>Cuando un estudiante de esa carrera tenga su titulación <strong>aprobada</strong>, verá automáticamente el PDF en su panel.</li>
              <li>Solo los estudiantes de <strong>Examen Complexivo</strong> ven el PDF; los de Trabajo de Investigación no lo ven.</li>
              <li>Puede desactivar/reactivar el PDF en cualquier momento desde la tabla de la derecha.</li>
            </ul>
          </div>
        </div>
      </div>

      <!-- ── Lista PDFs por carrera ── -->
      <div class="col-lg-8">
        <div class="card border-0 shadow-sm">
          <div class="card-body p-0">
            <div class="px-4 pt-3 pb-2" style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#6b7280;">
              PDFs por carrera
            </div>
            <?php if (empty($pdfs)): ?>
              <div class="text-center text-muted py-5" style="font-size:14px;">
                <i class="fa fa-file-pdf fa-2x mb-2 d-block" style="color:#d1d5db;"></i>
                Aún no hay PDFs subidos. Use el formulario a la izquierda.
              </div>
            <?php else: ?>
            <table class="table table-hover mb-0" style="font-size:13px;">
              <thead style="background:#f8f9fa;">
                <tr style="font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;">
                  <th class="px-4 py-3">Carrera</th>
                  <th class="py-3">Descripción</th>
                  <th class="py-3">Subido por</th>
                  <th class="py-3">Estado</th>
                  <th class="py-3">Acciones</th>
                </tr>
              </thead>
              <tbody>
                <?php foreach ($pdfs as $pdf): ?>
                <tr>
                  <td class="px-4 py-2">
                    <strong><?= htmlspecialchars($pdf['carrera_nombre']) ?></strong>
                  </td>
                  <td class="py-2" style="font-size:12px;color:#6b7280;max-width:180px;">
                    <?= $pdf['descripcion'] ? htmlspecialchars($pdf['descripcion']) : '<span style="color:#d1d5db;">—</span>' ?>
                  </td>
                  <td class="py-2" style="font-size:12px;color:#6b7280;">
                    <?= htmlspecialchars($pdf['subido_nombre'] ?? '—') ?>
                    <div style="font-size:10px;color:#9ca3af;"><?= date('d/m/Y H:i', strtotime($pdf['updated_at'])) ?></div>
                  </td>
                  <td class="py-2">
                    <?php if ($pdf['activo']): ?>
                      <span style="display:inline-flex;align-items:center;gap:5px;background:#dcfce7;color:#15803d;border:1px solid #86efac;border-radius:999px;font-size:11px;font-weight:700;padding:3px 10px;">
                        <i class="fa fa-circle-check" style="font-size:10px;"></i> Activo
                      </span>
                    <?php else: ?>
                      <span style="display:inline-flex;align-items:center;gap:5px;background:#f3f4f6;color:#6b7280;border:1px solid #e5e7eb;border-radius:999px;font-size:11px;font-weight:700;padding:3px 10px;">
                        <i class="fa fa-circle-xmark" style="font-size:10px;"></i> Inactivo
                      </span>
                    <?php endif; ?>
                  </td>
                  <td class="py-2">
                    <div class="d-flex gap-1 flex-wrap">
                      <!-- Ver PDF -->
                      <a href="<?= BASE_URL ?>/api/ver_preguntas_complexivo.php?carrera=<?= (int)$pdf['id_carrera'] ?>"
                         target="_blank" class="btn btn-sm btn-outline-danger" title="Ver PDF">
                        <i class="fa fa-eye"></i>
                      </a>

                      <!-- Toggle activo -->
                      <form method="POST" style="display:inline">
                        <input type="hidden" name="accion" value="toggle_activo">
                        <input type="hidden" name="id_carrera" value="<?= $pdf['id_carrera'] ?>">
                        <input type="hidden" name="activo" value="<?= $pdf['activo'] ? 0 : 1 ?>">
                        <button type="submit" class="btn btn-sm <?= $pdf['activo'] ? 'btn-warning' : 'btn-success' ?>"
                                title="<?= $pdf['activo'] ? 'Desactivar' : 'Activar' ?>"
                                onclick="return confirm('<?= $pdf['activo'] ? '¿Desactivar el PDF? Los estudiantes no podrán verlo.' : '¿Activar el PDF? Los estudiantes de esta carrera podrán descargarlo.' ?>')">
                          <i class="fa <?= $pdf['activo'] ? 'fa-eye-slash' : 'fa-eye' ?>"></i>
                        </button>
                      </form>

                      <!-- Eliminar -->
                      <form method="POST" style="display:inline">
                        <input type="hidden" name="accion" value="eliminar_pdf">
                        <input type="hidden" name="id_carrera" value="<?= $pdf['id_carrera'] ?>">
                        <button type="submit" class="btn btn-sm btn-outline-secondary"
                                title="Eliminar"
                                onclick="return confirm('¿Eliminar el PDF de esta carrera? Esta acción no se puede deshacer.')">
                          <i class="fa fa-trash"></i>
                        </button>
                      </form>
                    </div>
                  </td>
                </tr>
                <?php endforeach; ?>
              </tbody>
            </table>
            <?php endif; ?>
          </div>
        </div>

        <?php
        $idsConPdf = array_column($pdfs, 'id_carrera');
        $sinPdf    = array_filter($carreras, fn($c) => !in_array($c['id_carrera'], $idsConPdf));
        // Contar estudiantes examen complexivo aprobados sin PDF disponible
        $estSinPdf = 0;
        if (!empty($sinPdf)) {
            $idsCarrerasSinPdf = array_column(array_values($sinPdf), 'id_carrera');
            $placeholders = implode(',', array_fill(0, count($idsCarrerasSinPdf), '?'));
            $stEst = $db->prepare("
                SELECT COUNT(*) FROM titulaciones t
                JOIN estudiantes e ON e.id_estudiante = t.id_estudiante
                WHERE t.estado = 'aprobado'
                  AND t.modalidad = 'examen_complexivo'
                  AND e.id_carrera IN ($placeholders)
            ");
            $stEst->execute($idsCarrerasSinPdf);
            $estSinPdf = (int)$stEst->fetchColumn();
        }
        if (!empty($sinPdf)):
        ?>
        <div class="card border-0 shadow-sm mt-3" style="border-left:4px solid #dc2626 !important;">
          <div class="card-body py-3">
            <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#dc2626;margin-bottom:8px;">
              <i class="fa fa-triangle-exclamation me-1"></i>
              Carreras sin PDF de preguntas
              <?php if ($estSinPdf > 0): ?>
                <span style="background:#dc2626;color:#fff;border-radius:999px;font-size:10px;padding:2px 8px;margin-left:6px;">
                  <?= $estSinPdf ?> estudiante<?= $estSinPdf > 1 ? 's' : '' ?> aprobado<?= $estSinPdf > 1 ? 's' : '' ?> sin PDF
                </span>
              <?php endif; ?>
            </div>
            <?php if ($estSinPdf > 0): ?>
            <div style="background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 14px;margin-bottom:12px;font-size:12px;color:#991b1b;">
              <i class="fa fa-circle-exclamation me-2"></i>
              <strong>¡Atención!</strong> Hay <strong><?= $estSinPdf ?> estudiante<?= $estSinPdf > 1 ? 's' : '' ?> aprobado<?= $estSinPdf > 1 ? 's' : '' ?></strong>
              de Examen Complexivo en carreras que todavía no tienen PDF de preguntas subido.
              Esos estudiantes <u>no pueden ver ningún material de estudio</u> en su panel.
              Suba el PDF de la carrera correspondiente lo antes posible.
            </div>
            <?php endif; ?>
            <div class="d-flex flex-wrap gap-2">
              <?php foreach ($sinPdf as $c): ?>
                <a href="#" onclick="document.querySelector('select[name=id_carrera]').value='<?= $c['id_carrera'] ?>';document.querySelector('select[name=id_carrera]').scrollIntoView({behavior:'smooth'});return false;"
                   style="background:#fee2e2;color:#991b1b;font-size:12px;font-weight:600;padding:4px 12px;border-radius:20px;text-decoration:none;display:inline-flex;align-items:center;gap:5px;">
                  <i class="fa fa-upload" style="font-size:10px;"></i>
                  <?= htmlspecialchars($c['nombre']) ?>
                </a>
              <?php endforeach; ?>
            </div>
            <div style="font-size:11px;color:#9ca3af;margin-top:8px;">
              <i class="fa fa-hand-point-up me-1"></i>Haz clic en el nombre de una carrera para seleccionarla en el formulario de subida.
            </div>
          </div>
        </div>
        <?php endif; ?>
      </div>
    </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>
</body>
</html>