import React, { useState, useEffect } from 'react'; const VerificationQueue = ({ showToast, autoSelectPending }) => { const [queue, setQueue] = useState([]); const [selectedDoc, setSelectedDoc] = useState(null); const fetchPendingVerifications = async () => { try { const res = await fetch(`/api/users`); if (res.ok) { const users = await res.json(); const pendingDrivers = users.filter(u => u.role === 'Pool Host' && u.has_vehicle_pass === 0); setQueue(pendingDrivers.map(u => ({ id: `V-${u.id}`, db_id: u.id, name: u.name, type: 'Vehicle Pass', status: 'Pending', time: new Date(u.created_at).toLocaleDateString(), vehicle_no: u.vehicle_no, vehicle_make: u.vehicle_make, vehicle_model: u.vehicle_model, emp_id: u.emp_id, confidence: 'Manual' }))); } } catch (err) { console.error(err); if (showToast) showToast('Failed to load verification queue.', 'danger'); } }; useEffect(() => { fetchPendingVerifications(); }, []); useEffect(() => { if (autoSelectPending && queue.length > 0) { const firstPending = queue.find(item => item.status === 'Pending'); if (firstPending) { setSelectedDoc(firstPending); } } }, [autoSelectPending, queue.length]); const handleAction = async (db_id, action) => { if (action === 'approve') { try { const res = await fetch(`/api/users/${db_id}/verify`, { method: 'POST' }); if (res.ok) { if (showToast) showToast(`User successfully verified.`, 'success'); fetchPendingVerifications(); setSelectedDoc(null); } else { if (showToast) showToast(`Failed to verify user.`, 'danger'); } } catch (err) { if (showToast) showToast(`Network error validating user.`, 'danger'); } } else { setQueue(queue.filter(q => q.db_id !== db_id)); setSelectedDoc(null); if (showToast) showToast(`Verification rejected.`, 'danger'); } }; const pendingCount = queue.filter(q => q.status === 'Pending').length; return (
| Req ID | Employee Name | Doc Type | Vehicle No | Status | Action |
|---|---|---|---|---|---|
| {item.id} | {item.name} | {item.type} | {item.vehicle_no || 'N/A'} | {item.status === 'Pending' ? `Waiting` : item.status} |