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 = () => {
+ ({ @@ -179,7 +214,9 @@ const EditOrder: FC = () => { formik.touched.typeId && formik.errors.typeId ? formik.errors.typeId : '' } /> +
+
{ : '' } /> -
-
= ({ addNewItem }) => { const productId = e.target.value 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) } @@ -123,26 +119,11 @@ const Order: FC = ({ addNewItem }) => {
-
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[];