import { apiClient } from '@/lib/api-client'; import type { AssignLeadResult, CreateLeadFollowupInput, CreateLeadInput, LeadDetailResponse, LeadListFilters, LeadListResponse, LeadMutationSuccessResponse, UpdateLeadInput } from './types'; export async function getLeads(filters: LeadListFilters): Promise { const searchParams = new URLSearchParams(); if (filters.page) searchParams.set('page', String(filters.page)); if (filters.limit) searchParams.set('limit', String(filters.limit)); if (filters.search) searchParams.set('search', filters.search); if (filters.branchId) searchParams.set('branchId', filters.branchId); if (filters.customerId) searchParams.set('customerId', filters.customerId); if (filters.status) searchParams.set('status', filters.status); if (filters.awarenessId) searchParams.set('awarenessId', filters.awarenessId); if (filters.followupStatus) searchParams.set('followupStatus', filters.followupStatus); if (filters.outcome) searchParams.set('outcome', filters.outcome); if (filters.ownerMarketingUserId) { searchParams.set('ownerMarketingUserId', filters.ownerMarketingUserId); } if (filters.sort) searchParams.set('sort', filters.sort); const query = searchParams.toString(); return apiClient(`/crm/leads${query ? `?${query}` : ''}`); } export async function getLeadById(id: string): Promise { return apiClient(`/crm/leads/${id}`); } export async function createLead(data: CreateLeadInput): Promise { return apiClient('/crm/leads', { method: 'POST', body: JSON.stringify(data) }); } export async function updateLead( id: string, data: UpdateLeadInput ): Promise { return apiClient(`/crm/leads/${id}`, { method: 'PATCH', body: JSON.stringify(data) }); } export async function deleteLead(id: string): Promise { return apiClient(`/crm/leads/${id}`, { method: 'DELETE' }); } export async function createLeadFollowup( leadId: string, data: CreateLeadFollowupInput ): Promise { return apiClient(`/crm/leads/${leadId}/followups`, { method: 'POST', body: JSON.stringify(data) }); } export async function assignLead( leadId: string, data: { salesOwnerId: string; assignmentRemark?: string | null } ): Promise { return apiClient(`/crm/leads/${leadId}/assign`, { method: 'POST', body: JSON.stringify(data) }); }