feat: complete V1 phases 0-7
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
import type {
|
||||
AcceptServiceApplicationRequest,
|
||||
AcceptServiceApplicationResponse,
|
||||
AssigneeOption,
|
||||
BeneficiaryDetailResponse,
|
||||
BeneficiaryTagOption,
|
||||
ConfirmUploadResponse,
|
||||
CompleteServiceCaseRequest,
|
||||
CompleteServiceCaseResponse,
|
||||
CreateServiceRecordRequest,
|
||||
CreateUploadIntentRequest,
|
||||
CreateUploadIntentResponse,
|
||||
DownloadUrlResponse,
|
||||
PaginatedBeneficiariesResponse,
|
||||
PaginatedServiceCasesResponse,
|
||||
ReplaceCaseAssigneesRequest,
|
||||
ServiceCaseDetailResponse,
|
||||
ServiceCategory,
|
||||
ServiceCaseStatus,
|
||||
ServiceRecordResponse,
|
||||
TransitionServiceApplicationRequest,
|
||||
UpdateBeneficiaryRequest,
|
||||
UpdateServiceRecordRequest,
|
||||
} from '@lehuo/contracts';
|
||||
|
||||
import { apiRequest } from './api-client';
|
||||
|
||||
function queryString(values: Record<string, string | number | boolean | undefined>): string {
|
||||
const params = new URLSearchParams();
|
||||
Object.entries(values).forEach(([key, value]) => {
|
||||
if (value !== undefined && value !== '') params.set(key, String(value));
|
||||
});
|
||||
return params.toString();
|
||||
}
|
||||
|
||||
export function transitionServiceApplication(
|
||||
publicId: string,
|
||||
input: TransitionServiceApplicationRequest,
|
||||
): Promise<{ status: string }> {
|
||||
return apiRequest(
|
||||
`/api/v1/admin/service-applications/${encodeURIComponent(publicId)}/transition`,
|
||||
{
|
||||
method: 'POST',
|
||||
body: JSON.stringify(input),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export function acceptServiceApplication(
|
||||
publicId: string,
|
||||
input: AcceptServiceApplicationRequest,
|
||||
): Promise<AcceptServiceApplicationResponse> {
|
||||
return apiRequest(`/api/v1/admin/service-applications/${encodeURIComponent(publicId)}/accept`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
}
|
||||
|
||||
export function fetchBeneficiaryTags(): Promise<BeneficiaryTagOption[]> {
|
||||
return apiRequest('/api/v1/admin/beneficiaries/tags');
|
||||
}
|
||||
|
||||
export function fetchBeneficiaries(query: {
|
||||
page: number;
|
||||
pageSize: number;
|
||||
primaryCategory?: ServiceCategory;
|
||||
status?: string;
|
||||
keyCareFlag?: boolean;
|
||||
}): Promise<PaginatedBeneficiariesResponse> {
|
||||
return apiRequest(`/api/v1/admin/beneficiaries?${queryString(query)}`);
|
||||
}
|
||||
|
||||
export function fetchBeneficiary(publicId: string): Promise<BeneficiaryDetailResponse> {
|
||||
return apiRequest(`/api/v1/admin/beneficiaries/${encodeURIComponent(publicId)}`);
|
||||
}
|
||||
|
||||
export function updateBeneficiary(
|
||||
publicId: string,
|
||||
input: UpdateBeneficiaryRequest,
|
||||
): Promise<BeneficiaryDetailResponse> {
|
||||
return apiRequest(`/api/v1/admin/beneficiaries/${encodeURIComponent(publicId)}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
}
|
||||
|
||||
export function fetchAssigneeOptions(): Promise<AssigneeOption[]> {
|
||||
return apiRequest('/api/v1/admin/service-cases/assignee-options');
|
||||
}
|
||||
|
||||
export function fetchServiceCases(query: {
|
||||
page: number;
|
||||
pageSize: number;
|
||||
status?: ServiceCaseStatus;
|
||||
category?: ServiceCategory;
|
||||
caseNo?: string;
|
||||
}): Promise<PaginatedServiceCasesResponse> {
|
||||
return apiRequest(`/api/v1/admin/service-cases?${queryString(query)}`);
|
||||
}
|
||||
|
||||
export function fetchServiceCase(publicId: string): Promise<ServiceCaseDetailResponse> {
|
||||
return apiRequest(`/api/v1/admin/service-cases/${encodeURIComponent(publicId)}`);
|
||||
}
|
||||
|
||||
export function startServiceCase(publicId: string): Promise<ServiceCaseDetailResponse> {
|
||||
return apiRequest(`/api/v1/admin/service-cases/${encodeURIComponent(publicId)}/start`, {
|
||||
method: 'POST',
|
||||
body: '{}',
|
||||
});
|
||||
}
|
||||
|
||||
export function completeServiceCase(
|
||||
publicId: string,
|
||||
input: CompleteServiceCaseRequest,
|
||||
): Promise<CompleteServiceCaseResponse> {
|
||||
return apiRequest(`/api/v1/admin/service-cases/${encodeURIComponent(publicId)}/complete`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
}
|
||||
|
||||
export function replaceCaseAssignees(
|
||||
publicId: string,
|
||||
input: ReplaceCaseAssigneesRequest,
|
||||
): Promise<ServiceCaseDetailResponse> {
|
||||
return apiRequest(`/api/v1/admin/service-cases/${encodeURIComponent(publicId)}/assignees`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
}
|
||||
|
||||
export function createServiceRecord(
|
||||
publicId: string,
|
||||
input: CreateServiceRecordRequest,
|
||||
): Promise<ServiceRecordResponse> {
|
||||
return apiRequest(`/api/v1/admin/service-cases/${encodeURIComponent(publicId)}/records`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
}
|
||||
|
||||
export function updateServiceRecord(
|
||||
casePublicId: string,
|
||||
recordPublicId: string,
|
||||
input: UpdateServiceRecordRequest,
|
||||
): Promise<ServiceRecordResponse> {
|
||||
return apiRequest(
|
||||
`/api/v1/admin/service-cases/${encodeURIComponent(casePublicId)}/records/${encodeURIComponent(recordPublicId)}`,
|
||||
{ method: 'PATCH', body: JSON.stringify(input) },
|
||||
);
|
||||
}
|
||||
|
||||
export function createUploadIntent(
|
||||
casePublicId: string,
|
||||
input: CreateUploadIntentRequest,
|
||||
): Promise<CreateUploadIntentResponse> {
|
||||
return apiRequest(
|
||||
`/api/v1/service-cases/${encodeURIComponent(casePublicId)}/files/upload-intents`,
|
||||
{ method: 'POST', body: JSON.stringify(input) },
|
||||
);
|
||||
}
|
||||
|
||||
export function confirmUpload(publicId: string): Promise<ConfirmUploadResponse> {
|
||||
return apiRequest(`/api/v1/files/${encodeURIComponent(publicId)}/confirm`, {
|
||||
method: 'POST',
|
||||
body: '{}',
|
||||
});
|
||||
}
|
||||
|
||||
export function fetchDownloadUrl(publicId: string): Promise<DownloadUrlResponse> {
|
||||
return apiRequest(`/api/v1/files/${encodeURIComponent(publicId)}/download-url`);
|
||||
}
|
||||
Reference in New Issue
Block a user