import api from './api'; export interface CreateOrderRequest { shippingAddress: string; items: { productId: number; quantity: number; }[]; } export interface OrderItem { orderItemId: number; productId: number; productName: string; quantity: number; price: number; subtotal: number; } export interface Order { orderId: number; userId: number; userName: string; totalPrice: number; orderStatus: string; shippingAddress: string; createdAt: string; updatedAt: string; orderItems: OrderItem[]; } export interface OrderProgress { orderId: number; orderStatus: string; timeline: { status: string; timestamp: string | null; completed: boolean; }[]; } export interface ApiResponse { success: boolean; message?: string; data?: T; total?: number; } class OrderApiService { /** * Tạo đơn hàng */ async createOrder(userId: number,orderData: CreateOrderRequest): Promise> { try { return await api.post(`/orders/${userId}`, orderData, { requireAuth: true }); } catch (error) { console.error('Create order error:', error); throw error; } } /** * Lấy tất cả đơn hàng */ async getAllOrders(): Promise> { try { return await api.get>('/orders', { requireAuth: true }); } catch (error) { console.error('Get all orders error:', error); throw error; } } /** * Lọc đơn hàng theo trạng thái */ async getOrdersByStatus(status: string): Promise> { try { return await api.get>( `/orders/filter?status=${status}`, { requireAuth: true } ); } catch (error) { console.error('Get orders by status error:', error); throw error; } } /** * Lấy chi tiết đơn hàng */ async getOrderDetail(orderId: number): Promise> { try { return await api.get>(`/orders/${orderId}`, { requireAuth: true }); } catch (error) { console.error('Get order detail error:', error); throw error; } } /** * Lấy tiến độ đơn hàng */ async getOrderProgress(orderId: number): Promise> { try { return api.get(`/orders/${orderId}/progress`, { requireAuth: true }); } catch (error) { console.error('Get order progress error:', error); throw error; } } /** * Hủy đơn hàng */ async cancelOrder(orderId: number): Promise> { try { return await api.put>( `/orders/${orderId}/cancel`, undefined, { requireAuth: true } ); } catch (error) { console.error('Cancel order error:', error); throw error; } } } export default new OrderApiService();