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:
co-authored by
Claude Sonnet 4.6
parent
d6e1d083f4
commit
e90cfda3f3
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user