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 }) {
const [selectedItem, setSelectedItem] = useState(null);
const [isDialogOpen, setIsDialogOpen] = useState(false);
// Vetting form overrides
const [ocrOverrides, setOcrOverrides] = useState({});
const [isEditingOcr, setIsEditingOcr] = useState(false);
const [rejectionReason, setRejectionReason] = useState('');
const [showRejectionForm, setShowRejectionForm] = useState(false);
// Local queue of workers to verify
const localQueue = [
{
id: 101,
worker_name: 'Fatima Zahra',
nationality: 'Morocco',
passport_number: 'MA9823471',
processed_at: '2026-05-23 14:15',
status: 'approved',
confidence: 98,
verification_method: 'Auto',
document_type: 'Passport',
warnings: [],
ocr_data: {
'Name': 'Fatima Zahra',
'DOB': '1992-08-14',
'Nationality': 'Morocco',
'Passport No.': 'MA9823471',
'Expiry': '2030-11-20',
}
},
{
id: 103,
worker_name: 'Amina Diop',
nationality: 'Senegal',
passport_number: 'SN8765432',
processed_at: '2026-05-23 11:30',
status: 'flagged',
confidence: 58,
verification_method: 'Auto',
document_type: 'Passport',
warnings: ['Blurry text region', 'Signature discrepancy flagged'],
ocr_data: {
'Name': 'Amina Diop',
'DOB': '1994-12-01',
'Nationality': 'Senegal',
'Passport No.': 'SN8765432',
'Expiry': '2031-08-10',
}
},
{
id: 104,
worker_name: 'Siti Aminah',
nationality: 'Indonesia',
passport_number: 'B76543210',
processed_at: '2026-05-22 16:40',
status: 'flagged',
confidence: 62,
verification_method: 'Auto',
document_type: 'Visa scan details',
warnings: ['Document expiration alert (Expires in 5 days)'],
ocr_data: {
'Name': 'Siti Aminah',
'DOB': '1988-03-25',
'Nationality': 'Indonesia',
'Passport No.': 'B76543210',
'Expiry': '2026-05-28',
}
}
];
const activeList = localQueue.filter(item => {
if (status === 'approved') return item.status === 'approved';
if (status === 'rejected') return item.status === 'flagged';
return true;
});
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} |