import { type FC } 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 Input from '@/components/Input' import Select from '@/components/Select' import Switch from '@/components/Switch' import Textarea from '@/components/Textarea' import type { CreateShipmentMethodType } from './types/Types' import { useCreateRestaurantShipmentMethod } from './hooks/useShipmentMethodData' import { DeliveryMethodEnum } from './enum/Enum' import { Pages } from '@/config/Pages' import type { ErrorType } from '@/helpers/types' import { extractErrorMessage } from '@/config/func' import { useTranslation } from 'react-i18next' const CreateShipmentMethod: FC = () => { const { t } = useTranslation('global') const navigate = useNavigate() const { mutate: createRestaurantShipmentMethod, isPending } = useCreateRestaurantShipmentMethod() const shipmentMethods = [ { label: t(`shipment.${DeliveryMethodEnum.DineIn}`), value: DeliveryMethodEnum.DineIn }, { label: t(`shipment.${DeliveryMethodEnum.Pickup}`), value: DeliveryMethodEnum.Pickup }, { label: t(`shipment.${DeliveryMethodEnum.DeliveryCourier}`), value: DeliveryMethodEnum.DeliveryCourier }, ] const formik = useFormik({ initialValues: { method: '', title: '', deliveryFee: 0, minOrderPrice: 0, description: '', enabled: true, order: 0, }, validationSchema: Yup.object().shape({ method: Yup.string().required('روش ارسال الزامی است'), title: Yup.string().required('عنوان الزامی است'), deliveryFee: Yup.number().required('هزینه ارسال الزامی است').min(0, 'هزینه ارسال باید مثبت باشد'), minOrderPrice: Yup.number().required('حداقل قیمت سفارش الزامی است').min(0, 'حداقل قیمت سفارش باید مثبت باشد'), description: Yup.string().required('توضیحات الزامی است'), enabled: Yup.boolean(), order: Yup.number().required('ترتیب الزامی است').min(0, 'ترتیب باید مثبت باشد'), }), onSubmit: (values) => { createRestaurantShipmentMethod(values, { onSuccess: () => { toast.success('روش ارسال با موفقیت ایجاد شد') navigate(Pages.shipment_methods.list) }, onError: (error: ErrorType) => { toast.error(extractErrorMessage(error)) }, }) }, }) return (
افزودن روش ارسال
{ const value = e.target.value === '' ? 0 : Number(e.target.value) formik.setFieldValue('deliveryFee', value) }} error_text={formik.touched.deliveryFee && formik.errors.deliveryFee ? formik.errors.deliveryFee : ''} />
{ const value = e.target.value === '' ? 0 : Number(e.target.value) formik.setFieldValue('minOrderPrice', value) }} error_text={formik.touched.minOrderPrice && formik.errors.minOrderPrice ? formik.errors.minOrderPrice : ''} />