mirror of
https://github.com/Sea-Haven-Industries/proposal-system.git
synced 2026-10-07 16:18:57 +00:00
73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
|
|
import apiClient from './client';
|
||
|
|
|
||
|
|
export interface PricingLibraryItem {
|
||
|
|
id: string;
|
||
|
|
title: string;
|
||
|
|
description?: string | null;
|
||
|
|
serviceCategory: string;
|
||
|
|
unit?: string | null;
|
||
|
|
unitPrice?: number | null;
|
||
|
|
keywords?: string | null;
|
||
|
|
source: string;
|
||
|
|
createdAt: string;
|
||
|
|
updatedAt: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface PricingLibraryListParams {
|
||
|
|
page?: number;
|
||
|
|
pageSize?: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface PagedPricingLibraryResponse {
|
||
|
|
items: PricingLibraryItem[];
|
||
|
|
totalCount: number;
|
||
|
|
page: number;
|
||
|
|
pageSize: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface CreatePricingLibraryItemRequest {
|
||
|
|
title: string;
|
||
|
|
serviceCategory: string;
|
||
|
|
description?: string;
|
||
|
|
unit?: string;
|
||
|
|
unitPrice?: number | null;
|
||
|
|
keywords?: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface UpdatePricingLibraryItemRequest {
|
||
|
|
title: string;
|
||
|
|
serviceCategory: string;
|
||
|
|
description?: string;
|
||
|
|
unit?: string;
|
||
|
|
unitPrice?: number | null;
|
||
|
|
keywords?: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
export const pricingLibraryApi = {
|
||
|
|
/** GET /api/pricing-library/list?page=&pageSize= — paginated list (admin/sysadmin). */
|
||
|
|
list: async (params: PricingLibraryListParams = {}): Promise<PagedPricingLibraryResponse> => {
|
||
|
|
const qs = new URLSearchParams();
|
||
|
|
if (params.page) qs.append('page', String(params.page));
|
||
|
|
if (params.pageSize) qs.append('pageSize', String(params.pageSize));
|
||
|
|
const res = await apiClient.get(`/pricing-library/list?${qs.toString()}`);
|
||
|
|
return res.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
/** POST /api/pricing-library — create a new pricing library item. */
|
||
|
|
create: async (data: CreatePricingLibraryItemRequest): Promise<PricingLibraryItem> => {
|
||
|
|
const res = await apiClient.post('/pricing-library', data);
|
||
|
|
return res.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
/** PUT /api/pricing-library/{id} — update an existing pricing library item. */
|
||
|
|
update: async (id: string, data: UpdatePricingLibraryItemRequest): Promise<PricingLibraryItem> => {
|
||
|
|
const res = await apiClient.put(`/pricing-library/${id}`, data);
|
||
|
|
return res.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
/** DELETE /api/pricing-library/{id} — delete a pricing library item. */
|
||
|
|
remove: async (id: string): Promise<void> => {
|
||
|
|
await apiClient.delete(`/pricing-library/${id}`);
|
||
|
|
},
|
||
|
|
};
|