Update configuracion.php

This commit is contained in:
Lizandro Guarnizo
2026-04-19 21:11:22 -05:00
parent f1e81002de
commit 0d17328fc3
+70 -41
View File
@@ -14,53 +14,72 @@ if (!isUserLoggedIn()) { header('Location: ' . BASE_URL . 'login.php'); exit; }
$db = Database::getInstance(); $db = Database::getInstance();
$pdo = $db->getConnection(); $pdo = $db->getConnection();
// ── Cargar datos para los tabs ──────────────────────────────── // ── Cargar datos para los tabs (con fallback para tablas aún no migradas) ──
$lugares = $pdo->query( $lugares = [];
'SELECT * FROM turnero_lugares ORDER BY sort_order ASC, id ASC' $prioridades = [];
)->fetchAll(PDO::FETCH_ASSOC); $examTipos = [];
$formulariosCons= [];
$sesiones = [];
$sesionHoy = false;
$cfg = [];
$_loadErrors = [];
$prioridades = $pdo->query( try {
'SELECT * FROM turnero_prioridades ORDER BY orden_peso ASC' $lugares = $pdo->query(
)->fetchAll(PDO::FETCH_ASSOC); 'SELECT * FROM turnero_lugares ORDER BY sort_order ASC, id ASC'
)->fetchAll(PDO::FETCH_ASSOC);
} catch (\Throwable $e) { $_loadErrors[] = 'turnero_lugares: ' . $e->getMessage(); }
$examTipos = $pdo->query( try {
'SELECT et.*, GROUP_CONCAT(etc.formulario_id) AS form_ids $prioridades = $pdo->query(
FROM exam_tipos et 'SELECT * FROM turnero_prioridades ORDER BY orden_peso ASC'
LEFT JOIN exam_tipo_consentimientos etc ON etc.exam_tipo_id = et.id )->fetchAll(PDO::FETCH_ASSOC);
GROUP BY et.id } catch (\Throwable $e) { $_loadErrors[] = 'turnero_prioridades: ' . $e->getMessage(); }
ORDER BY et.categoria ASC, et.nombre ASC'
)->fetchAll(PDO::FETCH_ASSOC);
$formulariosCons = $pdo->query( try {
"SELECT id, nombre FROM lab_formularios WHERE tipo='consentimiento' AND activo=1 ORDER BY nombre ASC" $examTipos = $pdo->query(
)->fetchAll(PDO::FETCH_ASSOC); 'SELECT et.*, GROUP_CONCAT(etc.formulario_id) AS form_ids
FROM exam_tipos et
LEFT JOIN exam_tipo_consentimientos etc ON etc.exam_tipo_id = et.id
GROUP BY et.id
ORDER BY et.categoria ASC, et.nombre ASC'
)->fetchAll(PDO::FETCH_ASSOC);
} catch (\Throwable $e) { $_loadErrors[] = 'exam_tipos: ' . $e->getMessage(); }
// Historial de sesiones (últimas 30) try {
$sesiones = $pdo->query( $formulariosCons = $pdo->query(
'SELECT s.*, "SELECT id, nombre FROM lab_formularios WHERE tipo='consentimiento' AND activo=1 ORDER BY nombre ASC"
a1.full_name AS abierto_nombre, )->fetchAll(PDO::FETCH_ASSOC);
a2.full_name AS cerrado_nombre } catch (\Throwable $e) { $_loadErrors[] = 'lab_formularios: ' . $e->getMessage(); }
FROM turnero_sesiones s
LEFT JOIN admin_users a1 ON a1.id = s.abierto_por
LEFT JOIN admin_users a2 ON a2.id = s.cerrado_por
ORDER BY s.fecha DESC
LIMIT 30'
)->fetchAll(PDO::FETCH_ASSOC);
// Sesión abierta hoy try {
$sesionHoy = $pdo->prepare( $sesiones = $pdo->query(
"SELECT s.*, 'SELECT s.*,
(SELECT COUNT(*) FROM turnero_turnos WHERE sesion_id = s.id) AS total_turnos a1.full_name AS abierto_nombre,
FROM turnero_sesiones s a2.full_name AS cerrado_nombre
WHERE s.fecha = CURDATE()" FROM turnero_sesiones s
); LEFT JOIN admin_users a1 ON a1.id = s.abierto_por
$sesionHoy->execute(); LEFT JOIN admin_users a2 ON a2.id = s.cerrado_por
$sesionHoy = $sesionHoy->fetch(PDO::FETCH_ASSOC); ORDER BY s.fecha DESC
LIMIT 30'
)->fetchAll(PDO::FETCH_ASSOC);
} catch (\Throwable $e) { $_loadErrors[] = 'turnero_sesiones: ' . $e->getMessage(); }
// Config WhatsApp del turnero try {
$cfgRows = $pdo->query("SELECT clave, valor FROM lab_config WHERE clave LIKE 'turnero_%'")->fetchAll(PDO::FETCH_ASSOC); $stmtHoy = $pdo->prepare(
$cfg = []; "SELECT s.*,
foreach ($cfgRows as $r) { $cfg[$r['clave']] = $r['valor']; } (SELECT COUNT(*) FROM turnero_turnos WHERE sesion_id = s.id) AS total_turnos
FROM turnero_sesiones s
WHERE s.fecha = CURDATE()"
);
$stmtHoy->execute();
$sesionHoy = $stmtHoy->fetch(PDO::FETCH_ASSOC);
} catch (\Throwable $e) { $_loadErrors[] = 'sesion_hoy: ' . $e->getMessage(); }
try {
$cfgRows = $pdo->query("SELECT clave, valor FROM lab_config WHERE clave LIKE 'turnero_%'")->fetchAll(PDO::FETCH_ASSOC);
foreach ($cfgRows as $r) { $cfg[$r['clave']] = $r['valor']; }
} catch (\Throwable $e) { $_loadErrors[] = 'lab_config: ' . $e->getMessage(); }
$tab = $_GET['tab'] ?? 'lugares'; $tab = $_GET['tab'] ?? 'lugares';
?> ?>
@@ -109,6 +128,16 @@ $tab = $_GET['tab'] ?? 'lugares';
</div> </div>
<div class="content-wrap"> <div class="content-wrap">
<?php if (!empty($_loadErrors)): ?>
<div class="alert alert-warning mb-3">
<strong><i class="fas fa-exclamation-triangle me-1"></i>Algunas tablas aún no existen (ejecuta las migraciones pendientes):</strong>
<ul class="mb-0 mt-1">
<?php foreach ($_loadErrors as $le): ?>
<li><code><?= htmlspecialchars($le) ?></code></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<ul class="nav nav-tabs" id="cfgTabs"> <ul class="nav nav-tabs" id="cfgTabs">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link <?= $tab==='lugares'?'active':'' ?>" href="?tab=lugares"> <a class="nav-link <?= $tab==='lugares'?'active':'' ?>" href="?tab=lugares">