<?php
/**
 * Layout compartido: cabecera con sidebar según rol + pie con scripts.
 * Uso:
 *   page_header('Título de la página', 'clave_menu_activo');
 *   ... contenido ...
 *   page_footer($javascript_extra);
 */
require_once __DIR__ . '/helpers.php';

function menu_por_rol($rol) {
    switch ($rol) {
        case 'admin':
            return [
                ['admin_dashboard.php',    'bi-speedometer2', 'Dashboard',            'dashboard'],
                ['registrar_propietario.php','bi-person-plus','Nuevo Propietario',    'nuevo_propietario'],
                ['crear_conserje.php',     'bi-person-badge', 'Nuevo Conserje',       'nuevo_conserje'],
                ['listar_conserjes.php',   'bi-people',       'Conserjes',            'conserjes'],
                ['ingresar_lista_negra.php','bi-shield-x',    'Agregar a Lista Negra','ln_agregar'],
                ['listar_lista_negra.php', 'bi-shield-exclamation', 'Lista Negra',    'ln_ver'],
                ['bitacora_correos.php',   'bi-envelope-paper','Bitácora de Correos', 'bitacora'],
                ['cambiar_contrasena.php', 'bi-key',          'Contraseña',           'password'],
            ];
        case 'propietario':
            return [
                ['propietario_dashboard.php','bi-speedometer2','Dashboard',           'dashboard'],
                ['registrar_arrendatario.php','bi-person-plus','Nuevo Arrendatario',  'nuevo_arrendatario'],
                ['solicitudes.php',          'bi-inbox',       'Solicitudes',         'solicitudes'],
                ['calendario_dashboard.php', 'bi-calendar3',   'Calendario',          'calendario'],
                ['bitacora_correos.php',     'bi-envelope-paper','Bitácora de Correos','bitacora'],
                ['cambiar_contrasena.php',   'bi-key',         'Contraseña',          'password'],
            ];
        case 'conserje':
            return [
                ['conserje_dashboard.php', 'bi-speedometer2', 'Dashboard', 'dashboard'],
                ['cambiar_contrasena.php', 'bi-key',          'Contraseña','password'],
            ];
        default:
            return [];
    }
}

/** Solicitudes pendientes del departamento, para el globito del menú. */
function solicitudes_pendientes_menu() {
    global $conn;
    if (($_SESSION['rol'] ?? '') !== 'propietario' || !($conn instanceof mysqli)) {
        return 0;
    }
    $stmt = @$conn->prepare("
        SELECT COUNT(*) c FROM solicitudes s
        JOIN propietarios p ON p.numero_departamento = s.numero_departamento
        WHERE p.id_usuario = ? AND s.estado = 'pendiente'");
    if (!$stmt) return 0; // la tabla aún no existe (falta la migración)
    $stmt->bind_param('i', $_SESSION['id_usuario']);
    $stmt->execute();
    return (int)($stmt->get_result()->fetch_assoc()['c'] ?? 0);
}

function page_header($titulo, $activo = '') {
    $rol    = $_SESSION['rol'] ?? '';
    $nombre = $_SESSION['nombre'] ?? 'Usuario';
    $menu   = menu_por_rol($rol);
    $pendientes = solicitudes_pendientes_menu();
    $rolEtiqueta = ['admin' => 'Administrador', 'propietario' => 'Propietario', 'conserje' => 'Conserje'][$rol] ?? '';
    $iniciales = strtoupper(mb_substr(trim($nombre), 0, 1));
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= e($titulo) ?> · <?= APP_NOMBRE ?></title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏖️</text></svg>">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/datatables.net-bs5@1.13.8/css/dataTables.bootstrap5.min.css" rel="stylesheet">
<link href="assets/css/app.css" rel="stylesheet">
</head>
<body>

<div class="app-wrapper">

  <!-- ============ SIDEBAR ============ -->
  <aside class="sidebar d-flex flex-column" id="sidebar">
    <div class="sidebar-brand">
      <span class="brand-icon"><i class="bi bi-buildings"></i></span>
      <div class="brand-text">
        <strong>Arriendos</strong>
        <small><?= CONDOMINIO_NOMBRE ?></small>
      </div>
    </div>

    <nav class="sidebar-nav flex-grow-1">
      <?php foreach ($menu as [$url, $icono, $texto, $clave]): ?>
        <a href="<?= $url ?>" class="nav-item-link <?= $clave === $activo ? 'active' : '' ?>">
          <i class="bi <?= $icono ?>"></i><span><?= $texto ?></span>
          <?php if ($clave === 'solicitudes' && $pendientes > 0): ?>
            <span class="badge-menu"><?= $pendientes ?></span>
          <?php endif; ?>
        </a>
      <?php endforeach; ?>
    </nav>

    <div class="sidebar-footer">
      <a href="cerrar_sesion.php" class="nav-item-link text-danger-emphasis">
        <i class="bi bi-box-arrow-right"></i><span>Cerrar sesión</span>
      </a>
    </div>
  </aside>
  <div class="sidebar-backdrop" id="sidebarBackdrop"></div>

  <!-- ============ MAIN ============ -->
  <div class="main-area">
    <header class="topbar">
      <button class="btn btn-toggle-sidebar" id="btnSidebar" aria-label="Menú">
        <i class="bi bi-list"></i>
      </button>
      <h1 class="topbar-title"><?= e($titulo) ?></h1>
      <div class="ms-auto d-flex align-items-center gap-3">
        <div class="user-chip">
          <span class="user-avatar"><?= e($iniciales) ?></span>
          <div class="d-none d-sm-block">
            <div class="user-name"><?= e($nombre) ?></div>
            <div class="user-role"><?= e($rolEtiqueta) ?></div>
          </div>
        </div>
      </div>
    </header>

    <main class="content-area">
<?php
}

function page_footer($js_extra = '') {
?>
    </main>
    <footer class="app-footer">
      <?= APP_NOMBRE ?> · <?= CONDOMINIO_NOMBRE ?> · <?= date('Y') ?>
    </footer>
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/datatables.net@1.13.8/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/datatables.net-bs5@1.13.8/js/dataTables.bootstrap5.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="assets/js/app.js"></script>
<?= $js_extra ?>
</body>
</html>
<?php
}
