import LtrTextField from "@/core/components/LtrTextField";
import StyledForm from "@/core/components/StyledForm";
import { yupResolver } from "@hookform/resolvers/yup";
import {
Box,
Button,
Checkbox,
Chip,
DialogActions,
DialogContent,
Divider,
FormControlLabel,
FormHelperText,
Grid,
Skeleton,
Stack,
} from "@mui/material";
import { Controller, useForm } from "react-hook-form";
import { array, object, string } from "yup";
import useRequest from "@/lib/hooks/useRequest";
import { ROLE_SERVICE } from "@/core/utils/routes";
import usePermissionsList from "@/lib/hooks/usePermissionsList";
const defaultValues = {
name: "",
name_fa: "",
permissions: [],
};
const validationSchema = object().shape({
name: string().required("نام فارسی نقش را وارد کنید"),
name_fa: string().required("نام انگلیسی نقش را وارد کنید"),
permissions: array().min(1, "حداقل یک دسترسی را انتخاب نمایید"),
});
const CreateRoleForm = ({ setOpen, mutate }) => {
const requestServer = useRequest({ notificationSuccess: true });
const { permissions, loadingPermissions } = usePermissionsList();
const {
control,
handleSubmit,
formState: { isSubmitting, errors },
} = useForm({ defaultValues, resolver: yupResolver(validationSchema) });
const onSubmit = async (data) => {
try {
await requestServer(ROLE_SERVICE, "post", {
data: {
permissions: data.permissions,
name: data.name,
name_fa: data.name_fa,
},
});
setOpen(false);
mutate();
} catch (error) {}
};
return (
<>
{
return (
);
}}
name={"name"}
/>
{
return (
);
}}
name={"name_fa"}
/>
{!loadingPermissions ? (
(
<>
{permissions.map((permission) => (
{
const value = parseInt(e.target.value, 10);
if (e.target.checked) {
field.onChange([...field.value, value]);
} else {
field.onChange(
field.value.filter((id) => id !== value)
);
}
}}
/>
}
label={permission.name_fa}
/>
))}
{!!error && error.message}
>
)}
/>
) : (
)}
>
);
};
export default CreateRoleForm;