} catch (Throwable $e) { error_log('BSB WEB chat cliente: ' . $e->getMessage()); http_response_code(500); echo json_encode(['ok' => false, 'error' => 'Falha temporária no chat.']); } exit; } // Compatibilidade com envio tradicional, caso JavaScript esteja desativado. $msg = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { csrf(); $body = trim((string)($_POST['body'] ?? '')); if ($body === '' || mb_strlen($body) > 2000) { $msg = 'Escreva uma mensagem de até 2.000 caracteres.'; } else { $st = $db->prepare('INSERT INTO messages(client_id,sender_id,body) VALUES(?,?,?)'); $st->execute([uid(), uid(), $body]); redirect('loginclientes.php'); } } $st = $db->prepare('SELECT * FROM orders WHERE client_id=? ORDER BY id DESC'); $st->execute([uid()]); $orders = $st->fetchAll(); $st = $db->prepare('SELECT m.id, m.body, m.created_at, u.name AS sender_name, m.sender_id FROM messages m JOIN users u ON u.id=m.sender_id WHERE m.client_id=? ORDER BY m.id DESC LIMIT 100'); $st->execute([uid()]); $messages = array_reverse($st->fetchAll()); $lastId = $messages ? (int)end($messages)['id'] : 0; layout('Minha área do cliente'); if ($msg) echo '

'.e($msg).'

'; echo '

Meus serviços e pedidos

'; foreach ($orders as $o) { echo '
Pedido #'.(int)$o['id'].' — '.e($o['status']).'

'.e(items_text($o['items_json'])).'

'.e($o['created_at']).'
'; } if (!$orders) echo '

Seu gestor ainda não vinculou nenhum pedido à sua conta.

'; echo '
'; echo '

Chat com o gestor

As mensagens são atualizadas automaticamente.

'; echo '
'; foreach ($messages as $m) { echo '

'.e($m['sender_name']).' '.e($m['created_at']).'
'.nl2br(e($m['body'])).'

'; } echo '
'; echo '
'; echo '

'; ?>