Update configuracion.php
This commit is contained in:
@@ -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">
|
||||||
|
|||||||
Reference in New Issue
Block a user