180 lines
11 KiB
TypeScript
180 lines
11 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'),
|
|
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),
|
|
|
|
|
|
// 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}`),
|
|
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`),
|
|
|
|
// 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: () => client.get('/dealer'),
|
|
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'),
|
|
|
|
// 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}`),
|
|
updateClearance: (id: string, data: any) => client.post(`/resignation/${id}/clearance`, data),
|
|
updateResignationStatus: (id: string, data: any) => client.post(`/resignation/${id}/status`, data),
|
|
|
|
// Termination
|
|
getTerminationById: (id: string) => client.get(`/termination/${id}`),
|
|
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),
|
|
|
|
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),
|
|
|
|
// Line items
|
|
addLineItem: (fnfId: string, data: any) => client.post(`/settlement/fnf/${fnfId}/line-items`, 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`),
|
|
|
|
getConstitutionalChanges: () => client.get('/constitutional-change'),
|
|
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 }),
|
|
|
|
// 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),
|
|
};
|
|
|
|
export default API;
|