From 687fc1e6c24d14b5a7b60d64d13aaa237eb4de5b Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 9 Feb 2026 14:04:21 +0330 Subject: [PATCH] change food to product name --- src/config/Pages.ts | 10 +-- src/config/SideBarSubMenu.ts | 2 +- src/pages/coupon/Create.tsx | 10 +-- src/pages/coupon/Update.tsx | 10 +-- src/pages/{food => product}/Category.tsx | 6 +- src/pages/{food => product}/Create.tsx | 28 +++---- src/pages/{food => product}/List.tsx | 32 ++++---- src/pages/{food => product}/Update.tsx | 80 +++++++++---------- .../components/BasicInfoSection.tsx | 5 +- .../components/CategoryForm.tsx | 3 +- .../components/CategoryTableColumns.tsx | 1 - .../components/CreateProductSidebar.tsx} | 4 +- .../components/IconSelectModal.tsx | 1 - .../components/MealTimesSection.tsx | 5 +- .../components/ProductContentSection.tsx} | 10 +-- .../components/ProductFiltersFields.tsx} | 4 +- .../components/ProductTableColumns.tsx} | 23 +++--- .../components/ServiceOptionsSection.tsx | 5 +- .../components/WeekDaysSection.tsx | 5 +- .../hooks/useProductData.ts} | 36 ++++----- .../hooks/useProductFilters.ts} | 8 +- .../service/ProductService.ts} | 28 +++---- src/pages/{food => product}/types/Types.ts | 21 ++--- .../{food => product}/utils/formatters.ts | 0 src/router/Main.tsx | 16 ++-- src/shared/Footer.tsx | 2 +- src/shared/SideBar.tsx | 14 ++-- .../{FoodsSubMenu.tsx => ProductsSubMenu.tsx} | 11 ++- 28 files changed, 186 insertions(+), 194 deletions(-) rename src/pages/{food => product}/Category.tsx (98%) rename src/pages/{food => product}/Create.tsx (94%) rename src/pages/{food => product}/List.tsx (64%) rename src/pages/{food => product}/Update.tsx (75%) rename src/pages/{food => product}/components/BasicInfoSection.tsx (97%) rename src/pages/{food => product}/components/CategoryForm.tsx (98%) rename src/pages/{food => product}/components/CategoryTableColumns.tsx (99%) rename src/pages/{food/components/CreateFoodSidebar.tsx => product/components/CreateProductSidebar.tsx} (95%) rename src/pages/{food => product}/components/IconSelectModal.tsx (99%) rename src/pages/{food => product}/components/MealTimesSection.tsx (94%) rename src/pages/{food/components/FoodContentSection.tsx => product/components/ProductContentSection.tsx} (85%) rename src/pages/{food/components/FoodFiltersFields.tsx => product/components/ProductFiltersFields.tsx} (83%) rename src/pages/{food/components/FoodTableColumns.tsx => product/components/ProductTableColumns.tsx} (84%) rename src/pages/{food => product}/components/ServiceOptionsSection.tsx (91%) rename src/pages/{food => product}/components/WeekDaysSection.tsx (94%) rename src/pages/{food/hooks/useFoodData.ts => product/hooks/useProductData.ts} (67%) rename src/pages/{food/hooks/useFoodFilters.ts => product/hooks/useProductFilters.ts} (81%) rename src/pages/{food/service/FoodService.ts => product/service/ProductService.ts} (69%) rename src/pages/{food => product}/types/Types.ts (85%) rename src/pages/{food => product}/utils/formatters.ts (100%) rename src/shared/components/{FoodsSubMenu.tsx => ProductsSubMenu.tsx} (86%) diff --git a/src/config/Pages.ts b/src/config/Pages.ts index 240bd60..a2d6337 100644 --- a/src/config/Pages.ts +++ b/src/config/Pages.ts @@ -15,11 +15,11 @@ export const Pages = { add: "/payment_methods/create", update: "/payment_methods/update/", }, - foods: { - list: "/foods/list", - add: "/foods/add", - category: "/foods/category", - update: "/foods/update/", + products: { + list: "/products/list", + add: "/products/add", + category: "/products/category", + update: "/products/update/", }, orders: { list: "/orders/list", diff --git a/src/config/SideBarSubMenu.ts b/src/config/SideBarSubMenu.ts index 6361893..4e9e271 100644 --- a/src/config/SideBarSubMenu.ts +++ b/src/config/SideBarSubMenu.ts @@ -1,5 +1,5 @@ export const SideBarItemHasSubMenu = [ - "foods", + "products", "orders", "customers", "discounts", diff --git a/src/pages/coupon/Create.tsx b/src/pages/coupon/Create.tsx index a055e68..57b1665 100644 --- a/src/pages/coupon/Create.tsx +++ b/src/pages/coupon/Create.tsx @@ -7,8 +7,8 @@ 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 { useGetCategories } from '@/pages/product/hooks/useProductData' +import { useGetProducts } from '@/pages/product/hooks/useProductData' import { Pages } from '@/config/Pages' import type { ErrorType } from '@/helpers/types' import { extractErrorMessage } from '@/config/func' @@ -21,12 +21,12 @@ const CreateCoupon: FC = () => { const navigate = useNavigate() const { mutate: createCoupon, isPending: isCreating } = useCreateCoupon() const { data: categoriesData } = useGetCategories() - const { data: foodsData } = useGetFoods() + const { data: productsData } = useGetProducts() const [couponType, setCouponType] = useState<'PERCENTAGE' | 'FIXED'>('PERCENTAGE') const categories = useMemo(() => categoriesData?.data || [], [categoriesData?.data]) - const foods = useMemo(() => foodsData?.data || [], [foodsData?.data]) + const products = useMemo(() => productsData?.data || [], [productsData?.data]) const formik = useFormik({ initialValues: { @@ -119,7 +119,7 @@ const CreateCoupon: FC = () => { diff --git a/src/pages/coupon/Update.tsx b/src/pages/coupon/Update.tsx index c745591..a24cf23 100644 --- a/src/pages/coupon/Update.tsx +++ b/src/pages/coupon/Update.tsx @@ -7,8 +7,8 @@ import { toast } from 'react-toastify' import Button from '@/components/Button' import type { CreateCouponType } from './types/Types' import { useGetCouponDetails, useUpdateCoupon } from './hooks/useCouponData' -import { useGetCategories } from '@/pages/food/hooks/useFoodData' -import { useGetFoods } from '@/pages/food/hooks/useFoodData' +import { useGetCategories } from '@/pages/product/hooks/useProductData' +import { useGetProducts } from '@/pages/product/hooks/useProductData' import { Pages } from '@/config/Pages' import type { ErrorType } from '@/helpers/types' import { extractErrorMessage } from '@/config/func' @@ -23,12 +23,12 @@ const UpdateCoupon: FC = () => { const { data: couponData, isLoading } = useGetCouponDetails(id || '') const { mutate: updateCoupon, isPending: isUpdating } = useUpdateCoupon() const { data: categoriesData } = useGetCategories() - const { data: foodsData } = useGetFoods() + const { data: productsData } = useGetProducts() const [couponType, setCouponType] = useState<'PERCENTAGE' | 'FIXED'>('PERCENTAGE') const categories = useMemo(() => categoriesData?.data || [], [categoriesData?.data]) - const foods = useMemo(() => foodsData?.data || [], [foodsData?.data]) + const products = useMemo(() => productsData?.data || [], [productsData?.data]) const formik = useFormik({ initialValues: { @@ -167,7 +167,7 @@ const UpdateCoupon: FC = () => { diff --git a/src/pages/food/Category.tsx b/src/pages/product/Category.tsx similarity index 98% rename from src/pages/food/Category.tsx rename to src/pages/product/Category.tsx index 61b5cdc..8a3b1b5 100644 --- a/src/pages/food/Category.tsx +++ b/src/pages/product/Category.tsx @@ -13,7 +13,7 @@ import { useCreateCategory, useUpdateCategory, useDeleteCategory -} from './hooks/useFoodData' +} from './hooks/useProductData' import { useSingleUpload } from '../uploader/hooks/useUploaderData' import { extractErrorMessage } from '@/config/func' @@ -24,7 +24,7 @@ type CategoryFormValues = { parentId?: string, } -const CategoryFood: FC = () => { +const CategoryProduct: FC = () => { const [isActive, setIsActive] = useState(true) const [iconFiles, setIconFiles] = useState([]) const [selectedIconUrl, setSelectedIconUrl] = useState('') @@ -226,4 +226,4 @@ const CategoryFood: FC = () => { ) } -export default CategoryFood \ No newline at end of file +export default CategoryProduct diff --git a/src/pages/food/Create.tsx b/src/pages/product/Create.tsx similarity index 94% rename from src/pages/food/Create.tsx rename to src/pages/product/Create.tsx index fbf3283..969c24e 100644 --- a/src/pages/food/Create.tsx +++ b/src/pages/product/Create.tsx @@ -8,24 +8,24 @@ import Select from '@/components/Select' import Textarea from '@/components/Textarea' import Button from '@/components/Button' import { Checkbox } from '@/components/ui/checkbox' -import CreateFoodSidebar from './components/CreateFoodSidebar' +import CreateProductSidebar from './components/CreateProductSidebar' import WeekDaysSection from './components/WeekDaysSection' import MealTimesSection from './components/MealTimesSection' -import type { CreateFoodType } from './types/Types' -import { useCreateFood, useGetCategories } from './hooks/useFoodData' +import type { CreateProductType } from './types/Types' +import { useCreateProduct, useGetCategories } from './hooks/useProductData' import { useMultipleUpload } from '../uploader/hooks/useUploaderData' import { Pages } from '@/config/Pages' import type { ErrorType } from '@/helpers/types' -const CreateFood: FC = () => { +const CreateProduct: FC = () => { const { data } = useGetCategories(); const [isActive, setIsActive] = useState(true) const [isSpecial, setIsSpecial] = useState(false) const [imageFiles, setImageFiles] = useState([]) - const { mutate: createFood, isPending } = useCreateFood() + const { mutate: createProduct, isPending } = useCreateProduct() const { mutate: multipleUpload, isPending: isUploading } = useMultipleUpload() const categories = data?.data?.map(category => ({ @@ -33,7 +33,7 @@ const CreateFood: FC = () => { value: category.id })) || [] - const formik = useFormik({ + const formik = useFormik({ initialValues: { title: '', desc: '', @@ -64,8 +64,8 @@ const CreateFood: FC = () => { mealTypes: Yup.array().of(Yup.string()) }), onSubmit: (values) => { - const submitFood = (imageUrls: string[] = []) => { - const foodData: CreateFoodType = { + const submitProduct = (imageUrls: string[] = []) => { + const productData: CreateProductType = { ...values, isActive, isSpecialOffer: isSpecial, @@ -73,10 +73,10 @@ const CreateFood: FC = () => { content: values.content.filter(item => item && item.trim().length > 0) } - createFood(foodData, { + createProduct(productData, { onSuccess: () => { toast.success('کالا با موفقیت ایجاد شد') - window.location.href = Pages.foods.list + window.location.href = Pages.products.list }, onError: (error: ErrorType) => { toast.error(error?.response?.data?.error?.message[0] || 'خطا در ایجاد کالا') @@ -88,14 +88,14 @@ const CreateFood: FC = () => { multipleUpload(imageFiles, { onSuccess: (response) => { const imageUrls = response?.data?.map(item => item.url) || [] - submitFood(imageUrls) + submitProduct(imageUrls) }, onError: (error: ErrorType) => { toast.error(error?.response?.data?.error?.message[0] || 'خطا در آپلود تصاویر') } }) } else { - submitFood() + submitProduct() } } }) @@ -279,7 +279,7 @@ const CreateFood: FC = () => {
- { ) } -export default CreateFood \ No newline at end of file +export default CreateProduct diff --git a/src/pages/food/List.tsx b/src/pages/product/List.tsx similarity index 64% rename from src/pages/food/List.tsx rename to src/pages/product/List.tsx index 073aaa9..a434c50 100644 --- a/src/pages/food/List.tsx +++ b/src/pages/product/List.tsx @@ -3,42 +3,42 @@ import Table from '@/components/Table' import Filters from '@/components/Filters' import { Add } from 'iconsax-react' import Button from '@/components/Button' -import { useGetFoods, useDeleteFood } from './hooks/useFoodData' -import { useFoodFilters } from './hooks/useFoodFilters' -import { getFoodTableColumns } from './components/FoodTableColumns' -import { useFoodFiltersFields } from './components/FoodFiltersFields' +import { useGetProducts, useDeleteProduct } from './hooks/useProductData' +import { useProductFilters } from './hooks/useProductFilters' +import { getProductTableColumns } from './components/ProductTableColumns' +import { useProductFiltersFields } from './components/ProductFiltersFields' import { Link } from 'react-router-dom' import { Pages } from '@/config/Pages' -const FoodsList: FC = () => { +const ProductsList: FC = () => { const { filters, currentPage, apiParams, handleFiltersChange, handlePageChange, - } = useFoodFilters() + } = useProductFilters() - const { data: foodsData, isLoading } = useGetFoods(apiParams, filters) - const { mutate: deleteFood, isPending: isDeleting } = useDeleteFood() + const { data: productsData, isLoading } = useGetProducts(apiParams, filters) + const { mutate: deleteProduct, isPending: isDeleting } = useDeleteProduct() - const foods = foodsData?.data || [] - const columns = getFoodTableColumns({ - onDelete: (id: string) => deleteFood(id), + const products = productsData?.data || [] + const columns = getProductTableColumns({ + onDelete: (id: string) => deleteProduct(id), isDeleting }) - const filterFields = useFoodFiltersFields() + const filterFields = useProductFiltersFields() - const totalPages = foodsData?.meta?.totalPages || 1 + const totalPages = productsData?.meta?.totalPages || 1 return (

لیست کالاها