Files
lcbp3/frontend/lib/services/document-numbering.service.ts
T
admin 11984bfa29
CI Pipeline / build (push) Failing after 12m41s
Build and Deploy / deploy (push) Failing after 2m44s
260322:1648 Correct Coresspondence / Doing RFA / Correct CI
2026-03-22 16:48:12 +07:00

49 lines
1.8 KiB
TypeScript

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<NumberingMetrics> => {
const response = await apiClient.get('/admin/document-numbering/metrics');
return response.data;
},
// --- Admin Tools ---
manualOverride: async (dto: ManualOverrideDto): Promise<void> => {
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<void> => {
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 [];
},
};