90 lines
4.1 KiB
PHP
90 lines
4.1 KiB
PHP
<?php
|
|
/**
|
|
* sidebar.php — Barra lateral de navegación
|
|
* Variables esperadas: $activeNav (string)
|
|
*/
|
|
require_once __DIR__ . '/../../config/config.php';
|
|
require_once __DIR__ . '/../../models/Oficio.php';
|
|
|
|
$esAdmin = ($_SESSION['usuario_rol'] ?? '') === 'administrador';
|
|
$esSupervisor = in_array($_SESSION['usuario_rol'] ?? '', ['administrador','supervisor']);
|
|
$usuarioNombre = $_SESSION['usuario_nombre'] ?? 'Usuario';
|
|
$usuarioRol = $_SESSION['usuario_rol'] ?? '';
|
|
|
|
// Contar notificaciones no leídas
|
|
$db = getDB();
|
|
$stmt = $db->prepare("SELECT COUNT(*) FROM notificaciones WHERE usuario_id=? AND leida=0");
|
|
$stmt->execute([$_SESSION['usuario_id'] ?? 0]);
|
|
$notifCount = (int)$stmt->fetchColumn();
|
|
|
|
// Iniciales del usuario
|
|
$iniciales = implode('', array_map(fn($p) => strtoupper($p[0]), array_slice(explode(' ', $usuarioNombre), 0, 2)));
|
|
|
|
function navItem(string $href, string $icon, string $label, string $active, string $badge = ''): string {
|
|
$cls = $active ? ' active' : '';
|
|
$b = $badge ? '<span class="nav-badge">'.$badge.'</span>' : '';
|
|
return "<a href=\"$href\" class=\"nav-item$cls\"><i class=\"$icon\"></i><span>$label</span>$b</a>";
|
|
}
|
|
|
|
$nav = $activeNav ?? '';
|
|
?>
|
|
<!-- Sidebar -->
|
|
<aside class="sidebar" id="sidebar">
|
|
<!-- Brand -->
|
|
<a href="<?= APP_URL ?>/dashboard.php" class="sidebar-brand">
|
|
<div class="sidebar-brand-icon">
|
|
<i class="fa-solid fa-shield-halved"></i>
|
|
</div>
|
|
<div class="sidebar-brand-text">
|
|
<?= APP_NAME ?>
|
|
<span>Gestión ICT - DTIC</span>
|
|
</div>
|
|
</a>
|
|
|
|
<!-- Navigation -->
|
|
<nav class="sidebar-nav">
|
|
|
|
<div class="nav-section-title">Principal</div>
|
|
<?= navItem(APP_URL.'/dashboard.php', 'fa-solid fa-chart-pie', 'Dashboard', $nav === 'dashboard') ?>
|
|
|
|
<div class="nav-section-title">Oficios</div>
|
|
<?= navItem(APP_URL.'/views/oficios/lista.php?tipo=recibido', 'fa-solid fa-inbox', 'Bandeja Entrada', $nav === 'entrada') ?>
|
|
<?= navItem(APP_URL.'/views/oficios/lista.php?tipo=enviado', 'fa-solid fa-paper-plane', 'Bandeja Salida', $nav === 'salida') ?>
|
|
<?= navItem(APP_URL.'/views/oficios/crear.php', 'fa-solid fa-plus-circle', 'Nuevo Oficio', $nav === 'nuevo') ?>
|
|
<?= navItem(APP_URL.'/views/oficios/lista.php', 'fa-solid fa-list', 'Todos los Oficios', $nav === 'lista') ?>
|
|
|
|
<div class="nav-section-title">Seguimiento</div>
|
|
<?= navItem(APP_URL.'/views/oficios/lista.php?semaforo=vencido', 'fa-solid fa-circle-xmark text-danger', 'Vencidos', $nav === 'vencidos') ?>
|
|
<?= navItem(APP_URL.'/views/oficios/lista.php?semaforo=proximo', 'fa-solid fa-clock text-warning', 'Por Vencer', $nav === 'porvencer') ?>
|
|
<?= navItem(APP_URL.'/views/oficios/papelera.php', 'fa-solid fa-trash', 'Papelera', $nav === 'papelera') ?>
|
|
|
|
<div class="nav-section-title">Reportes</div>
|
|
<?= navItem(APP_URL.'/views/reportes/index.php', 'fa-solid fa-chart-bar', 'Reportes', $nav === 'reportes') ?>
|
|
|
|
<?php if ($esAdmin || $esSupervisor): ?>
|
|
<div class="nav-section-title">Administración</div>
|
|
<?php if ($esAdmin): ?>
|
|
<?= navItem(APP_URL.'/views/usuarios/lista.php', 'fa-solid fa-users', 'Usuarios', $nav === 'usuarios') ?>
|
|
<?= navItem(APP_URL.'/views/alertas/configuracion.php','fa-solid fa-bell', 'Alertas', $nav === 'alertas', $notifCount ?: '') ?>
|
|
<?= navItem(APP_URL.'/views/reportes/respaldo.php', 'fa-solid fa-database', 'Respaldo BD', $nav === 'respaldo') ?>
|
|
<?= navItem(APP_URL.'/views/reportes/log.php', 'fa-solid fa-scroll', 'Log Actividad', $nav === 'log') ?>
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
|
|
</nav>
|
|
|
|
<!-- Footer del sidebar -->
|
|
<div class="sidebar-footer">
|
|
<div class="user-mini">
|
|
<div class="user-mini-avatar"><?= $iniciales ?></div>
|
|
<div class="user-mini-info">
|
|
<div class="user-mini-name"><?= htmlspecialchars($usuarioNombre) ?></div>
|
|
<div class="user-mini-role"><?= ucfirst($usuarioRol) ?></div>
|
|
</div>
|
|
<a href="<?= APP_URL ?>/logout.php" class="btn-icon" title="Cerrar sesión" style="color:rgba(255,255,255,.4);font-size:.9rem">
|
|
<i class="fa-solid fa-right-from-bracket"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</aside>
|