diff --git a/src/app/(agent)/agent/dashboard/page.tsx b/src/app/(agent)/agent/dashboard/page.tsx index f345254..2413be4 100644 --- a/src/app/(agent)/agent/dashboard/page.tsx +++ b/src/app/(agent)/agent/dashboard/page.tsx @@ -19,6 +19,7 @@ import { import { agentsService, AgentProfile, FieldValueResponse } from '@/services/agents.service'; import { connectionRequestsService } from '@/services/connection-requests.service'; import { uploadService } from '@/services/upload.service'; +import { usersService } from '@/services/users.service'; import { testimonialsService, Testimonial } from '@/services/testimonials.service'; import { mapFieldValuesToExperience, mapFieldValuesToProfileCard, mapFieldValuesToAvailability, mapFieldValuesToSpecializationFields, mapFieldValuesToContactInfo, ExperienceData, ProfileCardData, AvailabilityData, SpecializationFieldsData, ContactInfoData } from '@/utils/profileDataMapper'; @@ -81,6 +82,7 @@ export default function AgentDashboard() { const [isTogglingAvailability, setIsTogglingAvailability] = useState(false); const [pendingRequestCount, setPendingRequestCount] = useState(0); const [testimonials, setTestimonials] = useState<{ id: string; text: string; author: string; role: string; rating: number }[]>([]); + const [isSubmittingVerification, setIsSubmittingVerification] = useState(false); const defaultImage = '/assets/demo_images/8f017153a7b4a239a4f0691234ef97dd55092282.jpg'; @@ -287,6 +289,32 @@ export default function AgentDashboard() { } }; + // Check if agent has uploaded documents + const hasDocuments = fieldValues.some( + (fv) => fv.sectionSlug === 'upload-documents' && fv.value && (Array.isArray(fv.value) ? fv.value.length > 0 : true) + ); + + const handleSubmitVerification = async () => { + setIsSubmittingVerification(true); + try { + await usersService.submitForVerification(); + // Update local state + if (agentProfile) { + setAgentProfile({ ...agentProfile, verificationStatus: 'PENDING_REVIEW', verificationNote: null } as AgentProfile); + } + } catch (err: any) { + const data = err?.response?.data; + if (data?.missingFields && Array.isArray(data.missingFields)) { + const fieldList = data.missingFields.map((f: any) => `• ${f.sectionName} → ${f.fieldName}`).join('\n'); + alert(`Please fill in all required fields:\n\n${fieldList}`); + } else { + alert(data?.message || 'Failed to submit for verification'); + } + } finally { + setIsSubmittingVerification(false); + } + }; + return (
{/* Verification Status Banner */} @@ -300,9 +328,18 @@ export default function AgentDashboard() {

Reason: {agentProfile.verificationNote}

)}

Please update your profile and documents, then resubmit for verification.

- - Update & Resubmit - +
+ + Edit Profile + + +
@@ -321,9 +358,18 @@ export default function AgentDashboard() { Info

Complete your profile and upload verification documents to get verified.

- - Complete Profile - +
+ + Complete Profile + + +
diff --git a/src/services/users.service.ts b/src/services/users.service.ts index 21d4f74..3376601 100644 --- a/src/services/users.service.ts +++ b/src/services/users.service.ts @@ -47,4 +47,12 @@ export const usersService = { const response = await api.patch>('/users/profile/me', data); return response.data.data; }, + + /** + * Submit or resubmit profile for verification (agent only) + */ + async submitForVerification(): Promise<{ message: string; status: string }> { + const response = await api.post>('/users/me/verification/submit'); + return response.data.data; + }, };