import { useState, useEffect } from 'react'; import { Upload, CheckCircle, AlertCircle, Loader2, FileCheck } from 'lucide-react'; import api from '../api/api'; const VerificationPanel = ({ photographerId }) => { const [verification, setVerification] = useState(null); const [loading, setLoading] = useState(true); const [uploadingID, setUploadingID] = useState(false); const [uploadingPortfolio, setUploadingPortfolio] = useState(false); useEffect(() => { fetchVerificationStatus(); }, []); const fetchVerificationStatus = async () => { try { const res = await api.get(`/verification/status/${photographerId}`); setVerification(res.data); } catch (err) { console.error('Failed to load verification status:', err); } finally { setLoading(false); } }; const handleIDUpload = async (e) => { const file = e.target.files?.[0]; if (!file) return; // In real app, upload to Cloudinary or similar setUploadingID(true); try { // Mock upload - in production use FormData with multipart const idUrl = URL.createObjectURL(file); const res = await api.post('/verification/submit', { idDocumentUrl: idUrl, }); setVerification(res.data); alert('ID uploaded successfully!'); } catch (err) { alert('Failed to upload ID'); } finally { setUploadingID(false); } }; const handlePortfolioUpload = async (e) => { const files = e.target.files; if (!files || files.length === 0) return; setUploadingPortfolio(true); try { const portfolioUrls = Array.from(files).map(file => URL.createObjectURL(file)); const res = await api.post('/verification/submit', { portfolioUrls, }); setVerification(res.data); alert(`${files.length} portfolio images uploaded!`); } catch (err) { alert('Failed to upload portfolio images'); } finally { setUploadingPortfolio(false); } }; if (loading) { return (
); } const statusColor = { verified: 'green', pending: 'amber', rejected: 'red', not_started: 'gray', }; const statusIcon = { verified: , pending: , rejected: , not_started: , }; const status = verification?.status || 'not_started'; const color = statusColor[status]; return (

📋 Photographer Verification

{/* Status Card */}
{statusIcon[status]}

Status: {status.replace('_', ' ')}

{verification?.submittedAt && (

Submitted: {new Date(verification.submittedAt).toLocaleDateString()}

)} {verification?.verifiedAt && (

Verified: {new Date(verification.verifiedAt).toLocaleDateString()}

)}
{/* ID Verification Section */}

Step 1: ID Verification

{verification?.idDocument ? (
ID Document Verified ✓
{verification?.idVerifiedAt && (

Verified on {new Date(verification.idVerifiedAt).toLocaleDateString()}

)}
) : (

Upload a clear copy of your government-issued ID (Aadhar, PAN, Passport, etc.)

{uploadingID &&

Uploading...

}
)}
{/* Portfolio Verification Section */}

Step 2: Portfolio Verification

{verification?.portfolioSamples?.length > 0 ? (

✓ {verification.portfolioSamples.length} portfolio images uploaded

{verification.portfolioSamples.map((sample, idx) => (
{`Portfolio
))}
) : (

Upload 3-5 of your best portfolio samples to showcase your work quality.

{uploadingPortfolio &&

Uploading...

}
)}
{/* Admin Notes */} {verification?.adminNotes && (

Admin Notes

{verification.adminNotes}

)} {/* Rejection Info */} {status === 'rejected' && verification?.rejectionReason && (

Rejection Reason

{verification.rejectionReason}

{verification?.resubmissionAllowed && ( )}
)}
); }; export default VerificationPanel;