From 0cf7dede8bbdcb7287c908e7a7dfed8ee8f14ae6 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sat, 1 Mar 2025 16:41:20 +0330 Subject: [PATCH] category ticket and group user and ... --- src/components/Textarea.tsx | 2 +- src/config/Pages.ts | 2 + src/langs/fa.json | 14 +- src/pages/ticket/Category.tsx | 154 ++++++++++++++-------- src/pages/ticket/hooks/useTicketData.ts | 16 ++- src/pages/ticket/service/TicketServiec.ts | 12 +- src/pages/ticket/types/TicketTypes.ts | 16 +++ src/pages/users/GroupCreate.tsx | 136 +++++++++++++++++++ src/pages/users/GroupList.tsx | 72 ++++++++++ src/pages/users/hooks/useUserData.ts | 19 ++- src/pages/users/service/UserService.ts | 16 ++- src/pages/users/types/UserTypes.ts | 15 +++ src/router/Main.tsx | 4 + src/shared/components/UsersSubMenu.tsx | 10 ++ 14 files changed, 430 insertions(+), 58 deletions(-) create mode 100644 src/pages/users/GroupCreate.tsx create mode 100644 src/pages/users/GroupList.tsx diff --git a/src/components/Textarea.tsx b/src/components/Textarea.tsx index d454719..60999e8 100644 --- a/src/components/Textarea.tsx +++ b/src/components/Textarea.tsx @@ -11,7 +11,7 @@ const Textarea: FC = (props: Props) => {
{ props.label && -
+
{props.label}
} diff --git a/src/config/Pages.ts b/src/config/Pages.ts index 63f688e..3cbafee 100644 --- a/src/config/Pages.ts +++ b/src/config/Pages.ts @@ -65,6 +65,8 @@ export const Pages = { create: "/users/create", roleList: "/users/roles-all", roleCreate: "/users/roles-add", + groupAdd: "/users/group-add", + groupList: "/users/groups", }, ads: { list: "/ads/list", diff --git a/src/langs/fa.json b/src/langs/fa.json index 423d65c..be9368b 100644 --- a/src/langs/fa.json +++ b/src/langs/fa.json @@ -251,6 +251,8 @@ "high": "بالا", "service": "سرویس" }, + "active": "فعال", + "inactive": "غیرفعال", "attach": "پیوست", "date": "تاریخ", "status": "وضعیت", @@ -555,8 +557,18 @@ "permissions": "دسترسی ها", "status_role": "وضعیت نقش", "error_count_permission": "حداقل به دسترسی رو باید انتخاب کنید", - "is_admin": "آیا ادمین است؟" + "is_admin": "آیا ادمین است؟", + "user_group": "گروه کاربری", + "add_user_group": "ساخت گروه کاربری", + "users": "کاربران", + "group_add": "ساخت گروه", + "submit_group": "ثبت گروه", + "error_count_users": "حداقل یک کاربر باید انتخاب شود", + "list_user_group": "لیست گروه های کاربری", + "groups": "گروه ها", + "group_name": "نام گروه" }, + "submit": "ثبت", "yes": "بله", "no": "خیر", "profile": { diff --git a/src/pages/ticket/Category.tsx b/src/pages/ticket/Category.tsx index 7e0ad9c..0f5ca49 100644 --- a/src/pages/ticket/Category.tsx +++ b/src/pages/ticket/Category.tsx @@ -4,11 +4,47 @@ import Select from '../../components/Select' import Input from '../../components/Input' import Td from '../../components/Td' import SwitchComponent from '../../components/Switch' -import { CloseCircle } from 'iconsax-react' +import { useGetGroups } from '../users/hooks/useUserData' +import { useFormik } from 'formik' +import { CategoriesItemType, CreateCategoryType } from './types/TicketTypes' +import * as Yup from 'yup' +import { GroupItemType } from '../users/types/UserTypes' +import Button from '../../components/Button' +import { useCreateCategory, useGetCategories } from './hooks/useTicketData' +import Textarea from '../../components/Textarea' +import { ErrorType } from '../../helpers/types' +import { toast } from 'react-toastify' const TicketCategory: FC = () => { const { t } = useTranslation('global') + const getGroups = useGetGroups() + const createCategory = useCreateCategory() + const getCategories = useGetCategories() + + const formik = useFormik({ + initialValues: { + title: '', + description: '', + userGroupId: '', + isActive: true + }, + validationSchema: Yup.object({ + title: Yup.string().required(t('errors.required')), + userGroupId: Yup.string().required(t('errors.required')), + description: Yup.string().required(t('errors.required')), + }), + onSubmit: values => { + createCategory.mutate(values, { + onSuccess: () => { + formik.resetForm() + }, + onError: (error: ErrorType) => { + toast.error(error.response?.data?.error.message[0]) + } + }) + } + }) return (
@@ -46,22 +82,18 @@ const TicketCategory: FC = () => { - - - - - - null} - /> - - - + { + getCategories.data?.data?.ticketCategories?.map((item: CategoriesItemType) => ( + + + + + )) + }
@@ -79,63 +111,81 @@ const TicketCategory: FC = () => {
null} + active={formik.values.isActive} + onChange={(value) => formik.setFieldValue('isActive', value)} />
+
+ +
+