This commit is contained in:
hamid zarghami
2026-02-22 16:30:11 +03:30
parent 0d25091e71
commit b308150303
20 changed files with 890 additions and 263 deletions
@@ -0,0 +1,80 @@
import axios from "@/config/axios";
import type {
AddTicketType,
AttributeResponseType,
MyRequestsResponseType,
RequestDetailResponseType,
RequestType,
ProductsResponseType,
TicketsResponseType,
} from "../type/Types";
import { RequestStatusEnum, TabMyRequestsEnum } from "../enum/RequestEnum";
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 submitRequest = async (params: RequestType[]) => {
const { data } = await axios.post(`/public/request`, { items: params });
return data;
};
export const getMyRequests = async (
page: number = 1,
active: TabMyRequestsEnum,
) => {
const statuses =
active === TabMyRequestsEnum.IN_PROGRESS
? [
RequestStatusEnum.DESIGN_FINISHED,
RequestStatusEnum.DESIGN_INITIATED,
RequestStatusEnum.DESIGN_REVISION,
RequestStatusEnum.IN_PRINTING,
RequestStatusEnum.AFTER_PRINT_BOXING,
RequestStatusEnum.AFTER_PRINT_CARTONING,
RequestStatusEnum.AFTER_PRINT_COVER,
RequestStatusEnum.READY_FOR_DELIVERY,
RequestStatusEnum.READY_TO_PRINTING,
]
: active === TabMyRequestsEnum.CANCELLED
? [RequestStatusEnum.CANCELED]
: active === TabMyRequestsEnum.DELIVERED
? [RequestStatusEnum.DELIVERED]
: undefined;
let query = `?page=${page}`;
if (statuses) {
query += `&statuses=${statuses}`;
}
const { data } = await axios.get<MyRequestsResponseType>(
`/public/request${query}`,
);
return data;
};
export const getRequestDetails = async (id: string) => {
const { data } = await axios.get<RequestDetailResponseType>(
`/public/request/${id}`,
);
return data;
};
export const getTickets = async (id: string) => {
const { data } = await axios.get<TicketsResponseType>(
`/public/ticket/ref/${id}`,
);
return data;
};
export const addTicket = async (id: string, params: AddTicketType) => {
const { data } = await axios.post(`/public/ticket/ref/${id}`, params);
return data;
};