fix(turnero/chat): recepcionista siempre vuelve a recepción, no a dashboard

IP registrada → su desk; sin IP registrada → primer desk activo de recepción.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-08 08:56:57 -05:00
co-authored by Claude Sonnet 4.6
parent 1f2198225c
commit 8aa2f35585
+12 -2
View File
@@ -10,19 +10,29 @@ if (!isUserLoggedIn()) { header('Location: ' . BASE_URL . 'login.php'); exit; }
$turneroPhoneId = getConfigFromDB('whatsapp_phone_number_id_turnero', '');
// URL de regreso: recepcionista con IP registrada → su desk; resto → dashboard
// URL de regreso: recepcionista → su desk por IP o primer desk; resto → dashboard
$_chatBackUrl = BASE_URL . 'erp.php?m=turnero&v=dashboard';
if (($_SESSION['admin_user']['role'] ?? '') === 'recepcionista') {
try {
$pdo = Database::getInstance()->getConnection();
$chatIp = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? '')[0]);
$st = $pdo->prepare(
// 1. Buscar desk por IP
$st = $pdo->prepare(
"SELECT d.lugar_id FROM turnero_dispositivos d
JOIN turnero_lugares l ON l.id = d.lugar_id
WHERE d.ip = ? AND d.activo = 1 AND l.tipo = 'recepcion' LIMIT 1"
);
$st->execute([$chatIp]);
$lugId = $st->fetchColumn();
// 2. Fallback: primer desk de recepción activo
if (!$lugId) {
$lugId = $pdo->query(
"SELECT id FROM turnero_lugares WHERE activo=1 AND tipo='recepcion' ORDER BY sort_order LIMIT 1"
)->fetchColumn();
}
if ($lugId) {
$_chatBackUrl = BASE_URL . 'erp.php?m=turnero&v=recepcion&desk_id=' . (int)$lugId;
}