first commit
This commit is contained in:
70
frontend/src/api/services/salesApi.ts
Normal file
70
frontend/src/api/services/salesApi.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
// 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<SalesRecord[]> {
|
||||
return this.client.get<SalesRecord[]>('/data/sales', {
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
async createSalesRecord(salesData: CreateSalesRequest): Promise<SalesRecord> {
|
||||
return this.client.post<SalesRecord>('/data/sales', salesData);
|
||||
}
|
||||
|
||||
async updateSalesRecord(id: string, updates: Partial<CreateSalesRequest>): Promise<SalesRecord> {
|
||||
return this.client.patch<SalesRecord>(`/data/sales/${id}`, updates);
|
||||
}
|
||||
|
||||
async deleteSalesRecord(id: string): Promise<void> {
|
||||
return this.client.delete(`/data/sales/${id}`);
|
||||
}
|
||||
|
||||
async bulkCreateSales(salesData: CreateSalesRequest[]): Promise<SalesRecord[]> {
|
||||
return this.client.post<SalesRecord[]>('/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<string[]> {
|
||||
return this.client.get<string[]>('/data/sales/products');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user