import { Button, Checkbox, CircularProgress, DialogActions, DialogContent, DialogTitle, FormControl, FormControlLabel, FormHelperText, FormLabel, Grid, Stack, TextField, Typography } from "@mui/material"; import {useFormik} from "formik"; import {UPDATE_ROLE} from "@/core/data/apiRoutes"; import * as Yup from "yup"; import usePermissions from "@/lib/app/hooks/usePermissions"; import useNotification from "@/lib/app/hooks/useNotification"; import useRequest from "@/lib/app/hooks/useRequest"; import {useTranslations} from "next-intl"; const UpdateContent = ({mutate, row, setOpenConfirmDialog}) => { const t = useTranslations(); const requestServer = useRequest({auth: true}) const {update_notification} = useNotification() const {permissions_list, isLoading} = usePermissions() const validationSchema = Yup.object().shape({ name_en: Yup.string().required(t("UpdateDialog.name_en_error")), name_fa: Yup.string().required(t("UpdateDialog.name_fa_error")), permissions: Yup.array().min(1, t("UpdateDialog.permission_min_error")).required(t("UpdateDialog.permission")), }); const formik = useFormik({ initialValues: { name_en: row.getValue("name"), name_fa: row.getValue("name_fa"), permissions: row.original.permissions.map((obj) => obj.id), }, validationSchema, onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("name", values.name_en); formData.append("name_fa", values.name_fa); for (let i = 0; i < values.permissions.length; i++) { formData.append(`permissions[${i}]`, values.permissions[i]); } requestServer(`${UPDATE_ROLE}/${row.getValue("id")}`, 'post', { data: formData, }).then((response) => { setOpenConfirmDialog(false) mutate() update_notification() }).catch(() => { }).finally(() => { setSubmitting(false); }); }, }); return ( <> {t("UpdateDialog.update")} {t("UpdateDialog.permission")}
{formik.touched.permissions && formik.errors.permissions} {isLoading ? {t("UpdateDialog.loading_permissions_list")} : ( <> {permissions_list.map((permission) => ( { if (e.target.checked) { formik.setFieldValue("permissions", [...formik.values.permissions, permission.id]) } else { formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id)) } }} /> } label={permission.name_fa} /> ))} )}
) } export default UpdateContent