diff --git a/src/components/pages/flock/recording/form/RecordingForm.schema.ts b/src/components/pages/flock/recording/form/RecordingForm.schema.ts index 394b08b0..319482e7 100644 --- a/src/components/pages/flock/recording/form/RecordingForm.schema.ts +++ b/src/components/pages/flock/recording/form/RecordingForm.schema.ts @@ -7,17 +7,41 @@ export const RecordingFormSchema = Yup.object({ value: Yup.number().min(1).required(), label: Yup.string().required(), }).nullable(), - flock_id: Yup.number().required('Flock wajib diisi!'), + flock_id: Yup.number() + .default(0) + .typeError('Flock wajib diisi!') + .test( + 'is-valid-flock', + 'Flock wajib diisi!', + (value) => value !== undefined && value !== null && value > 0 + ) + .required('Flock wajib diisi!'), location: Yup.object({ value: Yup.number().min(1).required(), label: Yup.string().required(), }).nullable(), - location_id: Yup.number().required('Lokasi wajib diisi!'), + location_id: Yup.number() + .default(0) + .typeError('Lokasi wajib diisi!') + .test( + 'is-valid-location', + 'Lokasi wajib diisi!', + (value) => value !== undefined && value !== null && value > 0 + ) + .required('Lokasi wajib diisi!'), coop: Yup.object({ value: Yup.number().min(1).required(), label: Yup.string().required(), }).nullable(), - coop_id: Yup.number().required('Kandang wajib diisi!'), + coop_id: Yup.number() + .default(0) + .typeError('Kandang wajib diisi!') + .test( + 'is-valid-coop', + 'Kandang wajib diisi!', + (value) => value !== undefined && value !== null && value > 0 + ) + .required('Kandang wajib diisi!'), recording_date: Yup.date() .required('Tanggal recording wajib diisi') .typeError('Format tanggal tidak valid'), @@ -27,10 +51,12 @@ export const RecordingFormSchema = Yup.object({ feed_name: Yup.string().required('Nama pakan wajib diisi!'), feed_qty: Yup.number() .required('Qty pakan wajib diisi!') - .min(1, 'Qty minimal 1!'), + .min(1, 'Qty minimal 1!') + .typeError('Qty pakan wajib diisi!'), feed_stock: Yup.number() .required('Stock pakan wajib diisi!') - .min(0, 'Stock minimal 0!'), + .min(1, 'Stock minimal 1!') + .typeError('Stock pakan wajib diisi!'), }) ) .min(1, 'Minimal harus ada 1 data pakan!') @@ -57,10 +83,12 @@ export const RecordingFormSchema = Yup.object({ vaccine_name: Yup.string().required('Nama vaksin wajib diisi!'), total_stock: Yup.number() .required('Total stock wajib diisi!') - .min(0, 'Total stock minimal 0!'), + .min(1, 'Total stock minimal 1!') + .typeError('Total stock wajib diisi!'), used_stock: Yup.number() .required('Jumlah stock wajib diisi!') - .min(0, 'Jumlah stock minimal 0!'), + .min(1, 'Jumlah stock minimal 1!') + .typeError('Jumlah stock wajib diisi!'), }) ) .min(1, 'Minimal harus ada 1 data vaksinasi!') diff --git a/src/components/pages/flock/recording/form/RecordingForm.tsx b/src/components/pages/flock/recording/form/RecordingForm.tsx index 8d145ca8..228683fa 100644 --- a/src/components/pages/flock/recording/form/RecordingForm.tsx +++ b/src/components/pages/flock/recording/form/RecordingForm.tsx @@ -147,37 +147,19 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { const locationChangeHandler = (val: OptionType | OptionType[] | null) => { const locationValue = (val as OptionType)?.value; - formik.setFieldValue('location', val); - formik.setFieldValue('location_id', locationValue || 0); + formik.setFieldValue('location', val, false); + formik.setFieldValue('location_id', locationValue || 0, false); - if (locationValue) { - formik.setFieldTouched('location', true); - formik.setFieldTouched('location_id', true); - } else { - formik.setFieldTouched('location', false); - formik.setFieldTouched('location_id', false); - } - - formik.setFieldValue('coop', null); - formik.setFieldValue('coop_id', 0); - formik.setFieldTouched('coop', false); - formik.setFieldTouched('coop_id', false); + formik.setFieldValue('coop', null, false); + formik.setFieldValue('coop_id', 0, false); setCoopSelectInputValue(''); }; const coopChangeHandler = (val: OptionType | OptionType[] | null) => { const coopValue = (val as OptionType)?.value; - formik.setFieldValue('coop', val); - formik.setFieldValue('coop_id', coopValue || 0); - - if (coopValue) { - formik.setFieldTouched('coop', true); - formik.setFieldTouched('coop_id', true); - } else { - formik.setFieldTouched('coop', false); - formik.setFieldTouched('coop_id', false); - } + formik.setFieldValue('coop', val, false); + formik.setFieldValue('coop_id', coopValue || 0, false); }; const isRepeaterInputError = ( @@ -224,16 +206,8 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { const flockChangeHandler = (val: OptionType | OptionType[] | null) => { const flockValue = (val as OptionType)?.value; - formik.setFieldValue('flock', val); - formik.setFieldValue('flock_id', flockValue || 0); - - if (flockValue) { - formik.setFieldTouched('flock', true); - formik.setFieldTouched('flock_id', true); - } else { - formik.setFieldTouched('flock', false); - formik.setFieldTouched('flock_id', false); - } + formik.setFieldValue('flock', val, false); + formik.setFieldValue('flock_id', flockValue || 0, false); }; const addFeedData = () => {