import apiClient from '@/lib/api/client'; import { NumberingMetrics, ManualOverrideDto, VoidReplaceDto, CancelNumberDto } from '@/types/dto/numbering.dto'; /** A bulk-import record row */ export interface BulkImportRecord { documentNumber: string; projectId: number; sequenceNumber: number; [key: string]: unknown; } export const documentNumberingService = { // --- Admin Dashboard Metrics --- getMetrics: async (): Promise => { const response = await apiClient.get('/admin/document-numbering/metrics'); return response.data; }, // --- Admin Tools --- manualOverride: async (dto: ManualOverrideDto): Promise => { await apiClient.post('/admin/document-numbering/manual-override', dto); }, voidAndReplace: async (dto: VoidReplaceDto): Promise<{ documentNumber: string }> => { const response = await apiClient.post('/admin/document-numbering/void-and-replace', dto); return response.data; }, cancelNumber: async (dto: CancelNumberDto): Promise => { await apiClient.post('/admin/document-numbering/cancel', dto); }, bulkImport: async (data: FormData | BulkImportRecord[]): Promise<{ imported: number; errors: string[] }> => { const isFormData = data instanceof FormData; const config = isFormData ? { headers: { 'Content-Type': 'multipart/form-data' } } : {}; const response = await apiClient.post('/admin/document-numbering/bulk-import', data, config); return response.data; }, // --- Audit Logs --- getAuditLogs: async () => { // NOTE: endpoint might be merged with metrics or separate // Currently controller has getMetrics returning audit logs too. // But if we want separate pagination later: // return apiClient.get("/admin/document-numbering/audit", { params }); return []; }, };