change create and update
This commit is contained in:
+14
-119
@@ -9,6 +9,8 @@ import Textarea from '@/components/Textarea'
|
|||||||
import Button from '@/components/Button'
|
import Button from '@/components/Button'
|
||||||
import { Checkbox } from '@/components/ui/checkbox'
|
import { Checkbox } from '@/components/ui/checkbox'
|
||||||
import CreateFoodSidebar from './components/CreateFoodSidebar'
|
import CreateFoodSidebar from './components/CreateFoodSidebar'
|
||||||
|
import WeekDaysSection from './components/WeekDaysSection'
|
||||||
|
import MealTimesSection from './components/MealTimesSection'
|
||||||
import type { CreateFoodType } from './types/Types'
|
import type { CreateFoodType } from './types/Types'
|
||||||
import { useCreateFood, useGetCategories } from './hooks/useFoodData'
|
import { useCreateFood, useGetCategories } from './hooks/useFoodData'
|
||||||
import { useMultipleUpload } from '../uploader/hooks/useUploaderData'
|
import { useMultipleUpload } from '../uploader/hooks/useUploaderData'
|
||||||
@@ -40,22 +42,13 @@ const CreateFood: FC = () => {
|
|||||||
price: 0,
|
price: 0,
|
||||||
discount: 0,
|
discount: 0,
|
||||||
prepareTime: 0,
|
prepareTime: 0,
|
||||||
stock: 0,
|
weekDays: [0, 1, 2, 3, 4, 5, 6],
|
||||||
stockDefault: 0,
|
mealTypes: ['breakfast', 'lunch', 'dinner'],
|
||||||
breakfast: false,
|
pickupServe: true,
|
||||||
noon: false,
|
inPlaceServe: true,
|
||||||
dinner: false,
|
|
||||||
mon: false,
|
|
||||||
tue: false,
|
|
||||||
wed: false,
|
|
||||||
thu: false,
|
|
||||||
fri: false,
|
|
||||||
sat: false,
|
|
||||||
sun: false,
|
|
||||||
pickupServe: false,
|
|
||||||
inPlaceServe: false,
|
|
||||||
isActive: true,
|
isActive: true,
|
||||||
images: []
|
images: [],
|
||||||
|
isSpecialOffer: false
|
||||||
},
|
},
|
||||||
validationSchema: Yup.object().shape({
|
validationSchema: Yup.object().shape({
|
||||||
title: Yup.string().required('نام غذا الزامی است'),
|
title: Yup.string().required('نام غذا الزامی است'),
|
||||||
@@ -63,16 +56,17 @@ const CreateFood: FC = () => {
|
|||||||
categoryId: Yup.string().required('دستهبندی الزامی است'),
|
categoryId: Yup.string().required('دستهبندی الزامی است'),
|
||||||
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
|
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
|
||||||
prepareTime: Yup.number().required('زمان آمادهسازی الزامی است').min(0, 'زمان آمادهسازی باید مثبت باشد'),
|
prepareTime: Yup.number().required('زمان آمادهسازی الزامی است').min(0, 'زمان آمادهسازی باید مثبت باشد'),
|
||||||
stock: Yup.number().required('موجودی الزامی است').min(0, 'موجودی باید مثبت باشد'),
|
|
||||||
stockDefault: Yup.number().required('موجودی پیشفرض الزامی است').min(0, 'موجودی پیشفرض باید مثبت باشد'),
|
|
||||||
discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'),
|
discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'),
|
||||||
content: Yup.array().of(Yup.string())
|
content: Yup.array().of(Yup.string()),
|
||||||
|
weekDays: Yup.array().of(Yup.number()),
|
||||||
|
mealTypes: Yup.array().of(Yup.string())
|
||||||
}),
|
}),
|
||||||
onSubmit: (values) => {
|
onSubmit: (values) => {
|
||||||
const submitFood = (imageUrls: string[] = []) => {
|
const submitFood = (imageUrls: string[] = []) => {
|
||||||
const foodData: CreateFoodType = {
|
const foodData: CreateFoodType = {
|
||||||
...values,
|
...values,
|
||||||
isActive,
|
isActive,
|
||||||
|
isSpecialOffer: isSpecial,
|
||||||
images: imageUrls,
|
images: imageUrls,
|
||||||
content: values.content.filter(item => item && item.trim().length > 0)
|
content: values.content.filter(item => item && item.trim().length > 0)
|
||||||
}
|
}
|
||||||
@@ -183,26 +177,6 @@ const CreateFood: FC = () => {
|
|||||||
onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))}
|
onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))}
|
||||||
error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''}
|
error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Input
|
|
||||||
name='stock'
|
|
||||||
label='موجودی'
|
|
||||||
placeholder=''
|
|
||||||
type='number'
|
|
||||||
value={formik.values.stock}
|
|
||||||
onChange={(e) => formik.setFieldValue('stock', Number(e.target.value))}
|
|
||||||
error_text={formik.touched.stock && formik.errors.stock ? formik.errors.stock : ''}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Input
|
|
||||||
name='stockDefault'
|
|
||||||
label='موجودی پیشفرض'
|
|
||||||
placeholder=''
|
|
||||||
type='number'
|
|
||||||
value={formik.values.stockDefault}
|
|
||||||
onChange={(e) => formik.setFieldValue('stockDefault', Number(e.target.value))}
|
|
||||||
error_text={formik.touched.stockDefault && formik.errors.stockDefault ? formik.errors.stockDefault : ''}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='mt-5'>
|
<div className='mt-5'>
|
||||||
@@ -254,87 +228,8 @@ const CreateFood: FC = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='mt-6'>
|
<MealTimesSection formik={formik} />
|
||||||
<div className='text-sm mb-3'>وعدههای غذایی</div>
|
<WeekDaysSection formik={formik} />
|
||||||
<div className='flex gap-6 flex-wrap'>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.breakfast}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('breakfast', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>صبحانه</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.noon}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('noon', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>ناهار</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.dinner}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('dinner', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>شام</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='mt-6'>
|
|
||||||
<div className='text-sm mb-3'>روزهای هفته</div>
|
|
||||||
<div className='flex gap-6 flex-wrap'>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.sat}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('sat', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>شنبه</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.sun}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('sun', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>یکشنبه</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.mon}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('mon', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>دوشنبه</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.tue}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('tue', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>سهشنبه</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.wed}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('wed', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>چهارشنبه</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.thu}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('thu', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>پنجشنبه</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.fri}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('fri', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>جمعه</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='mt-6'>
|
<div className='mt-6'>
|
||||||
<div className='text-sm mb-3'>گزینههای سرویس</div>
|
<div className='text-sm mb-3'>گزینههای سرویس</div>
|
||||||
|
|||||||
+13
-29
@@ -45,22 +45,13 @@ const UpdateFood: FC = () => {
|
|||||||
price: 0,
|
price: 0,
|
||||||
discount: 0,
|
discount: 0,
|
||||||
prepareTime: 0,
|
prepareTime: 0,
|
||||||
stock: 0,
|
weekDays: [],
|
||||||
stockDefault: 0,
|
mealTypes: [],
|
||||||
breakfast: false,
|
|
||||||
noon: false,
|
|
||||||
dinner: false,
|
|
||||||
mon: false,
|
|
||||||
tue: false,
|
|
||||||
wed: false,
|
|
||||||
thu: false,
|
|
||||||
fri: false,
|
|
||||||
sat: false,
|
|
||||||
sun: false,
|
|
||||||
pickupServe: false,
|
pickupServe: false,
|
||||||
inPlaceServe: false,
|
inPlaceServe: false,
|
||||||
isActive: true,
|
isActive: true,
|
||||||
images: []
|
images: [],
|
||||||
|
isSpecialOffer: false
|
||||||
},
|
},
|
||||||
validationSchema: Yup.object().shape({
|
validationSchema: Yup.object().shape({
|
||||||
title: Yup.string().required('نام غذا الزامی است'),
|
title: Yup.string().required('نام غذا الزامی است'),
|
||||||
@@ -68,10 +59,10 @@ const UpdateFood: FC = () => {
|
|||||||
categoryId: Yup.string().required('دستهبندی الزامی است'),
|
categoryId: Yup.string().required('دستهبندی الزامی است'),
|
||||||
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
|
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
|
||||||
prepareTime: Yup.number().required('زمان آمادهسازی الزامی است').min(0, 'زمان آمادهسازی باید مثبت باشد'),
|
prepareTime: Yup.number().required('زمان آمادهسازی الزامی است').min(0, 'زمان آمادهسازی باید مثبت باشد'),
|
||||||
stock: Yup.number().required('موجودی الزامی است').min(0, 'موجودی باید مثبت باشد'),
|
|
||||||
stockDefault: Yup.number().required('موجودی پیشفرض الزامی است').min(0, 'موجودی پیشفرض باید مثبت باشد'),
|
|
||||||
discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'),
|
discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'),
|
||||||
content: Yup.array().of(Yup.string())
|
content: Yup.array().of(Yup.string()),
|
||||||
|
weekDays: Yup.array().of(Yup.number()),
|
||||||
|
mealTypes: Yup.array().of(Yup.string())
|
||||||
}),
|
}),
|
||||||
onSubmit: (values) => {
|
onSubmit: (values) => {
|
||||||
if (!id) {
|
if (!id) {
|
||||||
@@ -84,6 +75,7 @@ const UpdateFood: FC = () => {
|
|||||||
const foodData: CreateFoodType = {
|
const foodData: CreateFoodType = {
|
||||||
...values,
|
...values,
|
||||||
isActive,
|
isActive,
|
||||||
|
isSpecialOffer: isSpecial,
|
||||||
images: allImages,
|
images: allImages,
|
||||||
content: values.content.filter(item => item && item.trim().length > 0)
|
content: values.content.filter(item => item && item.trim().length > 0)
|
||||||
}
|
}
|
||||||
@@ -125,24 +117,16 @@ const UpdateFood: FC = () => {
|
|||||||
price: food.price || 0,
|
price: food.price || 0,
|
||||||
discount: food.discount || 0,
|
discount: food.discount || 0,
|
||||||
prepareTime: food.prepareTime || 0,
|
prepareTime: food.prepareTime || 0,
|
||||||
stock: food.stock || 0,
|
weekDays: food.weekDays || [],
|
||||||
stockDefault: food.stockDefault || 0,
|
mealTypes: food.mealTypes || [],
|
||||||
breakfast: food.breakfast || false,
|
|
||||||
noon: food.noon || false,
|
|
||||||
dinner: food.dinner || false,
|
|
||||||
mon: food.mon || false,
|
|
||||||
tue: false,
|
|
||||||
wed: false,
|
|
||||||
thu: false,
|
|
||||||
fri: false,
|
|
||||||
sat: food.sat || false,
|
|
||||||
sun: food.sun || false,
|
|
||||||
pickupServe: food.pickupServe || false,
|
pickupServe: food.pickupServe || false,
|
||||||
inPlaceServe: food.inPlaceServe || false,
|
inPlaceServe: food.inPlaceServe || false,
|
||||||
isActive: food.isActive || false,
|
isActive: food.isActive || false,
|
||||||
images: food.images || []
|
images: food.images || [],
|
||||||
|
isSpecialOffer: food.isSpecialOffer || false
|
||||||
})
|
})
|
||||||
setIsActive(food.isActive || false)
|
setIsActive(food.isActive || false)
|
||||||
|
setIsSpecial(food.isSpecialOffer || false)
|
||||||
setExistingImages(food.images || [])
|
setExistingImages(food.images || [])
|
||||||
}
|
}
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ const BasicInfoSection: FC<BasicInfoSectionProps> = ({ formik, categories }) =>
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='grid grid-cols-3 gap-4 mt-5'>
|
<div className='mt-5'>
|
||||||
<Input
|
<Input
|
||||||
name='prepareTime'
|
name='prepareTime'
|
||||||
label='زمان آماده سازی'
|
label='زمان آماده سازی'
|
||||||
@@ -72,26 +72,6 @@ const BasicInfoSection: FC<BasicInfoSectionProps> = ({ formik, categories }) =>
|
|||||||
onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))}
|
onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))}
|
||||||
error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''}
|
error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Input
|
|
||||||
name='stock'
|
|
||||||
label='موجودی'
|
|
||||||
placeholder=''
|
|
||||||
type='number'
|
|
||||||
value={formik.values.stock}
|
|
||||||
onChange={(e) => formik.setFieldValue('stock', Number(e.target.value))}
|
|
||||||
error_text={formik.touched.stock && formik.errors.stock ? formik.errors.stock : ''}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Input
|
|
||||||
name='stockDefault'
|
|
||||||
label='موجودی پیشفرض'
|
|
||||||
placeholder=''
|
|
||||||
type='number'
|
|
||||||
value={formik.values.stockDefault}
|
|
||||||
onChange={(e) => formik.setFieldValue('stockDefault', Number(e.target.value))}
|
|
||||||
error_text={formik.touched.stockDefault && formik.errors.stockDefault ? formik.errors.stockDefault : ''}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='mt-5'>
|
<div className='mt-5'>
|
||||||
|
|||||||
@@ -8,31 +8,36 @@ type MealTimesSectionProps = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const MealTimesSection: FC<MealTimesSectionProps> = ({ formik }) => {
|
const MealTimesSection: FC<MealTimesSectionProps> = ({ formik }) => {
|
||||||
|
const mealTypes = [
|
||||||
|
{ value: 'breakfast', label: 'صبحانه' },
|
||||||
|
{ value: 'lunch', label: 'ناهار' },
|
||||||
|
{ value: 'dinner', label: 'شام' }
|
||||||
|
] as const
|
||||||
|
|
||||||
|
const handleMealTypeChange = (mealType: string, checked: boolean) => {
|
||||||
|
const currentMealTypes = formik.values.mealTypes || []
|
||||||
|
if (checked) {
|
||||||
|
if (!currentMealTypes.includes(mealType)) {
|
||||||
|
formik.setFieldValue('mealTypes', [...currentMealTypes, mealType])
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
formik.setFieldValue('mealTypes', currentMealTypes.filter(m => m !== mealType))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='mt-6'>
|
<div className='mt-6'>
|
||||||
<div className='text-sm mb-3'>وعدههای غذایی</div>
|
<div className='text-sm mb-3'>وعدههای غذایی</div>
|
||||||
<div className='flex gap-6 flex-wrap'>
|
<div className='flex gap-6 flex-wrap'>
|
||||||
<div className='flex items-center gap-2'>
|
{mealTypes.map((mealType) => (
|
||||||
|
<div key={mealType.value} className='flex items-center gap-2'>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
checked={formik.values.breakfast}
|
checked={(formik.values.mealTypes || []).includes(mealType.value)}
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('breakfast', checked)}
|
onCheckedChange={(checked) => handleMealTypeChange(mealType.value, checked as boolean)}
|
||||||
/>
|
/>
|
||||||
<label className='text-xs cursor-pointer'>صبحانه</label>
|
<label className='text-xs cursor-pointer'>{mealType.label}</label>
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.noon}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('noon', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>ناهار</label>
|
|
||||||
</div>
|
|
||||||
<div className='flex items-center gap-2'>
|
|
||||||
<Checkbox
|
|
||||||
checked={formik.values.dinner}
|
|
||||||
onCheckedChange={(checked) => formik.setFieldValue('dinner', checked)}
|
|
||||||
/>
|
|
||||||
<label className='text-xs cursor-pointer'>شام</label>
|
|
||||||
</div>
|
</div>
|
||||||
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -9,24 +9,35 @@ type WeekDaysSectionProps = {
|
|||||||
|
|
||||||
const WeekDaysSection: FC<WeekDaysSectionProps> = ({ formik }) => {
|
const WeekDaysSection: FC<WeekDaysSectionProps> = ({ formik }) => {
|
||||||
const weekDays = [
|
const weekDays = [
|
||||||
{ key: 'sat', label: 'شنبه' },
|
{ value: 0, label: 'شنبه' },
|
||||||
{ key: 'sun', label: 'یکشنبه' },
|
{ value: 1, label: 'یکشنبه' },
|
||||||
{ key: 'mon', label: 'دوشنبه' },
|
{ value: 2, label: 'دوشنبه' },
|
||||||
{ key: 'tue', label: 'سهشنبه' },
|
{ value: 3, label: 'سهشنبه' },
|
||||||
{ key: 'wed', label: 'چهارشنبه' },
|
{ value: 4, label: 'چهارشنبه' },
|
||||||
{ key: 'thu', label: 'پنجشنبه' },
|
{ value: 5, label: 'پنجشنبه' },
|
||||||
{ key: 'fri', label: 'جمعه' }
|
{ value: 6, label: 'جمعه' }
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
|
const handleDayChange = (dayValue: number, checked: boolean) => {
|
||||||
|
const currentDays = formik.values.weekDays || []
|
||||||
|
if (checked) {
|
||||||
|
if (!currentDays.includes(dayValue)) {
|
||||||
|
formik.setFieldValue('weekDays', [...currentDays, dayValue])
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
formik.setFieldValue('weekDays', currentDays.filter(d => d !== dayValue))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='mt-6'>
|
<div className='mt-6'>
|
||||||
<div className='text-sm mb-3'>روزهای هفته</div>
|
<div className='text-sm mb-3'>روزهای هفته</div>
|
||||||
<div className='flex gap-6 flex-wrap'>
|
<div className='flex gap-6 flex-wrap'>
|
||||||
{weekDays.map((day) => (
|
{weekDays.map((day) => (
|
||||||
<div key={day.key} className='flex items-center gap-2'>
|
<div key={day.value} className='flex items-center gap-2'>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
checked={formik.values[day.key]}
|
checked={(formik.values.weekDays || []).includes(day.value)}
|
||||||
onCheckedChange={(checked) => formik.setFieldValue(day.key, checked)}
|
onCheckedChange={(checked) => handleDayChange(day.value, checked as boolean)}
|
||||||
/>
|
/>
|
||||||
<label className='text-xs cursor-pointer'>{day.label}</label>
|
<label className='text-xs cursor-pointer'>{day.label}</label>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,29 +1,20 @@
|
|||||||
import type { IResponse } from "@/types/response.types";
|
import type { IResponse } from "@/types/response.types";
|
||||||
|
|
||||||
export type CreateFoodType = {
|
export type CreateFoodType = {
|
||||||
breakfast: boolean;
|
categoryId: string;
|
||||||
tue: boolean;
|
|
||||||
wed: boolean;
|
|
||||||
thu: boolean;
|
|
||||||
fri: boolean;
|
|
||||||
title: string;
|
title: string;
|
||||||
desc: string;
|
desc: string;
|
||||||
content: string[];
|
content: string[];
|
||||||
|
weekDays: number[];
|
||||||
|
mealTypes: string[];
|
||||||
price: number;
|
price: number;
|
||||||
prepareTime: number;
|
prepareTime: number;
|
||||||
sat: boolean;
|
|
||||||
sun: boolean;
|
|
||||||
mon: boolean;
|
|
||||||
noon: boolean;
|
|
||||||
dinner: boolean;
|
|
||||||
stock: number;
|
|
||||||
stockDefault: number;
|
|
||||||
isActive: boolean;
|
isActive: boolean;
|
||||||
images: string[];
|
images: string[];
|
||||||
inPlaceServe: boolean;
|
inPlaceServe: boolean;
|
||||||
pickupServe: boolean;
|
pickupServe: boolean;
|
||||||
discount: number;
|
discount: number;
|
||||||
categoryId: string;
|
isSpecialOffer: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Category = {
|
export type Category = {
|
||||||
@@ -98,26 +89,22 @@ export type FoodDetails = {
|
|||||||
deletedAt: string | null;
|
deletedAt: string | null;
|
||||||
restaurant: string;
|
restaurant: string;
|
||||||
category: FoodDetailsCategory;
|
category: FoodDetailsCategory;
|
||||||
|
inventory: number | null;
|
||||||
title: string;
|
title: string;
|
||||||
desc: string | null;
|
desc: string | null;
|
||||||
content: string[];
|
content: string[];
|
||||||
price: number;
|
price: number;
|
||||||
order: number | null;
|
order: number | null;
|
||||||
prepareTime: number;
|
prepareTime: number;
|
||||||
sat: boolean;
|
weekDays: number[];
|
||||||
sun: boolean;
|
mealTypes: string[];
|
||||||
mon: boolean;
|
|
||||||
breakfast: boolean;
|
|
||||||
noon: boolean;
|
|
||||||
dinner: boolean;
|
|
||||||
stock: number;
|
|
||||||
stockDefault: number;
|
|
||||||
isActive: boolean;
|
isActive: boolean;
|
||||||
images: string[];
|
images: string[];
|
||||||
inPlaceServe: boolean;
|
inPlaceServe: boolean;
|
||||||
pickupServe: boolean;
|
pickupServe: boolean;
|
||||||
rate: number;
|
score: number | null;
|
||||||
discount: number;
|
discount: number;
|
||||||
|
isSpecialOffer: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type GetCategoriesResponseType = IResponse<Category[]>;
|
export type GetCategoriesResponseType = IResponse<Category[]>;
|
||||||
|
|||||||
Reference in New Issue
Block a user