diff --git a/src/app/(user)/user/profiles/page.tsx b/src/app/(user)/user/profiles/page.tsx index db9610e..4ffaf73 100644 --- a/src/app/(user)/user/profiles/page.tsx +++ b/src/app/(user)/user/profiles/page.tsx @@ -326,6 +326,18 @@ function ProfilesPageContent() { params.city = location; } + // Add dynamic profile field filters + const activeFilters = Object.entries(filters).reduce((acc, [key, values]) => { + if (values && values.length > 0) { + acc[key] = values; + } + return acc; + }, {} as Record); + + if (Object.keys(activeFilters).length > 0) { + params.filters = activeFilters; + } + const response = await agentsService.searchAgents(params); setAgents(response.data); setTotalPages(response.totalPages); @@ -336,7 +348,7 @@ function ProfilesPageContent() { } finally { setLoading(false); } - }, [currentPage, searchQuery, activeTypeId, searchParams]); + }, [currentPage, searchQuery, activeTypeId, searchParams, filters]); // Fetch agents when filters change (only after initialization) useEffect(() => { diff --git a/src/services/agents.service.ts b/src/services/agents.service.ts index 81ce9e4..3960d3a 100644 --- a/src/services/agents.service.ts +++ b/src/services/agents.service.ts @@ -80,6 +80,7 @@ export interface SearchAgentsParams { limit?: number; sortBy?: 'createdAt' | 'averageRating' | 'totalReviews' | 'firstName'; sortOrder?: 'asc' | 'desc'; + filters?: Record; } // Public agent listing response @@ -173,6 +174,9 @@ class AgentsService { if (params.limit) queryParams.set('limit', String(params.limit)); if (params.sortBy) queryParams.set('sortBy', params.sortBy); if (params.sortOrder) queryParams.set('sortOrder', params.sortOrder); + if (params.filters && Object.keys(params.filters).length > 0) { + queryParams.set('filters', JSON.stringify(params.filters)); + } const queryString = queryParams.toString(); const url = queryString ? `${this.basePath}?${queryString}` : this.basePath;