diff --git a/src/components/dashboard/user-management/Form/AddForm.jsx b/src/components/dashboard/user-management/Form/AddForm.jsx index c0021e8..6014c8d 100644 --- a/src/components/dashboard/user-management/Form/AddForm.jsx +++ b/src/components/dashboard/user-management/Form/AddForm.jsx @@ -26,37 +26,34 @@ const AddForm = ({mutate, fetchUrl}) => { const requestServer = useRequest({auth: true}) const [openConfirmDialog, setOpenConfirmDialog] = useState(false); const validationSchema = Yup.object().shape({ - phone_number: Yup.mixed().test( - "is-number", - `${t("AddDialog.phone_number_number")}`, - (value) => !isNaN(value) - ).test("positive", `${t("AddDialog.phone_number_positive")}`, (value) => value >= 0) + phone_number: Yup.mixed().test("is-number", `${t("AddDialog.phone_number_number")}`, (value) => !isNaN(value)).test("positive", `${t("AddDialog.phone_number_positive")}`, (value) => value >= 0) .test("max", `${t("AddDialog.phone_number_max")}`, (value) => value.length <= 11) .required(t("AddDialog.phone_number_error")), - national_id: Yup.mixed().test( - "is-number", - `${t("AddDialog.national_id_number")}`, - (value) => !isNaN(value) - ).test("positive", `${t("AddDialog.national_id_positive")}`, (value) => value >= 0) + national_id: Yup.mixed().test("is-number", `${t("AddDialog.national_id_number")}`, (value) => !isNaN(value)).test("positive", `${t("AddDialog.national_id_positive")}`, (value) => value >= 0) .test("max", `${t("AddDialog.national_id_max")}`, (value) => value.length <= 10) .required(t("AddDialog.national_id_error")), type_id: Yup.number().required(t("AddDialog.type_id_error")), - navgan_id: Yup.number().required(t("AddDialog.navgan_id_error")), + navgan_id: Yup.number().when('type_id', { + is: 1, // Condition: Check if type_id is equal to 1 + then: (schema) => schema.required(t("AddDialog.navgan_id_error")), + otherwise: (schema) => schema, // No validation for navgan_id when type_id is not 1 + }) }); + // validationSchema.describe({value: {type_id: true}}); + const formik = useFormik({ initialValues: { phone_number: "", national_id: "", type_id: "", navgan_id: "", - }, validationSchema, - onSubmit: (values, {setSubmitting}) => { + }, validationSchema, onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("phone_number", values.phone_number); formData.append("national_id", values.national_id); formData.append("type_id", values.type_id); - formData.append("navgan_id", values.navgan_id); + if (formik.values.type_id === 1) formData.append("navgan_id", values.navgan_id); requestServer(ADD_USER_MANAGEMENT, 'post', { data: formData, @@ -70,142 +67,138 @@ const AddForm = ({mutate, fetchUrl}) => { }); }, }); - return ( - - - - - - {t("AddDialog.add")} - - - - { - if (event.target.value.length <= 11) return formik.handleChange(event) - }} - fullWidth - variant="outlined" - onBlur={formik.handleBlur("phone_number")} - error={ - formik.touched.phone_number && - Boolean(formik.errors.phone_number) - } - helperText={ - formik.touched.phone_number && formik.errors.phone_number - } - sx={{mt: 1}} - /> - - - { - if (event.target.value.length <= 10) return formik.handleChange(event) - }} - fullWidth - variant="outlined" - onBlur={formik.handleBlur("national_id")} - error={ - formik.touched.national_id && - Boolean(formik.errors.national_id) - } - helperText={ - formik.touched.national_id && formik.errors.national_id - } - sx={{mt: 1}} - /> - - - - {t("AddDialog.type_id")} - - - {formik.touched.type_id && formik.errors.type_id} - - - - - + + + + + {t("AddDialog.add")} + + + + { + if (event.target.value.length <= 11) return formik.handleChange(event) + }} + fullWidth + variant="outlined" + onBlur={formik.handleBlur("phone_number")} + error={formik.touched.phone_number && Boolean(formik.errors.phone_number)} + helperText={formik.touched.phone_number && formik.errors.phone_number} + sx={{mt: 1}} + /> + + + { + if (event.target.value.length <= 10) return formik.handleChange(event) + }} + fullWidth + variant="outlined" + onBlur={formik.handleBlur("national_id")} + error={formik.touched.national_id && Boolean(formik.errors.national_id)} + helperText={formik.touched.national_id && formik.errors.national_id} + sx={{mt: 1}} + /> + + + + {t("AddDialog.type_id")} + + + {formik.touched.type_id && formik.errors.type_id} + + - - - - - - - - ); + + {formik.values.type_id === 1 ? () : null} + {/**/} + + + + + + + + + ); }; export default AddForm; \ No newline at end of file diff --git a/src/components/dashboard/user-management/Form/DeleteForm.jsx b/src/components/dashboard/user-management/Form/DeleteForm.jsx index b653428..5cf2eb3 100644 --- a/src/components/dashboard/user-management/Form/DeleteForm.jsx +++ b/src/components/dashboard/user-management/Form/DeleteForm.jsx @@ -44,7 +44,7 @@ const DeleteForm = ({rowId, fetchUrl, mutate}) => { - {t("DeleteDialog.delete")} diff --git a/src/components/dashboard/user-management/Form/UpdateForm.jsx b/src/components/dashboard/user-management/Form/UpdateForm.jsx index eccbf36..44631c5 100644 --- a/src/components/dashboard/user-management/Form/UpdateForm.jsx +++ b/src/components/dashboard/user-management/Form/UpdateForm.jsx @@ -37,7 +37,11 @@ const UpdateForm = ({row, fetchUrl, mutate}) => { .test("max", `${t("AddDialog.national_id_max")}`, (value) => value.length <= 10) .required(t("AddDialog.national_id_error")), type_id: Yup.number().required(t("AddDialog.type_id_error")), - navgan_id: Yup.number().required(t("AddDialog.navgan_id_error")), + navgan_id: Yup.number().when('type_id', { + is: 1, // Condition: Check if type_id is equal to 1 + then: (schema) => schema.required(t("AddDialog.navgan_id_error")), + otherwise: (schema) => schema, // No validation for navgan_id when type_id is not 1 + }) }); const formik = useFormik({ @@ -51,7 +55,7 @@ const UpdateForm = ({row, fetchUrl, mutate}) => { formData.append("phone_number", values.phone_number); formData.append("national_id", values.national_id); formData.append("type_id", values.type_id); - formData.append("navgan_id", values.navgan_id); + if (formik.values.type_id === 1) formData.append("navgan_id", values.navgan_id); requestServer(`${UPDATE_USER_MANAGEMENT}/${row.getValue("id")}`, 'post', { data: formData, }).then((response) => { @@ -142,7 +146,7 @@ const UpdateForm = ({row, fetchUrl, mutate}) => { - { error={formik.touched.navgan_id && Boolean(formik.errors.navgan_id)} helperText={formik.touched.navgan_id && formik.errors.navgan_id} sx={{mt: 1}} - /> + />) : null}