import React, { useState } from 'react';
import { Head, router } from '@inertiajs/react';
import AdminLayout from '@/Layouts/AdminLayout';
import {
CheckCircle,
XCircle,
Clock,
X,
AlertTriangle,
ShieldCheck,
Edit3,
History,
Sparkles
} from 'lucide-react';
import { Badge } from '@/components/ui/badge';
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
} from '@/components/ui/dialog';
export default function Verifications({ verifications, status, summary, history = [] }) {
const [selectedItem, setSelectedItem] = useState(null);
const [isDialogOpen, setIsDialogOpen] = useState(false);
// Verification form overrides
const [ocrOverrides, setOcrOverrides] = useState({});
const [isEditingOcr, setIsEditingOcr] = useState(false);
const [rejectionReason, setRejectionReason] = useState('');
const [showRejectionForm, setShowRejectionForm] = useState(false);
const activeList = verifications?.data || [];
const openReview = (item) => {
setSelectedItem(item);
setOcrOverrides(item.ocr_data || {});
setIsEditingOcr(false);
setShowRejectionForm(false);
setRejectionReason('');
setIsDialogOpen(true);
};
const handleVerifySubmit = (action) => {
router.post(`/admin/workers/${selectedItem.id}/verify`, {
action,
rejection_reason: action === 'reject' ? rejectionReason : null,
ocr_overrides: ocrOverrides
}, {
onSuccess: () => {
setIsDialogOpen(false);
}
});
};
return (
Verify workers, check passports, and override data inputs.
| Worker Name | Passport ID | Confidence Score | Warnings | Processed Date | Action |
|---|---|---|---|---|---|
|
{item.worker_name}
{item.nationality} • {item.document_type}
|
{item.passport_number} |
90 ? 'bg-emerald-500' :
item.confidence > 70 ? 'bg-blue-500' : 'bg-amber-500'
}`}
style={{ width: `${item.confidence}%` }}
/>
90 ? 'text-emerald-600' :
item.confidence > 70 ? 'text-blue-600' : 'text-amber-600'
}`}>{item.confidence}%
|
{item.warnings.length > 0 ? (
{item.warnings.map((w, idx) => (
{w}
))}
) : (
None
)}
|
{item.processed_at} | |
| No verification records found in this queue. | |||||