>>>>>> 8b6d3d5fadadda310ef45ec03c879b900bff4cb025f45d1bb5d188761d53e043 class AdminChatController extends Controller { /** <<<<<<< HEAD * Page 1: List all customer chat tickets */ public function index() { $tickets = SupportTicket::with(['user', 'messages' => function($query) { $query->latest()->limit(1); }]) ->orderBy('updated_at', 'desc') ->get(); return view('admin.chat_support', compact('tickets')); } ======= * Page 1: List all active user chats */ public function index() { $tickets = SupportTicket::with('user') ->withCount([ 'messages as unread_count' => function ($q) { $q->where('sender_type', \App\Models\User::class) ->where('read_by_admin', false); } ]) ->orderBy('updated_at', 'desc') ->get(); return view('admin.chat_support', compact('tickets')); } >>>>>>> 8b6d3d5fadadda310ef45ec03c879b900bff4cb025f45d1bb5d188761d53e043 /** * Page 2: Open chat window for a specific user */ public function openChat($ticketId) <<<<<<< HEAD { $ticket = SupportTicket::with('user')->findOrFail($ticketId); $messages = ChatMessage::where('ticket_id', $ticketId) ->orderBy('created_at', 'asc') ->with('sender') ->get(); return view('admin.chat_window', compact('ticket', 'messages')); } /** * Admin sends a message to the user (FIXED - LIVE CHAT) ======= { $ticket = SupportTicket::with('user')->findOrFail($ticketId); // ✅ MARK USER MESSAGES AS READ FOR ADMIN ChatMessage::where('ticket_id', $ticketId) ->where('sender_type', \App\Models\User::class) ->where('read_by_admin', false) ->update(['read_by_admin' => true]); $messages = ChatMessage::where('ticket_id', $ticketId) ->orderBy('created_at', 'asc') ->with('sender') ->get(); return view('admin.chat_window', compact('ticket', 'messages')); } /** * Admin sends a message to the user >>>>>>> 8b6d3d5fadadda310ef45ec03c879b900bff4cb025f45d1bb5d188761d53e043 */ public function sendMessage(Request $request, $ticketId) { $request->validate([ 'message' => 'nullable|string', 'file' => 'nullable|file|max:20480', // 20 MB ]); $ticket = SupportTicket::findOrFail($ticketId); $admin = auth('admin')->user(); $data = [ 'ticket_id' => $ticketId, 'sender_id' => $admin->id, 'sender_type' => \App\Models\Admin::class, 'message' => $request->message, <<<<<<< HEAD ======= 'read_by_admin' => true, 'read_by_user' => false, >>>>>>> 8b6d3d5fadadda310ef45ec03c879b900bff4cb025f45d1bb5d188761d53e043 ]; // File Upload if ($request->hasFile('file')) { $path = $request->file('file')->store('chat', 'public'); $data['file_path'] = $path; $data['file_type'] = $request->file('file')->getMimeType(); } // Save message $message = ChatMessage::create($data); $message->load('sender'); <<<<<<< HEAD \Log::info("DEBUG: ChatController sendMessage called", [ ======= \Log::info("DEBUG: ChatController sendMessage called", [ >>>>>>> 8b6d3d5fadadda310ef45ec03c879b900bff4cb025f45d1bb5d188761d53e043 'ticket_id' => $ticketId, 'payload' => $request->all() ]); <<<<<<< HEAD // 🔥 LIVE CHAT - Queue bypass (100% working) broadcast(new NewChatMessage($message))->toOthers(); ======= // Broadcast real-time broadcast(new NewChatMessage($message)); \Log::info("DEBUG: ChatController sendMessage called 79", [ 'ticket_id' => $ticketId, 'payload' => $request->all() ]); >>>>>>> 8b6d3d5fadadda310ef45ec03c879b900bff4cb025f45d1bb5d188761d53e043 return response()->json([ 'success' => true, 'message' => $message ]); } }