Update configuracion.php
This commit is contained in:
@@ -14,53 +14,72 @@ if (!isUserLoggedIn()) { header('Location: ' . BASE_URL . 'login.php'); exit; }
|
||||
$db = Database::getInstance();
|
||||
$pdo = $db->getConnection();
|
||||
|
||||
// ── Cargar datos para los tabs ────────────────────────────────
|
||||
$lugares = $pdo->query(
|
||||
'SELECT * FROM turnero_lugares ORDER BY sort_order ASC, id ASC'
|
||||
)->fetchAll(PDO::FETCH_ASSOC);
|
||||
// ── Cargar datos para los tabs (con fallback para tablas aún no migradas) ──
|
||||
$lugares = [];
|
||||
$prioridades = [];
|
||||
$examTipos = [];
|
||||
$formulariosCons= [];
|
||||
$sesiones = [];
|
||||
$sesionHoy = false;
|
||||
$cfg = [];
|
||||
$_loadErrors = [];
|
||||
|
||||
$prioridades = $pdo->query(
|
||||
'SELECT * FROM turnero_prioridades ORDER BY orden_peso ASC'
|
||||
)->fetchAll(PDO::FETCH_ASSOC);
|
||||
try {
|
||||
$lugares = $pdo->query(
|
||||
'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(
|
||||
'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);
|
||||
try {
|
||||
$prioridades = $pdo->query(
|
||||
'SELECT * FROM turnero_prioridades ORDER BY orden_peso ASC'
|
||||
)->fetchAll(PDO::FETCH_ASSOC);
|
||||
} catch (\Throwable $e) { $_loadErrors[] = 'turnero_prioridades: ' . $e->getMessage(); }
|
||||
|
||||
$formulariosCons = $pdo->query(
|
||||
"SELECT id, nombre FROM lab_formularios WHERE tipo='consentimiento' AND activo=1 ORDER BY nombre ASC"
|
||||
)->fetchAll(PDO::FETCH_ASSOC);
|
||||
try {
|
||||
$examTipos = $pdo->query(
|
||||
'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)
|
||||
$sesiones = $pdo->query(
|
||||
'SELECT s.*,
|
||||
a1.full_name AS abierto_nombre,
|
||||
a2.full_name AS cerrado_nombre
|
||||
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);
|
||||
try {
|
||||
$formulariosCons = $pdo->query(
|
||||
"SELECT id, nombre FROM lab_formularios WHERE tipo='consentimiento' AND activo=1 ORDER BY nombre ASC"
|
||||
)->fetchAll(PDO::FETCH_ASSOC);
|
||||
} catch (\Throwable $e) { $_loadErrors[] = 'lab_formularios: ' . $e->getMessage(); }
|
||||
|
||||
// Sesión abierta hoy
|
||||
$sesionHoy = $pdo->prepare(
|
||||
"SELECT s.*,
|
||||
(SELECT COUNT(*) FROM turnero_turnos WHERE sesion_id = s.id) AS total_turnos
|
||||
FROM turnero_sesiones s
|
||||
WHERE s.fecha = CURDATE()"
|
||||
);
|
||||
$sesionHoy->execute();
|
||||
$sesionHoy = $sesionHoy->fetch(PDO::FETCH_ASSOC);
|
||||
try {
|
||||
$sesiones = $pdo->query(
|
||||
'SELECT s.*,
|
||||
a1.full_name AS abierto_nombre,
|
||||
a2.full_name AS cerrado_nombre
|
||||
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);
|
||||
} catch (\Throwable $e) { $_loadErrors[] = 'turnero_sesiones: ' . $e->getMessage(); }
|
||||
|
||||
// Config WhatsApp del turnero
|
||||
$cfgRows = $pdo->query("SELECT clave, valor FROM lab_config WHERE clave LIKE 'turnero_%'")->fetchAll(PDO::FETCH_ASSOC);
|
||||
$cfg = [];
|
||||
foreach ($cfgRows as $r) { $cfg[$r['clave']] = $r['valor']; }
|
||||
try {
|
||||
$stmtHoy = $pdo->prepare(
|
||||
"SELECT s.*,
|
||||
(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';
|
||||
?>
|
||||
@@ -109,6 +128,16 @@ $tab = $_GET['tab'] ?? 'lugares';
|
||||
</div>
|
||||
|
||||
<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">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $tab==='lugares'?'active':'' ?>" href="?tab=lugares">
|
||||
|
||||
Reference in New Issue
Block a user