Files
negareh-admin/src/pages/invoice/service/InvoiceService.ts
T
2026-07-23 18:47:40 +03:30

87 lines
2.4 KiB
TypeScript

import axios from "@/config/axios";
import type {
CreatePreInvoiceType,
GetInvoiceResponseType,
InvoiceItemDetailType,
InvoiceType,
UpdatePreInvoiceType,
} from "../types/Types";
import type { InvoiceConfirmStatus } from "../enum/InvoiceEnum";
import type { BaseResponse } from "@/shared/types/Types";
export type GetInvoicesParams = {
page?: number;
statuses?: InvoiceConfirmStatus[];
search?: string | null;
from?: string | null;
to?: string | null;
};
export type GetInvoiceTabCountsParams = Omit<GetInvoicesParams, "page" | "statuses">;
export type InvoiceTabCountsResponseType = {
pending: number;
confirmed: number;
archived: number;
};
export const createInvoice = async (params: CreatePreInvoiceType) => {
const { data } = await axios.post("/admin/invoice", params);
return data;
};
export const getInvoice = async (
params: GetInvoicesParams = {},
): Promise<GetInvoiceResponseType> => {
const { page = 1, statuses, search, from, to } = params;
const { data } = await axios.get<GetInvoiceResponseType>("/admin/invoice", {
params: {
page,
...(statuses?.length ? { statuses: statuses.join(",") } : {}),
...(search ? { search } : {}),
...(from ? { from } : {}),
...(to ? { to } : {}),
},
});
return data;
};
export const getInvoiceTabCounts = async (
params: GetInvoiceTabCountsParams = {},
): Promise<InvoiceTabCountsResponseType> => {
const { search, from, to } = params;
const { data } = await axios.get<BaseResponse<InvoiceTabCountsResponseType>>(
"/admin/invoice/tab-counts",
{
params: {
...(search ? { search } : {}),
...(from ? { from } : {}),
...(to ? { to } : {}),
},
},
);
return data.data;
};
export const getInvoiceById = async (id: string) => {
const { data } = await axios.get<{ data: InvoiceType }>(`/admin/invoice/${id}`);
return data;
};
export const getInvoiceItemById = async (id: string) => {
const { data } = await axios.get<{ data: InvoiceItemDetailType }>(
`/admin/invoice/item/${id}`,
);
return data;
};
export const updateInvoice = async (id: string, params: UpdatePreInvoiceType) => {
const { data } = await axios.patch(`/admin/invoice/${id}`, params);
return data;
};
export const archiveInvoice = async (id: string) => {
const { data } = await axios.patch(`/admin/invoice/${id}/archive`);
return data;
};