From 658e23d4e3baaa142bb0d4ee634299759f9b028f Mon Sep 17 00:00:00 2001 From: ilnaz <237x237@gmail.com> Date: Sat, 8 Feb 2025 22:36:30 +0300 Subject: [PATCH] fix: place orders in the model --- src/__data__/service/api.ts | 11 +++--- src/components/MasterDrawer/MasterDrawer.tsx | 4 +- src/components/OrderItem/OrderItem.tsx | 33 ++-------------- src/models/api/index.ts | 1 + src/models/api/order.ts | 40 +++++++++++++++++--- 5 files changed, 45 insertions(+), 44 deletions(-) diff --git a/src/__data__/service/api.ts b/src/__data__/service/api.ts index f636621..962a0f4 100644 --- a/src/__data__/service/api.ts +++ b/src/__data__/service/api.ts @@ -2,16 +2,15 @@ import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; import { getConfigValue } from '@brojs/cli'; import dayjs from 'dayjs'; -import { Master } from '../../models/api/master'; -import { OrderProps } from '../../components/OrderItem/OrderItem'; +import { Master, OrderArm } from '../../models/api'; import { extractBodyFromResponse } from './utils'; export type UpdateMasterPayload = Required> & Partial>; -type UpdateOrderProps = Required> & - Partial> & { +type UpdateOrderProps = Required> & + Partial> & { master?: string; }; @@ -33,7 +32,7 @@ export const api = createApi({ }), invalidatesTags: ['Orders'], }), - getOrders: builder.query({ + getOrders: builder.query({ query: ({ date }) => { const startDate = dayjs(date).startOf('day').toISOString(); const endDate = dayjs(date).endOf('day').toISOString(); @@ -43,7 +42,7 @@ export const api = createApi({ body: { startDate, endDate }, }; }, - transformResponse: extractBodyFromResponse, + transformResponse: extractBodyFromResponse, providesTags: ['Orders'], }), diff --git a/src/components/MasterDrawer/MasterDrawer.tsx b/src/components/MasterDrawer/MasterDrawer.tsx index c1c3c1d..680b1e7 100644 --- a/src/components/MasterDrawer/MasterDrawer.tsx +++ b/src/components/MasterDrawer/MasterDrawer.tsx @@ -19,7 +19,7 @@ import { import { useTranslation } from 'react-i18next'; import { PhoneIcon } from '@chakra-ui/icons'; -import { api } from '../../__data__/service/api'; +import { useAddMasterMutation } from '../../__data__/service/api'; import { DrawerInputs } from '../../models/arm/form'; import useShowToast from '../../hooks/useShowToast'; @@ -56,7 +56,7 @@ const MasterDrawer = ({ isOpen, onClose }: MasterDrawerProps) => { await addMaster(trimMaster); }; - const [addMaster, { error, isSuccess }] = api.useAddMasterMutation(); + const [addMaster, { error, isSuccess }] = useAddMasterMutation(); const showToast = useShowToast(); useEffect(() => { diff --git a/src/components/OrderItem/OrderItem.tsx b/src/components/OrderItem/OrderItem.tsx index fd33955..bba3c82 100644 --- a/src/components/OrderItem/OrderItem.tsx +++ b/src/components/OrderItem/OrderItem.tsx @@ -4,35 +4,8 @@ import { useTranslation } from 'react-i18next'; import dayjs from 'dayjs'; import { getTimeSlot } from '../../lib'; -import { Master } from '../../models/api/master'; import { useUpdateOrdersMutation } from '../../__data__/service/api'; - -const statuses = [ - 'pending' as const, - 'progress' as const, - 'working' as const, - 'canceled' as const, - 'complete' as const, -]; - -type GetArrItemType = - ArrType extends Array ? ItemType : never; - -export type OrderProps = { - carNumber?: string; - startWashTime?: string; - endWashTime?: string; - orderDate?: string; - status?: GetArrItemType; - phone?: string; - location?: string; - master: Master; - notes: ''; - allMasters: Master[]; - id: string; -}; - -type Status = (typeof statuses)[number]; +import { OrderArm, Status, statuses } from '../../models/api'; const statusColors: Record = { pending: 'yellow.100', @@ -53,7 +26,7 @@ const OrderItem = ({ master, allMasters, id, -}: OrderProps) => { +}: OrderArm) => { const [updateOrders] = useUpdateOrdersMutation(); const { t } = useTranslation('~', { keyPrefix: 'dry-wash.arm.order', @@ -78,7 +51,7 @@ const OrderItem = ({ }; const handeChangeStatus = (e: ChangeEvent) => { - const status = e.target.value as OrderProps['status']; + const status = e.target.value as OrderArm['status']; updateOrders({ id, status }); setStatus(status); }; diff --git a/src/models/api/index.ts b/src/models/api/index.ts index 16ed054..4a80fad 100644 --- a/src/models/api/index.ts +++ b/src/models/api/index.ts @@ -1,2 +1,3 @@ export * from './common'; export * from './order'; +export * from './master'; diff --git a/src/models/api/order.ts b/src/models/api/order.ts index e622348..dabe6f9 100644 --- a/src/models/api/order.ts +++ b/src/models/api/order.ts @@ -1,21 +1,49 @@ /* eslint-disable @typescript-eslint/no-namespace */ -import { Order } from "../landing"; +import { Order } from '../landing'; -import { ErrorMessage } from "./common"; +import { ErrorMessage } from './common'; +import { Master } from './master'; export namespace GetOrder { export type Response = Order.View; export type Params = { - orderId: Order.Id + orderId: Order.Id; }; export type Error = ErrorMessage; } export namespace CreateOrder { export type Response = { - id: Order.Id + id: Order.Id; }; export type Params = { - body: Order.Create + body: Order.Create; }; -}; \ No newline at end of file +} + +type GetArrItemType = + ArrType extends Array ? ItemType : never; + +export const statuses = [ + 'pending' as const, + 'progress' as const, + 'working' as const, + 'canceled' as const, + 'complete' as const, +]; + +export type Status = (typeof statuses)[number]; + +export type OrderArm = { + carNumber?: string; + startWashTime?: string; + endWashTime?: string; + orderDate?: string; + status?: GetArrItemType; + phone?: string; + location?: string; + master: Master; + notes: ''; + allMasters: Master[]; + id: string; +};