import { FC, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import Button from '../../components/Button' import { InfoCircle, TickCircle } from 'iconsax-react' import Input from '../../components/Input' import Quill from 'quill' import DatePickerComponent from '../../components/DatePicker' import CheckBoxComponent from '../../components/CheckBoxComponent' import Select from '../../components/Select' import { useGetAllServices } from '../service/hooks/useServiceData' import { useFormik } from 'formik' import { AnnoncementCreateType, UserServiceItemType } from './types/AnnoncementTypes' import * as Yup from 'yup' import { ServiceItemType } from '../service/types/ServiceTypes' import { useCreateAnnoncement, useGetCustomersService } from './hooks/useAnnoncementData' import { ErrorType } from '../../helpers/types' import { toast } from 'react-toastify' import moment from 'moment-jalaali' import { useNavigate } from 'react-router-dom' import { Pages } from '../../config/Pages' const Create: FC = () => { const { t } = useTranslation('global') const navigate = useNavigate() const editorRef = useRef(null); const [serviceId, setServiceId] = useState('') const [customerId, setCustomerId] = useState('') const getServices = useGetAllServices('', 1, '', '', false) const createAnnoncement = useCreateAnnoncement() const getCustomer = useGetCustomersService(serviceId) const formik = useFormik({ initialValues: { title: '', content: '', publishAt: '', isPublic: false, isImportant: false, serviceId: '', groupIds: [], userIds: undefined }, validationSchema: Yup.object({ title: Yup.string().required(t('errors.required')), content: Yup.string().required(t('errors.required')), publishAt: Yup.string().required(t('errors.required')), }), onSubmit: (values) => { if (!values.serviceId) { values.serviceId = undefined } if (customerId) { values.serviceId = undefined values.userIds = [customerId] } createAnnoncement.mutate(values, { onSuccess: () => { formik.resetForm() toast.success(t('success')) navigate(Pages.announcement.list) }, onError: (error: ErrorType) => { toast.error(error.response?.data?.error?.message[0]) } }) } }) useEffect(() => { const quill = new Quill('#editor', { theme: 'snow', modules: { toolbar: [ [{ header: '1' }, { header: '2' }, { font: [] }], [{ list: 'ordered' }, { list: 'bullet' }], ['bold', 'italic', 'underline'], ['link', 'image'], [{ align: [] }], ['clean'] ] } }); quill.on('text-change', () => { const html = editorRef.current?.querySelector('.ql-editor')?.innerHTML || ''; formik.setFieldValue('content', html); }); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return (
{t('announcement.add_announcement')}
{t('announcement.text')}
formik.setFieldValue('publishAt', moment(d, 'jYYYY-jMM-jDD').format('YYYY-MM-DD'))} placeholder={t('select')} />

{t('announcement.info_publishdata')}

formik.setFieldValue('isImportant', e.target.checked)} />
{t('announcement.label_importance')}
({ label: item.firstname + ' ' + item.lastname, value: item.id })) || []} onChange={(e) => setCustomerId(e.target.value)} />
) } export default Create