diff --git a/src/components/pages/uniformity/detail/UniformityDetail.tsx b/src/components/pages/uniformity/detail/UniformityDetail.tsx index 8cfaa8d4..8195fa71 100644 --- a/src/components/pages/uniformity/detail/UniformityDetail.tsx +++ b/src/components/pages/uniformity/detail/UniformityDetail.tsx @@ -90,8 +90,8 @@ const UniformityDetail: React.FC = ({ label: 'Kandang', }, { - id: 'file-name', - value: 'file-name', + id: 'documents-name', + value: 'documents-name', label: 'File Uniformity', }, { @@ -123,7 +123,7 @@ const UniformityDetail: React.FC = ({ 'lokasi-farm': info_umum.lokasi_farm, 'project-flock': info_umum.project_flock, kandang: info_umum.kandang, - 'file-name': info_umum.file_name, + 'documents-name': info_umum.documents_name, 'approval-status': statusValue, }; @@ -148,7 +148,7 @@ const UniformityDetail: React.FC = ({ return -; } - if (id === 'file-name') { + if (id === 'documents-name') { return (
{valueMap[id]} diff --git a/src/components/pages/uniformity/detail/UniformityDetailsPreview.tsx b/src/components/pages/uniformity/detail/UniformityDetailsPreview.tsx index e7f7067b..2c83ba00 100644 --- a/src/components/pages/uniformity/detail/UniformityDetailsPreview.tsx +++ b/src/components/pages/uniformity/detail/UniformityDetailsPreview.tsx @@ -214,7 +214,7 @@ const UniformityDetailsPreview = ({ {/* Header */} diff --git a/src/components/pages/uniformity/form/UniformityForm.schema.ts b/src/components/pages/uniformity/form/UniformityForm.schema.ts index 31e9d1bc..5463557a 100644 --- a/src/components/pages/uniformity/form/UniformityForm.schema.ts +++ b/src/components/pages/uniformity/form/UniformityForm.schema.ts @@ -20,16 +20,16 @@ type UniformityFormSchemaType = { label: string; } | null; kandang_id: number; - file: File | undefined; + documents: File | undefined; }; const FileSchema = Yup.mixed() - .test('fileSize', 'Ukuran file maksimal 2 MB', (value): boolean => { + .test('documentsSize', 'Ukuran file maksimal 2 MB', (value): boolean => { if (!value) return true; if (value instanceof File) return value.size <= 2 * 1024 * 1024; return false; }) - .test('fileType', 'Format file harus Excel', (value): boolean => { + .test('documentsType', 'Format file harus Excel', (value): boolean => { if (!value) return true; if (value instanceof File) { const allowedTypes = [ @@ -74,7 +74,7 @@ export const UniformityFormSchema: Yup.ObjectSchema = .min(1, 'Kandang wajib diisi!') .required('Kandang wajib diisi!') .typeError('Kandang wajib diisi!'), - file: FileSchema.required('File wajib diisi!'), + documents: FileSchema.required('File wajib diisi!'), }); export type UniformityFormValues = Yup.InferType; @@ -83,8 +83,8 @@ export type UniformityFormData = { date: string; week: number; project_flock_kandang_id: number; - file: File | null; - file_name: string; + documents: File | null; + documents_name: string; }; export const getUniformityFormInitialValues = ( @@ -115,6 +115,6 @@ export const getUniformityFormInitialValues = ( } : null, kandang_id: initialValues?.kandang?.id ?? 0, - file: undefined, + documents: undefined, }; }; diff --git a/src/components/pages/uniformity/form/UniformityForm.tsx b/src/components/pages/uniformity/form/UniformityForm.tsx index 9b04c3d0..48a84c70 100644 --- a/src/components/pages/uniformity/form/UniformityForm.tsx +++ b/src/components/pages/uniformity/form/UniformityForm.tsx @@ -246,15 +246,12 @@ const UniformityForm = ({ date: values.date, week: values.week, project_flock_kandang_id: projectFlockKandangId, - file: values.file as File, - file_name: (values.file as File).name, + documents: values.documents as File, + documents_name: (values.documents as File).name, }); const payload: VerifyUniformityPayload = { - date: values.date, - week: values.week, - project_flock_kandang_id: projectFlockKandangId, - file: values.file as File, + documents: values.documents as File, }; const res = await UniformityApi.verifyUniformity(payload); @@ -328,17 +325,17 @@ const UniformityForm = ({ const handleFileChange = useCallback( (e: React.ChangeEvent) => { - const file = e.target.files?.[0]; + const documents = e.target.files?.[0]; - formik.setFieldTouched('file', true); + formik.setFieldTouched('documents', true); - if (!file) { - formik.setFieldValue('file', undefined); + if (!documents) { + formik.setFieldValue('documents', undefined); return; } - if (file.size > 2 * 1024 * 1024) { - toast.error(`Ukuran file ${file.name} maksimal 2 MB!`); + if (documents.size > 2 * 1024 * 1024) { + toast.error(`Ukuran file ${documents.name} maksimal 2 MB!`); return; } @@ -348,12 +345,12 @@ const UniformityForm = ({ 'text/csv', ]; - if (!allowedTypes.includes(file.type)) { - toast.error(`Format file ${file.name} harus Excel atau CSV!`); + if (!allowedTypes.includes(documents.type)) { + toast.error(`Format file ${documents.name} harus Excel atau CSV!`); return; } - formik.setFieldValue('file', file); + formik.setFieldValue('documents', documents); }, [] ); @@ -366,7 +363,7 @@ const UniformityForm = ({ ); const handleRemoveFile = useCallback(() => { - formik.setFieldValue('file', undefined); + formik.setFieldValue('documents', undefined); if (fileInputRef.current) { fileInputRef.current.value = ''; } @@ -531,12 +528,14 @@ const UniformityForm = ({ htmlFor='file-upload-input' className={cn( "w-full text-sm font-normal leading-5 after:content-['*'] after:ml-0.5 after:text-red-500", - formik.touched.file && formik.errors.file && 'text-red-500' + formik.touched.documents && + formik.errors.documents && + 'text-red-500' )} > Upload File - {formik.values.file && !isNextStep ? ( + {formik.values.documents && !isNextStep ? ( - ) : !formik.values.file && !isNextStep ? ( + ) : !formik.values.documents && !isNextStep ? (
- {formik.values.file.name} + {formik.values.documents.name} ) : ( @@ -668,15 +667,15 @@ const UniformityForm = ({ ref={fileInputRef} type='file' id='file-upload-input' - name='file' + name='documents' accept='application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv' onChange={handleFileChange} className='hidden' /> - {formik.touched.file && formik.errors.file && ( + {formik.touched.documents && formik.errors.documents && (

- {formik.errors.file as string} + {formik.errors.documents as string}

)} diff --git a/src/components/pages/uniformity/form/UniformityResultForm.tsx b/src/components/pages/uniformity/form/UniformityResultForm.tsx index 67f0026f..776e8dbc 100644 --- a/src/components/pages/uniformity/form/UniformityResultForm.tsx +++ b/src/components/pages/uniformity/form/UniformityResultForm.tsx @@ -51,7 +51,7 @@ const UniformityResultForm = () => { }; const handleSubmit = async () => { - if (!uniformityFormData || !uniformityFormData.file) { + if (!uniformityFormData || !uniformityFormData.documents) { toast.error('Form data is missing. Please try again.'); return; } @@ -63,7 +63,7 @@ const UniformityResultForm = () => { date: uniformityFormData.date, week: uniformityFormData.week, project_flock_kandang_id: uniformityFormData.project_flock_kandang_id, - file: uniformityFormData.file, + documents: uniformityFormData.documents, }; const res = await UniformityApi.createUniformity(payload); @@ -236,7 +236,7 @@ const UniformityResultForm = () => { {/* Header */} diff --git a/src/services/api/uniformity.ts b/src/services/api/uniformity.ts index 73d979ca..0f1b8ad3 100644 --- a/src/services/api/uniformity.ts +++ b/src/services/api/uniformity.ts @@ -47,8 +47,8 @@ export class UniformityApiService extends BaseApiService< payload.project_flock_kandang_id.toString() ); - if (payload.file) { - formData.append('file', payload.file); + if (payload.documents) { + formData.append('documents', payload.documents); } return await this.create(formData as unknown as CreateUniformityPayload); @@ -58,15 +58,8 @@ export class UniformityApiService extends BaseApiService< payload: VerifyUniformityPayload ): Promise | undefined> { const formData = new FormData(); - formData.append('date', payload.date); - formData.append('week', payload.week.toString()); - formData.append( - 'project_flock_kandang_id', - payload.project_flock_kandang_id.toString() - ); - - if (payload.file) { - formData.append('file', payload.file); + if (payload.documents) { + formData.append('documents', payload.documents); } return await this.customRequest>( diff --git a/src/types/api/uniformity/uniformity.d.ts b/src/types/api/uniformity/uniformity.d.ts index 3af424ef..45291a28 100644 --- a/src/types/api/uniformity/uniformity.d.ts +++ b/src/types/api/uniformity/uniformity.d.ts @@ -34,7 +34,7 @@ export type UniformityInfoUmum = { lokasi_farm: string; project_flock: string; kandang: string; - file_name: string; + documents_name: string; }; export type UniformitySampling = { @@ -77,15 +77,12 @@ export type VerifyUniformityResponse = { export type CreateUniformityPayload = { date: string; project_flock_kandang_id: number; - file: File; + documents: File; week: number; }; export type VerifyUniformityPayload = { - date: string; - project_flock_kandang_id: number; - file: File; - week: number; + documents: File; }; // ==================== OTHER TYPES ====================