This commit is contained in:
pradeepkumar
2026-01-25 00:21:17 +05:30
parent aca4cda831
commit 911ae85e20
2 changed files with 389 additions and 145 deletions

View File

@@ -68,6 +68,52 @@ export interface SaveFieldValuesResponse {
data: unknown[];
}
// Search parameters for public agent search
export interface SearchAgentsParams {
search?: string;
city?: string;
state?: string;
country?: string;
agentTypeId?: string;
isVerified?: boolean;
page?: number;
limit?: number;
sortBy?: 'createdAt' | 'averageRating' | 'totalReviews' | 'firstName';
sortOrder?: 'asc' | 'desc';
}
// Public agent listing response
export interface PublicAgentProfile {
id: string;
firstName: string;
lastName: string;
slug: string;
email: string | null;
phone: string | null;
bio: string | null;
avatar: string | null;
licenseNumber: string | null;
experience: number | null;
specializations: string[];
languages: string[];
serviceAreas: string[];
rating: number | null;
reviewCount: number;
isVerified: boolean;
isFeatured: boolean;
agentTypeId: string | null;
agentType: AgentType | null;
createdAt?: string;
}
export interface SearchAgentsResponse {
data: PublicAgentProfile[];
total: number;
page: number;
limit: number;
totalPages: number;
}
// Agents Service for Web
class AgentsService {
private basePath = '/agents';
@@ -113,6 +159,27 @@ class AgentsService {
const response = await api.get<ApiResponse<AgentType[]>>('/agent-types');
return response.data.data;
}
async searchAgents(params: SearchAgentsParams = {}): Promise<SearchAgentsResponse> {
const queryParams = new URLSearchParams();
if (params.search) queryParams.set('search', params.search);
if (params.city) queryParams.set('city', params.city);
if (params.state) queryParams.set('state', params.state);
if (params.country) queryParams.set('country', params.country);
if (params.agentTypeId) queryParams.set('agentTypeId', params.agentTypeId);
if (params.isVerified !== undefined) queryParams.set('isVerified', String(params.isVerified));
if (params.page) queryParams.set('page', String(params.page));
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);
const queryString = queryParams.toString();
const url = queryString ? `${this.basePath}?${queryString}` : this.basePath;
const response = await api.get<ApiResponse<SearchAgentsResponse>>(url);
return response.data.data;
}
}
export const agentsService = new AgentsService();