Centralized_Rreporting_System/src/modules/crm/services/crmAPI.ts

50 lines
1.2 KiB
TypeScript

import http from '@/services/http';
import type {
CrmLead,
CrmTask,
CrmContact,
CrmDeal,
CrmSearchParams,
CrmApiResponse,
CrmPaginatedResponse
} from '../types/CrmTypes';
// Available CRM resource types
export type CrmResourceType = 'leads' | 'tasks' | 'deals' | 'contacts';
// Base API endpoint
const CRM_BASE_URL = '/api/v1/integrations/data';
export const crmAPI = {
// Generic method to get CRM data by resource type
getCrmData: <T = any>(
resource: CrmResourceType,
params?: CrmSearchParams
) => {
const queryParams = {
provider: 'zoho',
service: 'crm',
resource,
page: 1,
limit: 20,
...params
};
return http.get<CrmApiResponse<CrmPaginatedResponse<T>>>(CRM_BASE_URL, queryParams);
},
// Specific resource methods for type safety
getLeads: (params?: CrmSearchParams) =>
crmAPI.getCrmData<CrmLead>('leads', params),
getTasks: (params?: CrmSearchParams) =>
crmAPI.getCrmData<CrmTask>('tasks', params),
getContacts: (params?: CrmSearchParams) =>
crmAPI.getCrmData<CrmContact>('contacts', params),
getDeals: (params?: CrmSearchParams) =>
crmAPI.getCrmData<CrmDeal>('deals', params),
};