"use client"; import { useEffect, useState } from "react"; interface Ticket { id: string; email: string; subject: string; description: string; status: string; priority: string; createdAt: string; familyName: string; } export default function AdminSupport() { const [tickets, setTickets] = useState([]); const [loading, setLoading] = useState(true); const [statusFilter, setStatusFilter] = useState("all"); const [selectedTicket, setSelectedTicket] = useState(null); const [replyMessage, setReplyMessage] = useState(""); useEffect(() => { fetchTickets(); }, [statusFilter]); const fetchTickets = async () => { try { const res = await fetch(`/api/admin/support?status=${statusFilter}`, { credentials: "include" }); const data = await res.json(); setTickets(data.tickets || []); } catch (err) { console.error("Failed to fetch tickets:", err); } setLoading(false); }; const updateStatus = async (ticketId: string, status: string) => { try { await fetch(`/api/admin/support`, { method: "PATCH", headers: { "Content-Type": "application/json" }, credentials: "include", body: JSON.stringify({ ticketId, status }), }); fetchTickets(); } catch (err) { console.error("Failed to update ticket:", err); } }; if (loading) { return
Loading...
; } return (

Support

{tickets.length} tickets

{/* Filters */}
{["all", "open", "in_progress", "resolved", "closed"].map((status) => ( ))}
{/* Tickets List */}
{tickets.map((ticket) => (
setSelectedTicket(ticket)} className={`p-4 rounded-xl cursor-pointer ${ selectedTicket?.id === ticket.id ? "bg-rose-500/20 border border-rose-500" : "bg-gray-800" }`} >
{ticket.priority} {ticket.status.replace("_", " ")}
{ticket.subject}
{ticket.email}
{ticket.createdAt?.slice(0, 10)}
))} {tickets.length === 0 && (
No tickets found
)}
{/* Ticket Detail */}
{selectedTicket ? (
{selectedTicket.subject}
{selectedTicket.email}
{selectedTicket.createdAt?.slice(0, 10)} ยท {selectedTicket.familyName}
{selectedTicket.description}
{selectedTicket.status === "open" && ( )} {selectedTicket.status === "in_progress" && ( )} {selectedTicket.status === "resolved" && ( )}
) : (
Select a ticket to view details
)}
); }