diff --git a/src/pages/home/components/ServiceItem.tsx b/src/pages/home/components/ServiceItem.tsx
index ad67b49..ff44a81 100644
--- a/src/pages/home/components/ServiceItem.tsx
+++ b/src/pages/home/components/ServiceItem.tsx
@@ -1,10 +1,11 @@
import { type FC } from 'react'
+import { type ProductType } from '@/pages/request/type/Types'
-const ServiceItem: FC = () => {
+const ServiceItem: FC<{ product: ProductType }> = ({ product }) => {
return (
-
+
)
diff --git a/src/pages/home/components/Services.tsx b/src/pages/home/components/Services.tsx
index 94ccee7..4d5fa6b 100644
--- a/src/pages/home/components/Services.tsx
+++ b/src/pages/home/components/Services.tsx
@@ -2,9 +2,11 @@ import { t } from '@/locale'
import { type FC } from 'react'
import { Swiper, SwiperSlide } from 'swiper/react'
import ServiceItem from './ServiceItem'
+import { useGetProducts } from '@/pages/request/hooks/useRequestData'
const Services: FC = () => {
+ const { data } = useGetProducts();
return (
@@ -22,18 +24,13 @@ const Services: FC = () => {
},
}}
>
-
-
-
-
-
-
-
-
-
-
-
-
+ {
+ data?.data.map((item) => (
+
+
+
+ ))
+ }
diff --git a/src/pages/home/components/StatCard.tsx b/src/pages/home/components/StatCard.tsx
index c36b92c..50a4e7c 100644
--- a/src/pages/home/components/StatCard.tsx
+++ b/src/pages/home/components/StatCard.tsx
@@ -4,7 +4,7 @@ import { type FC, type ReactNode } from 'react'
type Props = {
icon: ReactNode,
- count: number,
+ count: number | undefined,
description: string
}
diff --git a/src/pages/home/components/Stats.tsx b/src/pages/home/components/Stats.tsx
index 2e0753a..12953a2 100644
--- a/src/pages/home/components/Stats.tsx
+++ b/src/pages/home/components/Stats.tsx
@@ -4,8 +4,12 @@ import { t } from '@/locale'
import { BoxTick, BoxTime, ReceiptText, TruckTick } from 'iconsax-react'
import { type FC } from 'react'
import StatCard from './StatCard'
+import { useGetOrderStats } from '@/pages/order/hooks/useOrderData'
const Stats: FC = () => {
+
+ const { data } = useGetOrderStats();
+
return (
{
className='mt-5'
>
{
/>}
/>
{
/>}
/>
{
/>}
/>
{
return useQuery({
- queryKey: ['my-orders', page, statuses],
+ queryKey: ["my-orders", page, statuses],
queryFn: () => api.getMyOrders(page, statuses),
- })
-}
+ });
+};
export const useGetOrderDetails = (id: string) => {
return useQuery({
- queryKey: ['order', id],
+ queryKey: ["order", id],
queryFn: () => api.getOrderDetails(id),
enabled: !!id,
- })
-}
+ });
+};
export const useGetTickets = (orderId: string) => {
return useQuery({
- queryKey: ['tickets', orderId],
+ queryKey: ["tickets", orderId],
queryFn: () => api.getTickets(orderId),
enabled: !!orderId,
- })
-}
+ });
+};
export const useAddTicket = () => {
return useMutation({
@@ -35,8 +35,15 @@ export const useAddTicket = () => {
requestId,
params,
}: {
- requestId: string
- params: AddTicketType
+ requestId: string;
+ params: AddTicketType;
}) => api.addTicket(requestId, params),
- })
-}
+ });
+};
+
+export const useGetOrderStats = () => {
+ return useQuery({
+ queryKey: ["order-stats"],
+ queryFn: api.getOrderStats,
+ });
+};
diff --git a/src/pages/order/service/OrderService.ts b/src/pages/order/service/OrderService.ts
index b3047f0..5839303 100644
--- a/src/pages/order/service/OrderService.ts
+++ b/src/pages/order/service/OrderService.ts
@@ -1,11 +1,12 @@
-import axios from '@/config/axios'
+import axios from "@/config/axios";
import type {
AddTicketType,
MyOrdersResponseType,
OrderDetailResponseType,
+ OrderStatsResponseType,
TicketsResponseType,
-} from '../type/Types'
-import { RequestStatusEnum, TabMyRequestsEnum } from '../enum/OrderEnum'
+} from "../type/Types";
+import { RequestStatusEnum, TabMyRequestsEnum } from "../enum/OrderEnum";
export const getMyOrders = async (
page: number = 1,
@@ -25,36 +26,41 @@ export const getMyOrders = async (
RequestStatusEnum.READY_TO_PRINTING,
]
: active === TabMyRequestsEnum.CANCELLED
- ? [RequestStatusEnum.CANCELED]
- : active === TabMyRequestsEnum.DELIVERED
- ? [RequestStatusEnum.DELIVERED]
- : undefined
+ ? [RequestStatusEnum.CANCELED]
+ : active === TabMyRequestsEnum.DELIVERED
+ ? [RequestStatusEnum.DELIVERED]
+ : undefined;
- let query = `?page=${page}`
+ let query = `?page=${page}`;
if (statuses) {
- query += `&statuses=${statuses}`
+ query += `&statuses=${statuses}`;
}
const { data } = await axios.get(
`/public/orders${query}`,
- )
- return data
-}
+ );
+ return data;
+};
export const getOrderDetails = async (id: string) => {
const { data } = await axios.get(
`/public/orders/${id}`,
- )
- return data
-}
+ );
+ return data;
+};
export const getTickets = async (id: string) => {
const { data } = await axios.get(
`/public/ticket/ref/${id}`,
- )
- return data
-}
+ );
+ return data;
+};
export const addTicket = async (id: string, params: AddTicketType) => {
- const { data } = await axios.post(`/public/ticket/ref/${id}`, params)
- return data
-}
+ const { data } = await axios.post(`/public/ticket/ref/${id}`, params);
+ return data;
+};
+
+export const getOrderStats = async () => {
+ const { data } = await axios.get(`/public/orders/stats`);
+ return data;
+};
diff --git a/src/pages/order/type/Types.ts b/src/pages/order/type/Types.ts
index f1563e5..0b9f9bc 100644
--- a/src/pages/order/type/Types.ts
+++ b/src/pages/order/type/Types.ts
@@ -55,3 +55,12 @@ export interface OrderType extends RowDataType {
export type MyOrdersResponseType = BaseResponse
export type OrderDetailResponseType = BaseResponse
+
+export type OrderStatsType = {
+ requestsCount: number
+ invoicesCount: number
+ inProgressOrdersCount: number
+ completedOrdersCount: number
+}
+
+export type OrderStatsResponseType = BaseResponse