prepare('SELECT * FROM support_tickets WHERE id = ? AND client_id = ?'); $stmt->execute([$ticket_id, $client_id]); $ticket = $stmt->fetch(); if (!$ticket) { // Ticket not found or doesn't belong to the client header('Location: support.php'); exit; } // Handle new message submission if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['reply_to_ticket'])) { $message = trim($_POST['message']); if (!empty($message)) { try { $pdo->beginTransaction(); // Insert the new message $stmt = $pdo->prepare('INSERT INTO support_ticket_messages (ticket_id, user_id, is_admin, message) VALUES (?, ?, ?, ?)'); $stmt->execute([$ticket_id, $client_id, false, $message]); // Update the ticket's updated_at timestamp $stmt = $pdo->prepare('UPDATE support_tickets SET updated_at = CURRENT_TIMESTAMP WHERE id = ?'); $stmt->execute([$ticket_id]); $pdo->commit(); $_SESSION['success_message'] = 'Your reply has been sent.'; header('Location: view-ticket.php?id=' . $ticket_id); exit; } catch (Exception $e) { $pdo->rollBack(); $error_message = 'Failed to send reply. Please try again.'; } } } // Fetch all messages for the ticket $stmt = $pdo->prepare("SELECT m.*, c.name as client_name, co.name as coach_name FROM support_ticket_messages m LEFT JOIN clients c ON m.user_id = c.id AND m.is_admin = 0 LEFT JOIN coaches co ON m.user_id = co.id AND m.is_admin = 1 WHERE m.ticket_id = ? ORDER BY m.created_at ASC"); $stmt->execute([$ticket_id]); $messages = $stmt->fetchAll(); ?>