import { useEffect, useState, type FC } from 'react' import { useGetRestaurant, useUpdateRestaurant } from '../hooks/useSettingData' import type { UpdateRestaurantType } from '../types/Types' import { useFormik } from 'formik' import * as Yup from 'yup' import Input from '@/components/Input' import Button from '@/components/Button' import { toast } from 'react-toastify' interface FlatFormValues { purchaseAmount: string purchaseScore: string scoreAmount: string scoreCredit: string birthdayScore: string registerScore: string marriageDateScore: string referrerScore: string } const ScoreSetting: FC = () => { const { data: restaurant } = useGetRestaurant() const { mutate: updateRestaurant, isPending } = useUpdateRestaurant() const [isInitialized, setIsInitialized] = useState(false) const formik = useFormik({ initialValues: { purchaseAmount: '', purchaseScore: '', scoreAmount: '', scoreCredit: '', birthdayScore: '', registerScore: '', marriageDateScore: '', referrerScore: '', }, validationSchema: Yup.object().shape({ purchaseAmount: Yup.string().required('مبلغ خرید الزامی است'), purchaseScore: Yup.string().required('امتیاز خرید الزامی است'), scoreAmount: Yup.string().required('مبلغ امتیاز الزامی است'), scoreCredit: Yup.string().required('مبلغ اعتبار الزامی است'), birthdayScore: Yup.string().required('امتیاز تولد الزامی است'), registerScore: Yup.string().required('امتیاز ثبت نام الزامی است'), marriageDateScore: Yup.string().required('امتیاز سالگرد ازدواج الزامی است'), referrerScore: Yup.string().required('امتیاز معرف الزامی است'), }), validateOnMount: false, onSubmit: (values) => { const payload: UpdateRestaurantType = { score: { purchaseAmount: values.purchaseAmount, purchaseScore: values.purchaseScore, scoreAmount: values.scoreAmount, scoreCredit: values.scoreCredit, birthdayScore: values.birthdayScore, registerScore: values.registerScore, marriageDateScore: values.marriageDateScore, referrerScore: values.referrerScore, }, } updateRestaurant(payload, { onSuccess: () => { toast.success('تنظیمات امتیاز با موفقیت به‌روزرسانی شد') }, onError: () => { toast.error('خطا در به‌روزرسانی تنظیمات امتیاز') }, }) }, }) const getFieldError = (fieldName: string): string | undefined => { const meta = formik.getFieldMeta(fieldName) return meta.touched && meta.error ? meta.error : undefined } useEffect(() => { if (restaurant?.data?.score && !isInitialized) { const scorePrice = restaurant.data.score formik.setValues({ purchaseAmount: scorePrice.purchaseAmount != null ? String(scorePrice.purchaseAmount) : '', purchaseScore: scorePrice.purchaseScore != null ? String(scorePrice.purchaseScore) : '', scoreAmount: scorePrice.scoreAmount != null ? String(scorePrice.scoreAmount) : '', scoreCredit: scorePrice.scoreCredit != null ? String(scorePrice.scoreCredit) : '', birthdayScore: scorePrice.birthdayScore != null ? String(scorePrice.birthdayScore) : '', registerScore: scorePrice.registerScore != null ? String(scorePrice.registerScore) : '', marriageDateScore: scorePrice.marriageDateScore != null ? String(scorePrice.marriageDateScore) : '', referrerScore: scorePrice.referrerScore != null ? String(scorePrice.referrerScore) : '', }, false) formik.setTouched({}, false) setIsInitialized(true) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [restaurant, isInitialized]) return (
{/* بخش امتیاز خرید */}

امتیاز خرید

{/* خط اول */}
به ازای هر
تومان خرید مقدار
امتیاز به مشتری داده میشود.
{/* خط دوم */}
هر
امتیاز معادل
تومان اعتبار خرید است.
{/* بخش امتیاز ثابت */}

امتیاز ثابت

) } export default ScoreSetting