diff --git a/.env b/.env index 6a84cba..0b4d543 100644 --- a/.env +++ b/.env @@ -1,4 +1,4 @@ VITE_TOKEN_NAME = 'admin_token' VITE_REFRESH_TOKEN_NAME = 'admin_refresh_token' -VITE_BASE_URL = 'https://api.danakcorp.com' -# VITE_BASE_URL = 'http://192.168.1.117:4000' \ No newline at end of file +# VITE_BASE_URL = 'https://api.danakcorp.com' +VITE_BASE_URL = 'http://192.168.1.117:4000' \ No newline at end of file diff --git a/src/langs/fa.json b/src/langs/fa.json index c87b701..370a8de 100644 --- a/src/langs/fa.json +++ b/src/langs/fa.json @@ -263,7 +263,8 @@ "low": "پایین", "medium": "متوسط", "high": "بالا", - "service": "سرویس" + "service": "سرویس", + "refer_ticket": "ارجاع تیکت" }, "active": "فعال", "inactive": "غیرفعال", diff --git a/src/pages/ticket/Detail.tsx b/src/pages/ticket/Detail.tsx index d0a33af..8f8a983 100644 --- a/src/pages/ticket/Detail.tsx +++ b/src/pages/ticket/Detail.tsx @@ -17,6 +17,8 @@ import { ErrorType } from '../../helpers/types' import { clx } from '../../helpers/utils' import { Pages } from '../../config/Pages' import { useMultiUpload } from '../service/hooks/useServiceData' +import { useGetProfile } from '../profile/hooks/useProfileData' +import ReferTicket from './components/ReferTicket' const TicketDetail: FC = () => { @@ -29,6 +31,7 @@ const TicketDetail: FC = () => { const multiUpload = useMultiUpload() const [isResetFiles, setIsResetFiles] = useState(false) const closeTicket = useCloseTicket() + const getProfile = useGetProfile() const formik = useFormik({ initialValues: { @@ -89,7 +92,7 @@ const TicketDetail: FC = () => {
{t('ticket.ticket_number')}
-
12312
+
{getMessages.data?.data?.ticket?.numericId}
{ getMessages.isPending ? @@ -302,6 +305,11 @@ const TicketDetail: FC = () => {
+ + { + getProfile.data?.data?.user?.roles[0]?.name === 'super_admin' && + + } } diff --git a/src/pages/ticket/components/ReferTicket.tsx b/src/pages/ticket/components/ReferTicket.tsx new file mode 100644 index 0000000..ce578cb --- /dev/null +++ b/src/pages/ticket/components/ReferTicket.tsx @@ -0,0 +1,69 @@ +import { FC, useState } from 'react' +import { useGetUsers } from '../../users/hooks/useUserData' +import { useTranslation } from 'react-i18next' +import { UserItemType } from '../../users/types/UserTypes' +import CheckBoxComponent from '../../../components/CheckBoxComponent' +import { useParams } from 'react-router-dom' +import { useReferTicket } from '../hooks/useTicketData' +import Button from '../../../components/Button' + +type Props = { + refetch: () => void +} + +const ReferTicket: FC = ({ refetch }) => { + + const { t } = useTranslation('global') + const { id } = useParams() + const [userId, setUserId] = useState('') + const getUsers = useGetUsers('', 'tickets') + const referTicket = useReferTicket() + + const handleReferTicket = () => { + referTicket.mutate({ id: id as string, userId }, { + onSuccess: () => { + refetch() + } + }) + } + + return ( +
+
+
+ {t('ticket.refer_ticket')} +
+
+ +
+ { + getUsers.data?.data?.users?.map((item: UserItemType) => ( +
+
+ setUserId(e.target.checked ? item.id : '')} + /> +
+
+ {item.firstName + ' ' + item.lastName} +
+
+ )) + } + +
+
+
+ +
+ ) +} + +export default ReferTicket \ No newline at end of file diff --git a/src/pages/ticket/hooks/useTicketData.ts b/src/pages/ticket/hooks/useTicketData.ts index 72a2f6a..60776cb 100644 --- a/src/pages/ticket/hooks/useTicketData.ts +++ b/src/pages/ticket/hooks/useTicketData.ts @@ -50,3 +50,10 @@ export const useGetCategories = () => { queryFn: () => api.getCategories(), }); }; + +export const useReferTicket = () => { + return useMutation({ + mutationFn: (variables: { id: string; userId: string }) => + api.referTicket(variables.id, variables.userId), + }); +}; diff --git a/src/pages/ticket/service/TicketServiec.ts b/src/pages/ticket/service/TicketServiec.ts index 4a4cbe9..017d0d5 100644 --- a/src/pages/ticket/service/TicketServiec.ts +++ b/src/pages/ticket/service/TicketServiec.ts @@ -37,3 +37,10 @@ export const getCategories = async () => { const { data } = await axios.get(`/tickets/categories`); return data; }; + +export const referTicket = async (id: string, userId: string) => { + const { data } = await axios.post(`/tickets/${id}/refer`, { + adminId: userId, + }); + return data; +}; diff --git a/src/pages/users/hooks/useUserData.ts b/src/pages/users/hooks/useUserData.ts index 20eed69..482177c 100644 --- a/src/pages/users/hooks/useUserData.ts +++ b/src/pages/users/hooks/useUserData.ts @@ -32,10 +32,10 @@ export const useCreateUser = () => { }); }; -export const useGetUsers = (search: string) => { +export const useGetUsers = (search: string, permission?: string) => { return useQuery({ - queryKey: ["users", search], - queryFn: () => api.getUsers(search), + queryKey: ["users", search, permission], + queryFn: () => api.getUsers(search, permission), }); }; diff --git a/src/pages/users/service/UserService.ts b/src/pages/users/service/UserService.ts index b0df2a1..ff268ad 100644 --- a/src/pages/users/service/UserService.ts +++ b/src/pages/users/service/UserService.ts @@ -25,8 +25,10 @@ export const createUser = async (params: CreateUserType) => { return data; }; -export const getUsers = async (search: string) => { - const { data } = await axios.get(`/users/admins?q=${search}`); +export const getUsers = async (search: string, permission?: string) => { + let query = `?q=${search}`; + if (permission) query += `&permission=${permission}`; + const { data } = await axios.get(`/users/admins${query}`); return data; };