import { useEffect, useState, type FC } from 'react' import Button from '@/components/Button' import { TickSquare } from 'iconsax-react' import { useOrderStore } from './store/OrderStore' import { useGetOrderDetails, useUpdateOrder } from './hooks/useOrderData' import { toast } from '@/shared/toast' import { useNavigate } from 'react-router-dom' import { Paths } from '@/config/Paths' import { extractErrorMessage } from '@/config/func' import { useFormik } from 'formik' import type { CreateBaseOrderType } from '../product/types/Types' import { OrderStatusEnum } from './enum/OrderEnum' import * as Yup from 'yup' import Input from '@/components/Input' import Select from '@/components/Select' import { useGetUsers } from '../user/hooks/useUserData' import { useParams } from 'react-router-dom' import EditOrderComponent from './components/SingleOrderEdit' import type { CreateOrderType } from './types/Types' const EditOrder: FC = () => { const { id } = useParams() const { data } = useGetOrderDetails(id!) const navigate = useNavigate() const { mutate: submitOrder, isPending } = useUpdateOrder() const { data: users } = useGetUsers() const [showOrders, setShowOrders] = useState([0]) const { items, setItems } = useOrderStore() const formik = useFormik({ initialValues: { enableTax: true, estimatedDays: 0, paymentMethod: '', status: OrderStatusEnum.CREATED, userId: '', }, validationSchema: Yup.object({ userId: Yup.string().required('این فیلد اجباری می باشد.'), estimatedDays: Yup.number().required('این فیلد اجباری می باشد.'), paymentMethod: Yup.string().required('این فیلد اجباری می باشد.'), }), onSubmit: (values) => { values.estimatedDays = Number(values.estimatedDays) onSubmit(values) } }) const onSubmit = (values: CreateBaseOrderType) => { if (items.length > 0) { const params = { ...values, items: items } submitOrder({ orderId: id!, params }, { onSuccess: () => { toast('سفارش با موفقیت ویرایش شد', 'success') navigate(Paths.order.list) }, onError: (error) => { toast(extractErrorMessage(error), 'error') } }) } else { toast('حداقل یک سفارش باید اضافه کنید.', 'error') } } useEffect(() => { if (data && data?.data) { formik.setValues({ enableTax: data?.data?.enableTax, estimatedDays: data?.data?.estimatedDays as number, paymentMethod: data?.data?.paymentMethod, status: data?.data?.status as OrderStatusEnum, userId: data?.data?.user.id, }) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [data]) useEffect(() => { if (data && data?.data) { const items: CreateOrderType[] = [] data?.data?.items.map((item) => { items.push({ id: item.id, productId: item.product.id, quantity: item.quantity, attributes: item.attributes, attachments: item.attachments, discount: item.discount, unitPrice: item.unitPrice, description: item.description, }) }) setItems(items) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [data]) return (

ویرایش سفارش

اطلاعات اولیه
{ return { label: item, value: item } })} {...formik.getFieldProps('status')} error_text={formik.errors.status && formik.touched.status ? formik.errors.status : ''} />
{items.map((item) => { return ( setShowOrders([...showOrders, showOrders.length])} key={item.productId} initialValues={item} /> ) })}
) } export default EditOrder