diff --git a/src/pages/invoice/types/Types.ts b/src/pages/invoice/types/Types.ts
index 1f1d49b..6de3d02 100644
--- a/src/pages/invoice/types/Types.ts
+++ b/src/pages/invoice/types/Types.ts
@@ -65,7 +65,6 @@ export type InvoiceProductType = {
category: string;
title: string;
desc: string;
- quantities: number[];
linkUrl: string | null;
isActive: boolean;
images: string[];
diff --git a/src/pages/order/EditOrder.tsx b/src/pages/order/EditOrder.tsx
index 87f56a3..b28e623 100644
--- a/src/pages/order/EditOrder.tsx
+++ b/src/pages/order/EditOrder.tsx
@@ -13,6 +13,7 @@ import Select from '@/components/Select'
import Textarea from '@/components/Textarea'
import UploadBox from '@/components/UploadBox'
import { useGetUsers } from '../user/hooks/useUserData'
+import { useGetAdmins } from '../admin/hooks/useAdminData'
import { useGetCategory } from '@/pages/product/hooks/useProductData'
import { useGetProducts } from './hooks/useOrderData'
import type { UpdateOrderType } from './types/Types'
@@ -34,6 +35,7 @@ const EditOrder: FC = () => {
const navigate = useNavigate()
const { mutate: submitOrder, isPending } = useUpdateOrder()
const { data: users } = useGetUsers()
+ const { data: admins } = useGetAdmins(1, 50)
const { data: categories } = useGetCategory()
const { data: products } = useGetProducts()
const multiUpload = useMultiUpload()
@@ -51,6 +53,7 @@ const EditOrder: FC = () => {
title: '',
attachments: [],
description: '',
+ designerId: '',
},
validationSchema: Yup.object({
userId: Yup.string().required('انتخاب کاربر اجباری است.'),
@@ -58,6 +61,7 @@ const EditOrder: FC = () => {
estimatedDays: Yup.number().required('تخمین روز اجباری است.').min(0, 'باید عدد مثبت باشد'),
productId: Yup.string().required('انتخاب محصول اجباری است.'),
title: Yup.string().required('عنوان اجباری است.'),
+ designerId: Yup.string().required('انتخاب طراح اجباری است.'),
}),
enableReinitialize: true,
onSubmit: async (values) => {
@@ -99,6 +103,7 @@ const EditOrder: FC = () => {
title: order.title ?? '',
attachments: normalizeAttachments(order.attachments ?? []),
description: (order as OrderDetailDataType & { description?: string })?.description ?? '',
+ designerId: order.designer?.id ?? '',
})
}
// eslint-disable-next-line react-hooks/exhaustive-deps
@@ -109,6 +114,24 @@ const EditOrder: FC = () => {
formik.setFieldValue('attachments', attachments)
}
+ const designerSelectItems = (() => {
+ const items =
+ admins?.data?.map((item) => ({
+ label: `${item.firstName} ${item.lastName}`.trim(),
+ value: item.id,
+ })) ?? []
+
+ const currentDesigner = order?.designer
+ if (currentDesigner?.id && !items.some((item) => item.value === currentDesigner.id)) {
+ items.unshift({
+ label: `${currentDesigner.firstName ?? ''} ${currentDesigner.lastName ?? ''}`.trim() || currentDesigner.phone,
+ value: currentDesigner.id,
+ })
+ }
+
+ return items
+ })()
+
return (
@@ -165,6 +188,18 @@ const EditOrder: FC = () => {
+
+
+
{
: ''
}
/>
-
-
-
diff --git a/src/pages/order/components/SingleOrderEdit.tsx b/src/pages/order/components/SingleOrderEdit.tsx
index dc5df30..d1f901d 100644
--- a/src/pages/order/components/SingleOrderEdit.tsx
+++ b/src/pages/order/components/SingleOrderEdit.tsx
@@ -1,7 +1,6 @@
import { useEffect, useState, type FC } from 'react'
import Button from '@/components/Button'
import Input from '@/components/Input'
-import Select from '@/components/Select'
import UploadBox from '@/components/UploadBox'
import VoiceRecorder from '@/components/VoiceRecorder'
import { COLORS } from '@/constants/colors'
@@ -99,9 +98,6 @@ const EditOrder: FC
= ({ addNewItem, initialValues }) => {
const productId = id
const product = data?.data?.find(o => Number(o.id) === Number(productId))
if (product) {
- if (product.quantities[0] !== 0) {
- product.quantities.unshift(0)
- }
setProductSelected(product)
formik.setFieldValue('productId', productId)
}
@@ -147,26 +143,11 @@ const EditOrder: FC = ({ addNewItem, initialValues }) => {
-
diff --git a/src/pages/order/types/Types.ts b/src/pages/order/types/Types.ts
index bd6fa05..1064d42 100644
--- a/src/pages/order/types/Types.ts
+++ b/src/pages/order/types/Types.ts
@@ -60,7 +60,6 @@ export interface Product {
category: string;
title: string;
desc: string;
- quantities: number[];
linkUrl: string | null;
isActive: boolean;
images: string[];
@@ -138,7 +137,7 @@ export type OrderDetailDataType = {
title: string;
type: OrderDetailCategoryType;
user: UserType;
- designer: unknown | null;
+ designer: OrderDetailCreatorType | null;
creator: OrderDetailCreatorType;
orderNumber: number;
status: string;
@@ -247,6 +246,7 @@ export type UpdateOrderType = {
title: string;
attachments: string[];
description: string;
+ designerId: string;
};
export type ConvertToOrderItemType = {
diff --git a/src/pages/product/Create.tsx b/src/pages/product/Create.tsx
index ad5dd5c..0c305f0 100644
--- a/src/pages/product/Create.tsx
+++ b/src/pages/product/Create.tsx
@@ -1,6 +1,5 @@
import Button from '@/components/Button'
import Input from '@/components/Input';
-import { clx } from '@/helpers/utils';
import { useFormik } from 'formik';
import { AddSquare } from 'iconsax-react'
import { useState, type FC } from 'react'
@@ -45,7 +44,6 @@ const CreateProduct: FC = () => {
isActive: true,
linkUrl: '',
order: 1,
- quantities: [],
title: ''
},
validationSchema: Yup.object({
@@ -70,17 +68,6 @@ const CreateProduct: FC = () => {
}
})
- const handleQuantities = (value: number) => {
- const array = [...formik.values.quantities]
- const index: number = array.findIndex(o => o === value)
- if (index > -1) {
- array.splice(index, 1)
- } else {
- array.push(value)
- }
- formik.setFieldValue('quantities', array)
- }
-
return (
@@ -135,26 +122,6 @@ const CreateProduct: FC = () => {
{...formik.getFieldProps('desc')}
/>
-
-
-
بسته تعداد
-
- {
- [100, 150, 200, 250, 300, 350, 500, 1000].map((item) => {
- return (
-
handleQuantities(item)}
- >
- {item}
-
- )
- })
- }
-
-
diff --git a/src/pages/product/Update.tsx b/src/pages/product/Update.tsx
index 0653625..60273c6 100644
--- a/src/pages/product/Update.tsx
+++ b/src/pages/product/Update.tsx
@@ -1,6 +1,5 @@
import Button from '@/components/Button'
import Input from '@/components/Input';
-import { clx } from '@/helpers/utils';
import { useFormik } from 'formik';
import { AddSquare } from 'iconsax-react'
import { useEffect, useState, type FC } from 'react'
@@ -48,7 +47,6 @@ const UpdateProduct: FC = () => {
isActive: true,
linkUrl: '',
order: 1,
- quantities: [],
title: ''
},
validationSchema: Yup.object({
@@ -73,17 +71,6 @@ const UpdateProduct: FC = () => {
}
})
- const handleQuantities = (value: number) => {
- const array = [...formik.values.quantities]
- const index: number = array.findIndex(o => o === value)
- if (index > -1) {
- array.splice(index, 1)
- } else {
- array.push(value)
- }
- formik.setFieldValue('quantities', array)
- }
-
useEffect(() => {
if (product) {
@@ -94,7 +81,6 @@ const UpdateProduct: FC = () => {
isActive: product?.data?.isActive,
linkUrl: product?.data?.linkUrl,
order: product?.data?.order,
- quantities: product?.data?.quantities,
categoryId: product?.data?.category?.id
})
}
@@ -157,26 +143,6 @@ const UpdateProduct: FC = () => {
{...formik.getFieldProps('desc')}
/>
-
-
-
بسته تعداد
-
- {
- [100, 150, 200, 250, 300, 350, 500, 1000].map((item) => {
- return (
-
handleQuantities(item)}
- >
- {item}
-
- )
- })
- }
-
-
diff --git a/src/pages/product/types/Types.ts b/src/pages/product/types/Types.ts
index 5b3b0c9..678815d 100644
--- a/src/pages/product/types/Types.ts
+++ b/src/pages/product/types/Types.ts
@@ -31,7 +31,6 @@ export type CreateProductType = {
title: string,
desc: string,
linkUrl: string,
- quantities: number[],
isActive: boolean,
images: string[],
order: number
@@ -46,7 +45,6 @@ export type ProductType = {
isActive: boolean,
linkUrl: string,
order: number,
- quantities: number[],
title: string
}
diff --git a/src/pages/requests/types/Types.ts b/src/pages/requests/types/Types.ts
index 674f5bd..5aa7762 100644
--- a/src/pages/requests/types/Types.ts
+++ b/src/pages/requests/types/Types.ts
@@ -55,7 +55,6 @@ export type RequestDetailProductType = {
category: string;
title: string;
desc: string;
- quantities: number[];
linkUrl: string | null;
isActive: boolean;
images: string[];