diff --git a/src/pages/product/Create.tsx b/src/pages/product/Create.tsx index 969c24e..0d58576 100644 --- a/src/pages/product/Create.tsx +++ b/src/pages/product/Create.tsx @@ -3,14 +3,9 @@ import { useFormik } from 'formik' import * as Yup from 'yup' import { TickCircle } from 'iconsax-react' import { toast } from 'react-toastify' -import Input from '@/components/Input' -import Select from '@/components/Select' -import Textarea from '@/components/Textarea' import Button from '@/components/Button' -import { Checkbox } from '@/components/ui/checkbox' import CreateProductSidebar from './components/CreateProductSidebar' -import WeekDaysSection from './components/WeekDaysSection' -import MealTimesSection from './components/MealTimesSection' +import BasicInfoSection from './components/BasicInfoSection' import type { CreateProductType } from './types/Types' import { useCreateProduct, useGetCategories } from './hooks/useProductData' import { useMultipleUpload } from '../uploader/hooks/useUploaderData' @@ -35,42 +30,44 @@ const CreateProduct: FC = () => { const formik = useFormik({ initialValues: { - title: '', - desc: '', - content: [], categoryId: '', + title: '', + attribute: '', + variants: [], + desc: '', price: 0, - discount: 0, - prepareTime: 0, - weekDays: [0, 1, 2, 3, 4, 5, 6], - mealTypes: ['breakfast', 'lunch', 'dinner'], - pickupServe: true, - inPlaceServe: true, isActive: true, images: [], + discount: 0, isSpecialOffer: false, - dailyStock: 0, order: 0 }, validationSchema: Yup.object().shape({ title: Yup.string().required('نام کالا الزامی است'), categoryId: Yup.string().required('دسته‌بندی الزامی است'), price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'), - prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'), discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'), - dailyStock: Yup.number().required('موجودی روزانه الزامی است').min(0, 'موجودی روزانه باید مثبت باشد'), - content: Yup.array().of(Yup.string()), - weekDays: Yup.array().of(Yup.number()), - mealTypes: Yup.array().of(Yup.string()) + attribute: Yup.string(), + variants: Yup.array().of( + Yup.object().shape({ + id: Yup.string(), + value: Yup.string(), + price: Yup.number().min(0) + }) + ) }), onSubmit: (values) => { const submitProduct = (imageUrls: string[] = []) => { + const variants = + values.variants.length > 0 + ? values.variants + : [{ value: '', price: values.price }] const productData: CreateProductType = { ...values, + variants, isActive, isSpecialOffer: isSpecial, - images: imageUrls, - content: values.content.filter(item => item && item.trim().length > 0) + images: imageUrls } createProduct(productData, { @@ -123,158 +120,7 @@ const CreateProduct: FC = () => {
- - -
- formik.setFieldValue('price', Number(e.target.value))} - error_text={formik.touched.price && formik.errors.price ? formik.errors.price : ''} - /> - - formik.setFieldValue('discount', Number(e.target.value))} - error_text={formik.touched.discount && formik.errors.discount ? formik.errors.discount : ''} - /> - - formik.setFieldValue('prepareTime', Number(e.target.value))} - error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''} - /> - - formik.setFieldValue('dailyStock', Number(e.target.value))} - error_text={formik.touched.dailyStock && formik.errors.dailyStock ? formik.errors.dailyStock : ''} - /> -
- -
-