Dealer_Onboard_Frontend/src/api/API.ts

215 lines
14 KiB
TypeScript

import client from './client';
import axios from 'axios';
export const API = {
// Auth routes
login: (data: any) => client.post('/auth/login', data),
logout: () => client.post('/auth/logout'),
getCurrentUser: () => client.get('/auth/me'),
// Master module routes
getRoles: () => client.get('/admin/roles'),
createRole: (data: any) => client.post('/admin/roles', data),
getPermissions: () => client.get('/admin/permissions'),
updateRole: (id: string, data: any) => client.put(`/admin/roles/${id}`, data),
getZones: () => client.get('/master/zones'),
createZone: (data: any) => client.post('/master/zones', data),
updateZone: (id: string, data: any) => client.put(`/master/zones/${id}`, data),
createRegion: (data: any) => client.post('/master/regions', data),
updateRegion: (id: string, data: any) => client.put(`/master/regions/${id}`, data),
getRegions: () => client.get('/master/regions'),
getOutlets: () => client.get('/master/outlets'),
getOutletByCode: (code: string) => client.get(`/master/outlets/code/${code}`),
getStates: (params?: any) => client.get('/master/states', typeof params === 'string' ? { zoneId: params } : params),
getDistricts: (params?: any) => client.get('/master/districts', typeof params === 'string' ? { stateId: params } : params),
getAreas: (params?: any) => client.get('/master/areas', params),
updateArea: (id: string, data: any) => client.put(`/master/areas/${id}`, data),
createArea: (data: any) => client.post('/master/areas', data),
getAreaManagers: () => client.get('/master/area-managers'),
getASMs: () => client.get('/master/asms'),
getZonalManagers: () => client.get('/master/zonal-managers'),
saveZonalManager: (data: any) => client.post('/master/zonal-managers', data),
getDDLeads: () => client.get('/master/dd-leads'),
saveDDLead: (data: any) => client.post('/master/dd-leads', data),
getManagersByRole: (params: any) => client.get('/master/managers', { params }),
// Onboarding
submitApplication: (data: any) => client.post('/onboarding/apply', data),
getApplications: () => client.get('/onboarding/applications'),
shortlistApplications: (data: any) => client.post('/onboarding/applications/shortlist', data),
getApplicationById: (id: string) => client.get(`/onboarding/applications/${id}`),
updateApplication: (id: string, data: any) => client.put(`/onboarding/applications/${id}`, data),
getLatestQuestionnaire: () => client.get('/questionnaire/latest'),
createQuestionnaireVersion: (data: any) => client.post('/questionnaire/version', data),
submitQuestionnaireResponse: (data: any) => client.post('/questionnaire/response', data),
getAllQuestionnaires: () => client.get('/onboarding/questionnaires'),
getQuestionnaireById: (id: string) => client.get(`/onboarding/questionnaires/${id}`),
assignArchitectureTeam: (applicationId: string, assignedTo: string) => client.post(`/onboarding/applications/${applicationId}/assign-architecture`, { assignedTo }),
updateArchitectureStatus: (applicationId: string, status: string, remarks?: string) => client.post(`/onboarding/applications/${applicationId}/architecture-status`, { status, remarks }),
generateDealerCodes: (applicationId: string) => client.post(`/onboarding/applications/${applicationId}/generate-codes`),
updateApplicationStatus: (id: string, data: any) => client.put(`/onboarding/applications/${id}/status`, data),
retriggerEvaluators: (id: string) => client.post(`/onboarding/applications/${id}/retrigger-evaluators`),
getSecurityDeposit: (applicationId: string) => client.get(`/loa/security-deposit/${applicationId}`),
updateSecurityDeposit: (data: any) => client.post('/loa/security-deposit', data),
// Documents
uploadDocument: (id: string, data: any) => client.post(`/onboarding/applications/${id}/documents`, data, {
headers: { 'Content-Type': 'multipart/form-data' }
}),
getDocuments: (id: string) => client.get(`/onboarding/applications/${id}/documents`),
getDocumentConfigMetadata: () => client.get('/onboarding/document-configs/metadata'),
getDocumentConfigs: (params?: any) => client.get('/onboarding/document-configs', params),
createDocumentConfig: (data: any) => client.post('/onboarding/document-configs', data),
updateDocumentConfig: (id: string, data: any) => client.put(`/onboarding/document-configs/${id}`, data),
deleteDocumentConfig: (id: string) => client.delete(`/onboarding/document-configs/${id}`),
// Public Questionnaire
getPublicQuestionnaire: (appId: string) => axios.get(`http://localhost:5000/api/questionnaire/public/${appId}`), // Direct axios to bypass interceptors if client has auth
submitPublicResponse: (data: any) => axios.post('http://localhost:5000/api/questionnaire/public/submit', data),
// Assessment & Interviews
getAiSummary: (appId: string) => client.get(`/assessment/ai-summary/${appId}`),
scheduleInterview: (data: any) => client.post('/assessment/interviews', data),
updateInterview: (id: string, data: any) => client.put(`/assessment/interviews/${id}`, data),
submitEvaluation: (id: string, data: any) => client.post(`/assessment/interviews/${id}/evaluation`, data),
submitKTMatrix: (data: any) => client.post('/assessment/kt-matrix', data),
submitLevel2Feedback: (data: any) => client.post('/assessment/level2-feedback', data),
getInterviews: (applicationId: string) => client.get(`/assessment/interviews/${applicationId}`),
updateRecommendation: (data: any) => client.post('/assessment/recommendation', data),
updateInterviewDecision: (data: any) => client.post('/assessment/decision', data),
submitStageDecision: (data: any) => client.post('/assessment/stage-decision', data),
getInterviewApprovalStatus: (interviewId: string) => client.get(`/assessment/interviews/${interviewId}/approval-status`),
getApprovalPolicies: () => client.get('/assessment/approval-policies'),
upsertApprovalPolicy: (stageCode: string, data: any) => client.put(`/assessment/approval-policies/${stageCode}`, data),
// Collaboration & Participants
getWorknotes: (requestId: string, requestType: string) => client.get('/collaboration/worknotes', { requestId, requestType }),
addWorknote: (data: any) => client.post('/collaboration/worknotes', data),
addParticipant: (data: any) => client.post('/collaboration/participants', data),
removeParticipant: (id: string) => client.delete(`/collaboration/participants/${id}`),
// User management routes
getUsers: (params?: any) => client.get('/admin/users', params),
createUser: (data: any) => client.post('/admin/users', data),
updateUser: (id: string, data: any) => client.put(`/admin/users/${id}`, data),
updateUserStatus: (id: string, data: any) => client.patch(`/admin/users/${id}/status`, data),
deleteUser: (id: string) => client.delete(`/admin/users/${id}`),
// Dealer & Outlets
getDealers: (params?: { onboarded?: string; activeOnly?: string }) => client.get('/dealer', { params }),
createDealer: (data: any) => client.post('/dealer', data),
getDealerById: (id: string) => client.get(`/dealer/${id}`),
updateDealer: (id: string, data: any) => client.put(`/dealer/${id}`, data),
getDealerDashboard: () => client.get('/dealer/dashboard'),
getDealerBankDetails: (dealerId: string) => client.get(`/dealer/${dealerId}/bank-details`),
saveBankDetail: (dealerId: string, data: any) => client.post(`/dealer/${dealerId}/bank-details`, data),
deleteBankDetail: (id: string) => client.delete(`/dealer/bank-details/${id}`),
// Email Templates
getEmailTemplates: () => client.get('/admin/email-templates'),
getEmailTemplate: (id: string) => client.get(`/admin/email-templates/${id}`),
createEmailTemplate: (data: any) => client.post('/admin/email-templates', data),
updateEmailTemplate: (id: string, data: any) => client.put(`/admin/email-templates/${id}`, data),
deleteEmailTemplate: (id: string) => client.delete(`/admin/email-templates/${id}`),
previewEmailTemplate: (data: any) => client.post('/admin/email-templates/preview', data),
// Audit Trail
getAuditLogs: (entityType: string, entityId: string, page: number = 1, limit: number = 50) =>
client.get('/audit/logs', { entityType, entityId, page, limit }),
getAuditSummary: (entityType: string, entityId: string) =>
client.get('/audit/summary', { entityType, entityId }),
// Prospective Login
sendOtp: (phone: string) => client.post('/prospective-login/send-otp', { phone }),
verifyOtp: (phone: string, otp: string) => client.post('/prospective-login/verify-otp', { phone, otp }),
// Resignation
getResignationById: (id: string) => client.get(`/resignation/${id}`),
uploadResignationDocument: (id: string, data: any) => client.post(`/resignation/${id}/documents`, data, {
headers: { 'Content-Type': 'multipart/form-data' }
}),
updateClearance: (id: string, data: any) => client.put(`/resignation/${id}/clearance`, data, {
headers: data instanceof FormData ? { 'Content-Type': 'multipart/form-data' } : {}
}),
updateResignationStatus: (id: string, data: any) => client.post(`/resignation/${id}/status`, data),
// Termination
getTerminationById: (id: string) => client.get(`/termination/${id}`),
uploadTerminationDocument: (id: string, data: any) => client.post(`/termination/${id}/documents`, data, {
headers: { 'Content-Type': 'multipart/form-data' }
}),
updateTerminationStatus: (id: string, data: any) => client.post(`/termination/${id}/status`, data),
issueSCN: (id: string, data: any) => client.post(`/termination/${id}/scn`, data),
uploadSCNResponse: (id: string, data: any) => client.post(`/termination/${id}/scn-response`, data, {
headers: { 'Content-Type': 'multipart/form-data' }
}),
finalizeTermination: (id: string, data: any) => client.post(`/termination/${id}/finalize`, data),
// Lifecycle Modules (Self-Service)
getResignations: (params?: any) => client.get('/resignation', params),
createResignation: (data: any) => client.post('/resignation', data),
approveResignation: (id: string, data?: any) => client.post(`/resignation/${id}/approve`, data),
rejectResignation: (id: string, data: any) => client.post(`/resignation/${id}/reject`, data),
getTerminations: () => client.get('/termination'),
createTermination: (data: any) => client.post('/termination', data),
updateTermination: (id: string, data: any) => client.post(`/termination/${id}/status`, data),
getOnboardingPayments: () => client.get('/settlement/onboarding'),
updatePayment: (id: string, data: any) => client.put(`/settlement/payments/${id}`, data),
getFnFSettlements: () => client.get('/settlement/fnf'),
getFnFSettlementById: (id: string) => client.get(`/settlement/fnf/${id}`),
calculateFnF: (id: string) => client.post(`/settlement/fnf/${id}/calculate`),
updateFnF: (id: string, data: any) => client.put(`/settlement/fnf/${id}`, data),
getSettlementDepartments: () => client.get('/settlement/departments'),
// Line items
addLineItem: (fnfId: string, data: any) => client.post(`/settlement/fnf/${fnfId}/line-items`, data),
updateFnFClearance: (fnfId: string, clearanceId: string, data: any) => client.put(`/settlement/fnf/${fnfId}/clearances/${clearanceId}`, data, {
headers: { 'Content-Type': 'multipart/form-data' }
}),
updateLineItem: (itemId: string, data: any) => client.put(`/settlement/fnf/line-items/${itemId}`, data),
deleteLineItem: (itemId: string) => client.delete(`/settlement/fnf/line-items/${itemId}`),
getRelocationRequests: () => client.get('/relocation'),
getRelocationRequestById: (id: string) => client.get(`/relocation/${id}`),
createRelocationRequest: (data: any) => client.post('/relocation', data),
updateRelocationRequest: (id: string, action: string, data?: any) => client.post(`/relocation/${id}/action`, { action, ...data }),
uploadRelocationDocument: (id: string, data: any) => client.post(`/relocation/${id}/documents`, data, {
headers: { 'Content-Type': 'multipart/form-data' }
}),
verifyRelocationDocument: (id: string, documentId: string) => client.post(`/relocation/${id}/documents/${documentId}/verify`),
rejectRelocationDocument: (id: string, documentId: string, data?: any) =>
client.post(`/relocation/${id}/documents/${documentId}/reject`, data || {}),
getConstitutionalChanges: () => client.get('/constitutional-change'),
getConstitutionalChangeMeta: () => client.get('/constitutional-change/meta'),
getConstitutionalChangeById: (id: string) => client.get(`/constitutional-change/${id}`),
createConstitutionalChange: (data: any) => client.post('/constitutional-change', data),
updateConstitutionalChange: (id: string, action: string, data?: any) => client.post(`/constitutional-change/${id}/action`, { action, ...data }),
uploadConstitutionalDocuments: (id: string, documents: any[]) => client.post(`/constitutional-change/${id}/documents`, { documents }),
// SLA
getSlaConfigs: () => client.get('/sla/configs'),
// System Configs
getSystemConfigs: (params?: any) => client.get('/master/system-configs', params),
saveSystemConfig: (data: any) => client.post('/master/system-configs', data),
// EOR Checklist
getEorChecklistForApplication: (applicationId: string) => client.get(`/eor/application/${applicationId}`),
getEorChecklistForRelocation: (relocationId: string) => client.get(`/eor/relocation/${relocationId}`),
updateEorChecklistItem: (checklistId: string, data: any) => client.post(`/eor/item/${checklistId}`, data),
submitEorAudit: (checklistId: string, data: any) => client.post(`/eor/audit/${checklistId}`, data),
// FDD module additional routes
submitFddReport: (data: any) => client.post('/fdd/report', data),
getFddAssignment: (applicationId: string) => client.get(`/fdd/${applicationId}`),
assignFddAgency: (data: any) => client.post('/fdd/assign', data),
flagNonResponsive: (data: any) => client.post('/fdd/flag', data),
};
export default API;