proposal-system/mobile/src/lib/api/lineItems.ts

51 lines
1.2 KiB
TypeScript
Raw Normal View History

import apiClient from './client';
import type { PricingMode, LineItemSource } from '@proposal-system/api-contracts';
export interface LineItem {
id: string;
proposalId: string;
description: string;
quantity: number;
unit: string;
unitPrice: number | null;
totalPrice: number;
pricingMode: PricingMode;
sortOrder: number;
source: LineItemSource;
createdAt: string;
updatedAt: string;
}
export interface UpdateLineItemEntry {
id: string | null;
description: string;
quantity: number;
unit: string;
unitPrice: number | null;
totalPrice: number;
pricingMode: PricingMode;
sortOrder: number;
source: LineItemSource;
}
export const lineItemsApi = {
getAll: async (proposalId: string): Promise<LineItem[]> => {
const res = await apiClient.get(`/proposals/${proposalId}/line-items`);
return res.data;
},
bulkUpdate: async (
proposalId: string,
lineItems: UpdateLineItemEntry[],
): Promise<LineItem[]> => {
const res = await apiClient.put(`/proposals/${proposalId}/line-items`, {
lineItems,
});
return res.data;
},
delete: async (proposalId: string, itemId: string): Promise<void> => {
await apiClient.delete(`/proposals/${proposalId}/line-items/${itemId}`);
},
};