import React, { useState } from 'react'; import { Head, Link, useForm } from '@inertiajs/react'; import AdminLayout from '@/Layouts/AdminLayout'; import { ArrowLeft, Clock, CheckCircle, AlertCircle, Send, Terminal, User, Mail, LifeBuoy, Shield, Sparkles, Loader2 } from 'lucide-react'; import axios from 'axios'; import { toast } from 'sonner'; export default function Show({ ticket, replies }) { const replyForm = useForm({ message: '', is_developer_response: false, close_ticket: false, }); const statusForm = useForm({ status: ticket.status, }); const handleReplySubmit = (e) => { e.preventDefault(); replyForm.post(`/admin/tickets/${ticket.id}/reply`, { onSuccess: () => { replyForm.reset('message', 'close_ticket'); toast.success('Reply posted successfully.'); } }); }; const handleStatusChange = (newStatus) => { statusForm.setData('status', newStatus); statusForm.post(`/admin/tickets/${ticket.id}/status`, { onSuccess: () => { toast.success('Ticket status updated successfully.'); } }); }; const getStatusColor = (status) => { switch (status) { case 'open': return 'bg-blue-50 text-blue-700 border-blue-200'; case 'in_progress': return 'bg-amber-50 text-amber-700 border-amber-200'; case 'resolved': return 'bg-emerald-50 text-emerald-700 border-emerald-200'; case 'closed': return 'bg-slate-100 text-slate-600 border-slate-200'; default: return 'bg-slate-50 text-slate-600'; } }; return (
{/* Back button */} Back to Support Tickets
{/* Left Pane: Ticket details and Replies (8 Cols) */}
{/* Ticket Card */}
{ticket.ticket_number} {ticket.priority} Priority

{ticket.subject}

{/* Quick status dropdown */}
Status:
Original Ticket Message
{ticket.description}
{/* Replies Thread */}

Discussion History ({replies.length})

{replies.map((reply) => { const isDev = reply.is_developer_response; const isAdmin = reply.is_admin; return (
{isDev ? (
) : (
{reply.sender_name.charAt(0)}
)} {reply.sender_name} {isDev && '(Senior Software Developer)'}
{reply.created_at}
{reply.message}
); })} {replies.length === 0 && (
No messages posted yet.
)}
{/* Reply Form */} {ticket.status !== 'closed' ? (

Post Reply

Respond directly to the customer as admin or software developer.