Files
dyolink/frontend/src/lib/api/cases.ts

60 lines
1.8 KiB
TypeScript
Raw Normal View History

import { apiClient } from './client';
import type {
CasesFilterOptions,
AssignableTaskStaff,
LabCaseDetail,
ListLabCasesParams,
PaginatedLabCases,
} from '@/types/cases';
export const casesApi = {
list: async (
params: ListLabCasesParams = {},
): Promise<{ success: boolean; data: PaginatedLabCases }> => {
const response = await apiClient.get('/cases', { params });
return response.data;
},
getOne: async (id: string): Promise<{ success: boolean; data: LabCaseDetail }> => {
const response = await apiClient.get(`/cases/${id}`);
return response.data;
},
listFilterOptions: async (): Promise<{ success: boolean; data: CasesFilterOptions }> => {
const response = await apiClient.get('/cases/filter-options');
return response.data;
},
listAssignableStaff: async (): Promise<{ success: boolean; data: AssignableTaskStaff[] }> => {
const response = await apiClient.get('/cases/assignable-staff');
return response.data;
},
assignTask: async (
caseId: string,
taskId: string,
assigneeUserId: string | null,
): Promise<{ success: boolean; data: LabCaseDetail }> => {
const response = await apiClient.patch(`/cases/${caseId}/tasks/${taskId}/assign`, {
assigneeUserId,
});
return response.data;
},
setCaseImportant: async (
caseId: string,
isImportant: boolean,
): Promise<{ success: boolean; data: LabCaseDetail }> => {
const response = await apiClient.patch(`/cases/${caseId}/important`, { isImportant });
return response.data;
},
getAttachmentFileBlob: async (caseId: string, attachmentId: string): Promise<Blob> => {
const response = await apiClient.get(`/cases/${caseId}/attachments/${attachmentId}/file`, {
responseType: 'blob',
timeout: 120_000,
});
return response.data;
},
};