import { type FC } from 'react' import { useFormik } from 'formik' import * as Yup from 'yup' import { TickCircle } from 'iconsax-react' import { toast } from 'react-toastify' import { useNavigate } from 'react-router-dom' import Button from '@/components/Button' import Input from '@/components/Input' import { Checkbox } from '@/components/ui/checkbox' import { useCreateRole, useGetPermissions } from './hooks/useRolesData' import type { CreateRoleType } from './types/Types' import { Pages } from '@/config/Pages' import type { ErrorType } from '@/helpers/types' import { extractErrorMessage } from '@/config/func' const CreateRole: FC = () => { const navigate = useNavigate() const { mutate: createRole, isPending } = useCreateRole() const { data: permissionsData } = useGetPermissions() const formik = useFormik({ initialValues: { name: '', permissionIds: [], }, validationSchema: Yup.object().shape({ name: Yup.string().required('نام نقش الزامی است'), permissionIds: Yup.array().of(Yup.string()), }), onSubmit: (values) => { createRole(values, { onSuccess: () => { toast.success('نقش با موفقیت ایجاد شد') navigate(Pages.roles.list) }, onError: (error: ErrorType) => { toast.error(extractErrorMessage(error)) }, }) }, }) return (
نقش جدید
دسترسی‌ها
{permissionsData?.data && permissionsData.data.length > 0 ? (
{permissionsData.data.map((permission) => (
{ const currentIds = formik.values.permissionIds if (checked) { formik.setFieldValue('permissionIds', [...currentIds, permission.id]) } else { formik.setFieldValue('permissionIds', currentIds.filter((id) => id !== permission.id)) } }} />
))}
) : (
دسترسی‌ای یافت نشد
)}
) } export default CreateRole