81 lines
2.2 KiB
TypeScript
81 lines
2.2 KiB
TypeScript
import axios from "@/config/axios";
|
|
import type {
|
|
AddTicketType,
|
|
AttributeResponseType,
|
|
MyOrdersResponseType,
|
|
OrderDetailResponseType,
|
|
OrderType,
|
|
ProductsResponseType,
|
|
TicketsResponseType,
|
|
} from "../type/Types";
|
|
import { OrderStatusEnum, TabMyOrdersEnum } from "../enum/OrderEnum";
|
|
|
|
export const getProducts = async () => {
|
|
const { data } = await axios.get<ProductsResponseType>(`/public/products`);
|
|
return data;
|
|
};
|
|
|
|
export const getAttributes = async (productId?: string) => {
|
|
const { data } = await axios.get<AttributeResponseType>(
|
|
`/public/entity/${productId}/field`,
|
|
);
|
|
return data;
|
|
};
|
|
|
|
export const submitOrder = async (params: OrderType[]) => {
|
|
const { data } = await axios.post(`/public/orders`, { items: params });
|
|
return data;
|
|
};
|
|
|
|
export const getMyOrders = async (
|
|
page: number = 1,
|
|
active: TabMyOrdersEnum,
|
|
) => {
|
|
const statuses =
|
|
active === TabMyOrdersEnum.IN_PROGRESS
|
|
? [
|
|
OrderStatusEnum.DESIGN_FINISHED,
|
|
OrderStatusEnum.DESIGN_INITIATED,
|
|
OrderStatusEnum.DESIGN_REVISION,
|
|
OrderStatusEnum.IN_PRINTING,
|
|
OrderStatusEnum.AFTER_PRINT_BOXING,
|
|
OrderStatusEnum.AFTER_PRINT_CARTONING,
|
|
OrderStatusEnum.AFTER_PRINT_COVER,
|
|
OrderStatusEnum.READY_FOR_DELIVERY,
|
|
OrderStatusEnum.READY_TO_PRINTING,
|
|
]
|
|
: active === TabMyOrdersEnum.CANCELLED
|
|
? [OrderStatusEnum.CANCELED]
|
|
: active === TabMyOrdersEnum.DELIVERED
|
|
? [OrderStatusEnum.DELIVERED]
|
|
: undefined;
|
|
|
|
let query = `?page=${page}`;
|
|
if (statuses) {
|
|
query += `&statuses=${statuses}`;
|
|
}
|
|
const { data } = await axios.get<MyOrdersResponseType>(
|
|
`/public/orders${query}`,
|
|
);
|
|
return data;
|
|
};
|
|
|
|
export const getOrderDetails = async (id: string) => {
|
|
const { data } = await axios.get<OrderDetailResponseType>(
|
|
`/public/orders/${id}`,
|
|
);
|
|
return data;
|
|
};
|
|
|
|
export const getTickets = async (id: string) => {
|
|
const { data } = await axios.get<TicketsResponseType>(
|
|
`/public/ticket/order/item/${id}`,
|
|
);
|
|
return data;
|
|
};
|
|
|
|
export const addTicket = async (id: string, params: AddTicketType) => {
|
|
const { data } = await axios.post(`/public/ticket/order/item/${id}`, params);
|
|
return data;
|
|
};
|