import { type FC, useState, useMemo } from 'react' import { useFormik } from 'formik' import * as Yup from 'yup' import { TickCircle } from 'iconsax-react' import { toast } from 'react-toastify' import { useNavigate } from 'react-router-dom' import Button from '@/components/Button' import type { CreateCouponType } from './types/Types' import { useCreateCoupon } from './hooks/useCouponData' import { useGetCategories } from '@/pages/food/hooks/useFoodData' import { useGetFoods } from '@/pages/food/hooks/useFoodData' import { Pages } from '@/config/Pages' import type { ErrorType } from '@/helpers/types' import { extractErrorMessage } from '@/config/func' import CouponBasicInfo from './components/CouponBasicInfo' import CouponDiscountSettings from './components/CouponDiscountSettings' import CouponUsageSettings from './components/CouponUsageSettings' import CouponSidebar from './components/CouponSidebar' const CreateCoupon: FC = () => { const navigate = useNavigate() const { mutate: createCoupon, isPending: isCreating } = useCreateCoupon() const { data: categoriesData } = useGetCategories() const { data: foodsData } = useGetFoods() const [couponType, setCouponType] = useState<'PERCENTAGE' | 'FIXED'>('PERCENTAGE') const categories = useMemo(() => categoriesData?.data || [], [categoriesData?.data]) const foods = useMemo(() => foodsData?.data || [], [foodsData?.data]) const formik = useFormik({ initialValues: { code: '', name: '', description: '', value: 0, maxDiscount: null, minOrderAmount: 0, maxUses: 0, maxUsesPerUser: null, startDate: null, endDate: null, isActive: true, foodCategories: [], foods: [], userPhone: '', type: 'PERCENTAGE', }, validationSchema: Yup.object().shape({ type: Yup.string().required('نوع کوپن الزامی است'), code: Yup.string().required('کد کوپن الزامی است'), name: Yup.string().required('نام کوپن الزامی است'), description: Yup.string(), value: Yup.number().min(0, 'مقدار باید بیشتر از صفر باشد').required('مقدار کوپن الزامی است'), maxDiscount: Yup.number().nullable().min(0, 'حداکثر تخفیف باید بیشتر از صفر باشد'), minOrderAmount: Yup.number().min(0, 'حداقل مبلغ سفارش باید بیشتر از صفر باشد').required('حداقل مبلغ سفارش الزامی است'), maxUses: Yup.number().min(0, 'حداکثر استفاده باید بیشتر از صفر باشد').required('حداکثر استفاده الزامی است'), maxUsesPerUser: Yup.number().nullable().min(0, 'حداکثر استفاده برای هر کاربر باید بیشتر از صفر باشد'), startDate: Yup.string().nullable(), endDate: Yup.string().nullable(), userPhone: Yup.string().nullable(), }), onSubmit: (values) => { const submitValues = { ...values, userPhone: values.userPhone?.trim() || undefined, } createCoupon(submitValues, { onSuccess: () => { toast.success('کوپن با موفقیت ایجاد شد') navigate(Pages.coupons.list) }, onError: (error: ErrorType) => { toast.error(extractErrorMessage(error)) }, }) }, }) return (

کد تخفیف جدید

کد تخفیف جدید
) } export default CreateCoupon