diff --git a/src/pages/ticket/CreateTicket.tsx b/src/pages/ticket/CreateTicket.tsx index a8770bd..370f43b 100644 --- a/src/pages/ticket/CreateTicket.tsx +++ b/src/pages/ticket/CreateTicket.tsx @@ -1,30 +1,15 @@ import { type FC, useState } from 'react' -// import { useTranslation } from 'react-i18next' import Input from '../../components/Input' -import Select from '../../components/Select' -// import Textarea from '../../components/Textarea' import UploadBox from '../../components/UploadBox' import Button from '../../components/Button' import { TickCircle, TickSquare } from 'iconsax-react' -// import { useCreateTicket, useGetCategoriesTicket, useMultiUpload } from './hooks/useTicketData' -// import { useGetProfile } from '../profile/hooks/useProfileData' -import { staticCategoriesData, staticProfileData, staticServicesData } from './data/staticData' -// import PageLoading from '../../components/PageLoading' -// import { useFormik } from 'formik' -// import { type CreateTicketType } from './types/TicketTypes' -// import * as Yup from 'yup' -// import { toast } from '../../components/Toast' -// import { type ErrorType } from '../../helpers/types' -// import { useNavigate } from 'react-router-dom' -// import { Pages } from '../../config/Pages' -// import { useGetMyServices } from '../service/hooks/useServiceData' -// import { MyServicesItem } from '../service/types/ServiecTypes' +import { useCreateOrReplyTicket } from './hooks/useTicketData' +import { useNavigate } from 'react-router-dom' import { fa } from '@/locale/fa' import Textarea from '@/components/Textarea' +import { Paths } from '@/config/Paths' const CreateTicket: FC = () => { - - // const { t } = useTranslation('global') const t = (key: string): string => { const keys = key.split('.'); let value: unknown = fa; @@ -33,65 +18,26 @@ const CreateTicket: FC = () => { } return (value as string) || key; } - // const navigate = useNavigate() - const [_files, setFiles] = useState([]) - const [percent] = useState(0) - // const getProfile = useGetProfile() - // const getCategories = useGetCategoriesTicket() - // const multiUpload = useMultiUpload(setPercent) - // const createTicket = useCreateTicket() - // const getMyservice = useGetMyServices('') + const navigate = useNavigate() + const [subject, setSubject] = useState('') + const [content, setContent] = useState('') + const [files, setFiles] = useState([]) - // استفاده از داده‌های استاتیک - const getProfile = { - isPending: false, - data: staticProfileData - } - const getCategories = { - isPending: false, - data: staticCategoriesData - } - const multiUpload = { - isPending: false, - mutateAsync: () => Promise.resolve() - } - const createTicket = { - isPending: false, - mutate: () => { } - } - const getMyservice = { - isPending: false, - data: staticServicesData - } + const createTicket = useCreateOrReplyTicket() - // Mock formik - const formik = { - values: { - subject: '', - message: '', - categoryId: '', - priority: 'LOW', - danakServiceId: '', - title: '', - attachmentUrls: [] - }, - handleChange: () => { }, - handleSubmit: () => { }, - resetForm: () => { }, - touched: { - subject: false, - priority: false, - danakServiceId: false, - categoryId: false, - message: false - }, - errors: { - subject: '', - priority: '', - danakServiceId: '', - categoryId: '', - message: '' - } + const handleSubmit = () => { + if (!subject.trim() || !content.trim()) return + createTicket.mutate( + { + subject: subject.trim(), + content: content.trim(), + attachments: files.length ? files.map(() => ({})) : [], + }, + { + onSuccess: () => navigate(Paths.tickets.list), + onError: (err: unknown) => console.error(err), + } + ) } @@ -101,169 +47,86 @@ const CreateTicket: FC = () => { {t('ticket.new_ticket')} - { - getProfile.isPending || getCategories.isPending ? -
Loading...
- : -
-
+
+
+
+ {t('ticket.submit_your_message')} +
+ +
+ setSubject(e.target.value)} + /> +
+ +
+