import {useTranslations} from "next-intl"; import * as Yup from "yup"; import {ADD_USER_MANAGEMENT} from "@/core/data/apiRoutes"; import {useFormik} from "formik"; import { Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControl, FormHelperText, InputLabel, MenuItem, Select, Stack, TextField, Tooltip } from "@mui/material"; import useRequest from "@/lib/app/hooks/useRequest"; import DataSaverOnIcon from "@mui/icons-material/DataSaverOn"; import {useState} from "react"; const AddForm = ({mutate, fetchUrl}) => { const t = useTranslations(); 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) .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) .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")), }); const formik = useFormik({ initialValues: { phone_number: "", national_id: "", type_id: "", navgan_id: "", }, validationSchema, onSubmit: (values, {setSubmitting}) => { console.log("hello") 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); requestServer(ADD_USER_MANAGEMENT, 'post', { data: formData, }).then((response) => { setOpenConfirmDialog(false) mutate(fetchUrl) update_notification() }).catch(() => { }).finally(() => { setSubmitting(false); }); }, }); 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} ); }; export default AddForm;