// frontend/dashboard/src/api/services/salesApi.ts /** * Sales data API service */ import { ApiClient } from '../base/apiClient'; import { SalesRecord, CreateSalesRequest, ApiResponse, } from '../../types/api'; export interface SalesQuery { start_date?: string; end_date?: string; product_name?: string; limit?: number; offset?: number; } export class SalesApi { constructor(private client: ApiClient) {} async getSales(query: SalesQuery = {}): Promise { return this.client.get('/data/sales', { params: query, }); } async createSalesRecord(salesData: CreateSalesRequest): Promise { return this.client.post('/data/sales', salesData); } async updateSalesRecord(id: string, updates: Partial): Promise { return this.client.patch(`/data/sales/${id}`, updates); } async deleteSalesRecord(id: string): Promise { return this.client.delete(`/data/sales/${id}`); } async bulkCreateSales(salesData: CreateSalesRequest[]): Promise { return this.client.post('/data/sales/bulk', salesData); } async uploadSalesFile( file: File, onProgress?: (progress: number) => void ): Promise<{ imported: number; errors: any[] }> { return this.client.uploadFile('/data/sales/upload', file, onProgress); } async getSalesAnalytics( startDate: string, endDate: string ): Promise<{ totalRevenue: number; totalQuantity: number; topProducts: Array<{ product_name: string; quantity: number; revenue: number }>; dailyTrends: Array<{ date: string; quantity: number; revenue: number }>; }> { return this.client.get('/data/sales/analytics', { params: { start_date: startDate, end_date: endDate }, }); } async getProductList(): Promise { return this.client.get('/data/sales/products'); } }