"use client"; import { useState, FormEvent } from 'react'; import { checkTicketStatus, SupportTicket } from '@/lib/api/supportService'; const TicketStatusCheck = () => { const [ticketNumber, setTicketNumber] = useState(''); const [isSearching, setIsSearching] = useState(false); const [searchError, setSearchError] = useState(null); const [ticket, setTicket] = useState(null); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setIsSearching(true); setSearchError(null); setTicket(null); try { const response = await checkTicketStatus(ticketNumber); setTicket(response); } catch (error: any) { if (error.message === 'Ticket not found') { setSearchError('Ticket not found. Please check your ticket number and try again.'); } else { setSearchError('An error occurred while searching. Please try again.'); } } finally { setIsSearching(false); } }; const formatDate = (dateString: string) => { const date = new Date(dateString); return date.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' }); }; return (

Check Ticket Status

Enter your ticket number to view the current status and details of your support request.

setTicketNumber(e.target.value)} placeholder="Enter your ticket number (e.g., TKT-20231015-ABCDE)" required className="form-control" />
{searchError && (
{searchError}
)} {ticket && (
{ticket.ticket_number}
{ticket.status_name}

{ticket.title}

Created: {formatDate(ticket.created_at)}
Last Updated: {formatDate(ticket.updated_at)}
{ticket.priority_name && (
Priority: {ticket.priority_name}
)} {ticket.category_name && (
Category: {ticket.category_name}
)}

Description

{ticket.description}

{ticket.messages && ticket.messages.length > 0 && (

Messages ({ticket.messages.length})

{ticket.messages .filter(msg => !msg.is_internal) .map((message, index) => (
{message.author_name || message.author_email}
{formatDate(message.created_at)}
{message.content}
))}
)} {ticket.activities && ticket.activities.length > 0 && (

Activity Timeline

{ticket.activities.slice(0, 5).map((activity, index) => (
{activity.description}
{formatDate(activity.created_at)}
))}
)}
)}
); }; export default TicketStatusCheck;