feat(dashboard): accesos rápidos en dropdown por grupo, filtrado por rol

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-24 09:03:57 -05:00
co-authored by Claude Sonnet 4.6
parent d6e1d083f4
commit e90cfda3f3
+41 -13
View File
@@ -116,26 +116,54 @@ Layout::open('Dashboard Turnero', 'fas fa-chart-bar');
</style>
<?php
// Cargar lugares activos para los botones de acceso rápido
$_dbLugares = [];
$_dashRole = $_SESSION['admin_user']['role'] ?? 'admin';
$_dashIsAdmin = in_array($_dashRole, ['superadmin', 'admin', 'supervisor'], true);
$_dashIsRecep = $_dashRole === 'recepcionista';
$_dashIsBacte = $_dashRole === 'bacteriologo';
$_dashReceps = [];
$_dashMuestras = [];
try {
$_pdo = Database::getInstance()->getConnection();
// Recepción: primer escritorio
$_receps = $_pdo->query("SELECT id, nombre FROM turnero_lugares WHERE activo=1 AND tipo='recepcion' ORDER BY sort_order")->fetchAll(PDO::FETCH_ASSOC);
$_muestras = $_pdo->query("SELECT id, nombre FROM turnero_lugares WHERE activo=1 AND tipo='muestras' ORDER BY sort_order")->fetchAll(PDO::FETCH_ASSOC);
foreach ($_receps as $_l) $_dbLugares[] = ['icon'=>'fas fa-concierge-bell', 'label'=>$_l['nombre'], 'url'=>BASE_URL.'erp.php?m=turnero&v=recepcion&desk_id='.$_l['id']];
foreach ($_muestras as $_l) $_dbLugares[] = ['icon'=>'fas fa-flask', 'label'=>$_l['nombre'], 'url'=>BASE_URL.'erp.php?m=turnero&v=lugar&lugar_id='.$_l['id']];
if ($_dashIsAdmin || $_dashIsRecep)
$_dashReceps = $_pdo->query("SELECT id, nombre FROM turnero_lugares WHERE activo=1 AND tipo='recepcion' ORDER BY sort_order")->fetchAll(PDO::FETCH_ASSOC);
if ($_dashIsAdmin || $_dashIsBacte)
$_dashMuestras = $_pdo->query("SELECT id, nombre FROM turnero_lugares WHERE activo=1 AND tipo='muestras' ORDER BY sort_order")->fetchAll(PDO::FETCH_ASSOC);
} catch (\Throwable $_) {}
?>
<div class="page-header">
<h1><i class="fas fa-chart-bar me-2 text-primary"></i>Dashboard Turnero</h1>
<!-- Accesos rápidos a lugares -->
<?php foreach ($_dbLugares as $_btn): ?>
<a href="<?= htmlspecialchars($_btn['url'], ENT_QUOTES) ?>" class="btn btn-sm btn-outline-primary">
<i class="<?= $_btn['icon'] ?> me-1"></i><?= htmlspecialchars($_btn['label'], ENT_QUOTES) ?>
</a>
<?php endforeach; ?>
<!-- Accesos rápidos: dropdown por grupo, filtrado por rol -->
<?php if (!empty($_dashReceps)): ?>
<div class="dropdown">
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="fas fa-concierge-bell me-1"></i>Recepción
</button>
<ul class="dropdown-menu shadow-sm">
<?php foreach ($_dashReceps as $_r): ?>
<li><a class="dropdown-item" href="<?= BASE_URL ?>erp.php?m=turnero&v=recepcion&desk_id=<?= (int)$_r['id'] ?>">
<i class="fas fa-chair me-1 text-primary"></i><?= htmlspecialchars($_r['nombre'], ENT_QUOTES) ?>
</a></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<?php if (!empty($_dashMuestras)): ?>
<div class="dropdown">
<button class="btn btn-sm btn-outline-success dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="fas fa-flask me-1"></i>Toma de Muestras
</button>
<ul class="dropdown-menu shadow-sm">
<?php foreach ($_dashMuestras as $_m): ?>
<li><a class="dropdown-item" href="<?= BASE_URL ?>erp.php?m=turnero&v=lugar&lugar_id=<?= (int)$_m['id'] ?>">
<i class="fas fa-vial me-1 text-success"></i><?= htmlspecialchars($_m['nombre'], ENT_QUOTES) ?>
</a></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<!-- Selector de fecha -->
<div class="d-flex align-items-center gap-2 ms-auto">