import api from './api'; export interface CartItem { cartItemId: number; productId: number; productName: string; productImage: string; quantity: number; price: number; subtotal: number; } export interface CartResponse { cartId: number; userId: number; items: CartItem[]; totalAmount: number; totalItems: number; createdAt: string; } export interface AddToCartRequest { productId: number; quantity: number; } export interface UpdateCartItemRequest { quantity: number; } const cartService = { // Thêm sản phẩm vào giỏ hàng addToCart: async (userId: number, data: AddToCartRequest): Promise => { console.log('=== ADD TO CART REQUEST ===', { userId, data }); const response = await api.post( `/cart/${userId}`, data, { requireAuth: true } ); console.log('=== ADD TO CART RESPONSE ===', response); return response; }, // Lấy danh sách sản phẩm trong giỏ hàng getCart: async (userId: number): Promise => { console.log('=== GET CART REQUEST ===', { userId }); const response = await api.get( `/cart/${userId}`, { requireAuth: true } ); console.log('=== GET CART RESPONSE ===', response); return response; }, // Cập nhật số lượng sản phẩm updateCartItem: async ( userId: number, cartItemId: number, data: UpdateCartItemRequest ): Promise => { console.log('=== UPDATE CART ITEM REQUEST ===', { userId, cartItemId, data }); const response = await api.put( `/cart/${userId}/items/${cartItemId}`, data, { requireAuth: true } ); console.log('=== UPDATE CART ITEM RESPONSE ===', response); return response; }, // Xóa một sản phẩm khỏi giỏ hàng removeCartItem: async (userId: number, cartItemId: number): Promise => { console.log('=== REMOVE CART ITEM REQUEST ===', { userId, cartItemId }); const response = await api.delete( `/cart/${userId}/items/${cartItemId}`, { requireAuth: true } ); console.log('=== REMOVE CART ITEM RESPONSE ===', response); return response; }, // Xóa tất cả sản phẩm khỏi giỏ hàng clearCart: async (userId: number): Promise => { console.log('=== CLEAR CART REQUEST ===', { userId }); await api.delete( `/cart/${userId}/clear`, { requireAuth: true } ); console.log('=== CLEAR CART SUCCESS ==='); }, }; export default cartService;