annoncement

This commit is contained in:
hamid zarghami
2025-03-04 11:48:01 +03:30
parent 02d6dabc65
commit 5aa77530d3
7 changed files with 59 additions and 17 deletions
+26 -10
View File
@@ -1,4 +1,4 @@
import { FC, useEffect, useRef } from 'react'
import { FC, useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import Button from '../../components/Button'
import { InfoCircle, TickCircle } from 'iconsax-react'
@@ -9,20 +9,26 @@ import CheckBoxComponent from '../../components/CheckBoxComponent'
import Select from '../../components/Select'
import { useGetAllServices } from '../service/hooks/useServiceData'
import { useFormik } from 'formik'
import { AnnoncementCreateType } from './types/AnnoncementTypes'
import { AnnoncementCreateType, UserServiceItemType } from './types/AnnoncementTypes'
import * as Yup from 'yup'
import { ServiceItemType } from '../service/types/ServiceTypes'
import { useCreateAnnoncement } from './hooks/useAnnoncementData'
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<HTMLDivElement | null>(null);
const [serviceId, setServiceId] = useState('')
const [customerId, setCustomerId] = useState<string>('')
const getServices = useGetAllServices('', 1, '', '', false)
const createAnnoncement = useCreateAnnoncement()
const getCustomer = useGetCustomersService(serviceId)
const formik = useFormik<AnnoncementCreateType>({
initialValues: {
@@ -32,7 +38,8 @@ const Create: FC = () => {
isPublic: false,
isImportant: false,
serviceId: '',
groupIds: []
groupIds: [],
userIds: undefined
},
validationSchema: Yup.object({
title: Yup.string().required(t('errors.required')),
@@ -43,10 +50,15 @@ const Create: FC = () => {
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])
@@ -154,17 +166,21 @@ const Create: FC = () => {
value: item.id
})) || []}
name='serviceId'
onChange={formik.handleChange}
onChange={(e) => {
formik.setFieldValue('serviceId', e.target.value)
setServiceId(e.target.value)
}}
/>
</div>
<div className='mt-5'>
<Select
placeholder={t('select')}
label={t('announcement.select_customer')}
items={[{
label: 'Service 1',
value: '1'
}]}
onChange={() => null}
items={getCustomer?.data?.data?.users?.map((item: UserServiceItemType) => ({
label: item.firstname + ' ' + item.lastname,
value: item.id
})) || []}
onChange={(e) => setCustomerId(e.target.value)}
/>
</div>
</div>