feat(FE-316): Add verifyUniformity and split payload types

This commit is contained in:
rstubryan
2025-12-27 19:09:03 +07:00
parent 5f68c05acc
commit ec8ae7561d
3 changed files with 36 additions and 20 deletions
@@ -227,20 +227,12 @@ const UniformityForm = ({
return; return;
} }
const formData = new FormData(); const payload: VerifyUniformityPayload = {
formData.append('date', values.date); project_flock_kandang_id: projectFlockKandangId,
formData.append( files: values.files as File,
'project_flock_kandang_id', };
projectFlockKandangId.toString()
);
if (values.files) { const res = await UniformityApi.verifyUniformity(payload);
formData.append('file', values.files);
}
const res = await UniformityApi.create(
formData as unknown as VerifyUniformityPayload
);
if (isResponseError(res)) { if (isResponseError(res)) {
setUniformityFormErrorMessage(res.message); setUniformityFormErrorMessage(res.message);
+24 -6
View File
@@ -3,12 +3,13 @@ import { BaseApiResponse } from '@/types/api/api-general';
import { import {
VerifyUniformityPayload, VerifyUniformityPayload,
Uniformity, Uniformity,
CreateUniformityPayload,
} from '@/types/api/uniformity/uniformity'; } from '@/types/api/uniformity/uniformity';
export class UniformityApiService extends BaseApiService< export class UniformityApiService extends BaseApiService<
Uniformity, Uniformity,
VerifyUniformityPayload, CreateUniformityPayload,
unknown VerifyUniformityPayload
> { > {
constructor(basePath: string) { constructor(basePath: string) {
super(basePath); super(basePath);
@@ -19,7 +20,7 @@ export class UniformityApiService extends BaseApiService<
} }
async createUniformity( async createUniformity(
payload: VerifyUniformityPayload payload: CreateUniformityPayload
): Promise<BaseApiResponse<Uniformity> | undefined> { ): Promise<BaseApiResponse<Uniformity> | undefined> {
const formData = new FormData(); const formData = new FormData();
formData.append('date', payload.date); formData.append('date', payload.date);
@@ -32,12 +33,29 @@ export class UniformityApiService extends BaseApiService<
formData.append('file', payload.files); formData.append('file', payload.files);
} }
return await this.create(formData as unknown as VerifyUniformityPayload); return await this.create(formData as unknown as CreateUniformityPayload);
}
async verifyUniformity(
payload: VerifyUniformityPayload
): Promise<BaseApiResponse<Uniformity> | undefined> {
const formData = new FormData();
formData.append(
'project_flock_kandang_id',
payload.project_flock_kandang_id.toString()
);
if (payload.files) {
formData.append('file', payload.files);
}
return await this.customRequest<BaseApiResponse<Uniformity>>('/verify', {
method: 'POST',
payload: formData as unknown as Record<string, unknown>,
});
} }
} }
// export const UniformityApi = new UniformityApiService('uniformity');
export const UniformityApi = new UniformityApiService( export const UniformityApi = new UniformityApiService(
'http://localhost:4010/api/uniformity' 'http://localhost:4010/api/uniformity'
); );
+7 -1
View File
@@ -10,10 +10,16 @@ export type Uniformity = BaseMetadata & {
week: number; week: number;
status: 'CREATED' | 'APPROVED' | 'REJECTED'; status: 'CREATED' | 'APPROVED' | 'REJECTED';
uniformity: number; uniformity: number;
date?: string;
}; };
export type VerifyUniformityPayload = { export type CreateUniformityPayload = {
date: string; date: string;
project_flock_kandang_id: number; project_flock_kandang_id: number;
files: File; files: File;
}; };
export type VerifyUniformityPayload = {
project_flock_kandang_id: number;
files: File;
};