import React, { useState } from 'react';
import { Head, router } from '@inertiajs/react';
import AdminLayout from '@/Layouts/AdminLayout';
import {
Scale,
MessageSquare,
Download,
BadgeDollarSign,
AlertCircle,
CheckCircle,
FileText,
ArrowRight,
ArrowUpRight,
User,
ShieldCheck,
Send
} from 'lucide-react';
import { Badge } from '@/components/ui/badge';
export default function DisputesHub({ tickets }) {
const [selectedTicket, setSelectedTicket] = useState(tickets[0] || null);
// Notes / Resolution states
const [internalNote, setInternalNote] = useState('');
const [resolutionAction, setResolutionAction] = useState('refund_employer');
const [resolutionSummary, setResolutionSummary] = useState('');
const handleAddNote = (e) => {
e.preventDefault();
if (!internalNote.trim()) return;
router.post(`/admin/disputes/${selectedTicket.id}/add-note`, { note: internalNote }, {
onSuccess: () => {
if (selectedTicket) {
selectedTicket.admin_notes += "\n• " + internalNote;
}
setInternalNote('');
}
});
};
const handleResolve = (e) => {
e.preventDefault();
router.post(`/admin/disputes/${selectedTicket.id}/resolve`, {
resolution: resolutionSummary,
action_taken: resolutionAction
}, {
onSuccess: () => {
if (selectedTicket) {
selectedTicket.status = 'Resolved';
}
}
});
};
return (
Audit employer-worker chat history transcripts, review visa fee dispute receipts, and settle escrow refund transfers.
Official authenticated conversation audit log
{log.message}
No attachment proofs uploaded.
)}{selectedTicket.admin_notes}
Submit official dispute settlement outcome