import {useTranslations} from "next-intl";
import {
Box,
Button,
Chip,
DialogActions,
DialogContent,
Divider,
FormControl,
FormHelperText,
Grid,
InputLabel,
MenuItem,
Select,
TextField
} from "@mui/material";
import {useEffect, useState} from "react";
import {useFormik} from "formik";
import {GET_CITY_LIST, GET_PROVINCE_LIST, GET_ROLE_LIST, UPDATE_EXPERT_MANAGEMENT} from "@/core/data/apiRoutes";
import * as Yup from "yup";
import useRequest from "@/lib/app/hooks/useRequest";
import useProvince from "@/lib/app/hooks/useProvince";
const UpdateContent = ({row, fetchUrl, mutate, setOpenUpdateDialog}) => {
const t = useTranslations();
const requestServer = useRequest();
// const [provinceList, setProvinceList] = useState([]);
const [cityList, setCityList] = useState([]);
const [roleList, setRoleList] = useState([]);
const [cityTextField, setCityTextField] = useState(t("ExpertMangement.text_field_please_select_province"));
const {provinceList, isLoadingProvinceList, errorProvinceList} = useProvince();
useEffect(() => {
requestServer(GET_ROLE_LIST, "get", {auth: true, notification: false})
.then(({data}) => {
const result = data.data;
const formattedData = result.map((role, index) => ({
id: index,
name: role.name,
name_fa: role.name_fa,
value: role.id,
}));
setRoleList(formattedData);
}).catch(() => {
});
}, []);
function getCities(province_id) {
formik.setFieldTouched("city_id", false, false);
// formik.setFieldValue("city_id", "")
setCityTextField(t("ExpertMangement.text_field_loading_cities_list"))
requestServer(`${GET_CITY_LIST}?province_id=${province_id}`, "get", {auth: true, notification: false})
.then(({data}) => {
const result = data.data;
const formattedData = result.map((city, index) => ({
id: index,
name: city.name,
value: city.id,
}));
setCityList(formattedData);
setCityTextField(t("ExpertMangement.text_field_city_id"))
}).catch(() => {
setCityTextField(t("ExpertMangement.text_field_error_fetching_cities"))
});
}
const validationSchema = Yup.object().shape({
name: Yup.string().required(t("ExpertMangement.error_message_name")),
username: Yup.string().required(t("ExpertMangement.error_message_username")),
email: Yup.string().required(t("ExpertMangement.error_message_email")),
phone_number: Yup.string().required(t("ExpertMangement.error_message_phone_number")),
national_id: Yup.string().required(t("ExpertMangement.error_message_national_id")),
password: Yup.string().required(t("ExpertMangement.error_message_password")),
position: Yup.string().required(t("ExpertMangement.error_message_position")),
province_id: Yup.string().required(t("ExpertMangement.error_message_province_id")),
city_id: Yup.string().required(t("ExpertMangement.error_message_city_id")),
role_id: Yup.string().required(t("ExpertMangement.error_message_role_id"))
});
const formik = useFormik({
initialValues: {
name: row.original.name,
username: row.original.username,
email: row.original.email,
phone_number: row.original.phone_number,
national_id: row.original.national_id,
position: row.original.position,
province_id: row.original.province_id,
city_id: row.original.city_id,
role_id: row.original.role_id
},
validationSchema,
onSubmit: (values, {setSubmitting}) => {
const formData = new FormData();
formData.append("name", values.name);
formData.append("national_id", values.national_id);
formData.append("phone_number", values.phone_number);
formData.append("email", values.email);
formData.append("username", values.username);
formData.append("province_id", values.province_id);
formData.append("city_id", values.city_id);
formData.append("position", values.position);
formData.append("role_id", values.role_id);
requestServer(`${UPDATE_EXPERT_MANAGEMENT}/${row.original.id}`, 'post', {auth: true, data: formData})
.then((response) => {
mutate(fetchUrl)
}).catch(() => {
}).finally(() => {
setSubmitting(false);
});
},
});
return (
<>
{t("ExpertMangement.text_field_province_id")}
{formik.touched.province_id && formik.errors.province_id ? formik.errors.province_id : ""}
{cityTextField}
{formik.touched.city_id && formik.errors.city_id ? formik.errors.city_id : ""}
{t("ExpertMangement.text_field_role_id")}
{formik.touched.role_id && formik.errors.role_id ? formik.errors.role_id : ""}
>
);
};
export default UpdateContent;