From 7d27ba1f41b1d5ac2274e621a35e0fc1c06831b6 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sun, 8 Feb 2026 15:00:48 +0330 Subject: [PATCH] create admin --- src/pages/admin/Create.tsx | 131 ++++++++++++++++++++++++ src/pages/admin/List.tsx | 13 ++- src/pages/admin/hooks/useAdminData.ts | 15 ++- src/pages/admin/service/AdminService.ts | 16 ++- src/pages/admin/types/Types.ts | 28 +++++ src/router/MainRouter.tsx | 2 + 6 files changed, 202 insertions(+), 3 deletions(-) create mode 100644 src/pages/admin/Create.tsx diff --git a/src/pages/admin/Create.tsx b/src/pages/admin/Create.tsx new file mode 100644 index 0000000..db94ca8 --- /dev/null +++ b/src/pages/admin/Create.tsx @@ -0,0 +1,131 @@ +import { useFormik } from 'formik'; +import { type FC } from 'react'; +import type { CreateAdminType } from './types/Types'; +import * as Yup from 'yup'; +import Button from '@/components/Button'; +import { AddSquare } from 'iconsax-react'; +import Input from '@/components/Input'; +import Select from '@/components/Select'; +import { useCreateAdmin, useGetRoles } from './hooks/useAdminData'; +import { useNavigate } from 'react-router-dom'; +import { toast } from 'react-toastify'; +import { extractErrorMessage } from '@/config/func'; +import { Paths } from '@/config/Paths'; + +const CreateAdmin: FC = () => { + const navigate = useNavigate(); + const { mutate: createAdmin, isPending } = useCreateAdmin(); + const { data: rolesData } = useGetRoles(); + + const formik = useFormik({ + initialValues: { + firstName: '', + lastName: '', + phone: '', + roleId: '', + notificationPrefrences: ['test'] + }, + validationSchema: Yup.object({ + firstName: Yup.string() + .required('نام اجباری می باشد') + .min(2, 'نام باید حداقل 2 کاراکتر باشد'), + lastName: Yup.string() + .required('نام خانوادگی اجباری می باشد') + .min(2, 'نام خانوادگی باید حداقل 2 کاراکتر باشد'), + phone: Yup.string() + .required('شماره موبایل اجباری می باشد') + .matches(/^09[0-9]{9}$/, 'شماره موبایل معتبر نمی باشد'), + roleId: Yup.string().required('نقش اجباری می باشد'), + }), + onSubmit: (values) => { + createAdmin(values, { + onSuccess: () => { + toast.success('ادمین با موفقیت ایجاد شد'); + navigate(Paths.admin.list); + }, + onError: (error) => { + toast.error(extractErrorMessage(error)); + }, + }); + }, + }); + + const roleOptions = + rolesData?.data?.map((role) => ({ + label: role.title || role.name, + value: role.id, + })) || []; + + return ( +
+
+

ایجاد ادمین جدید

+ +
+ +
+
+ + + +
+ +
+ +
+ +
+