import apiClient from "../api-client";
import {
  CartResponse,
} from "../types/models/shopping-cart";

export default class shoppingCartService {
  static getShoppingCart = async (
    token: string,
    status: string = 'incart'
  ): Promise<CartResponse> => {
    try {
      const response = await apiClient.get<CartResponse>(`/api/order-detail?checkStatus=${status}`, {
        headers: { token: token },
      });
      return response.data;
    } catch (error) {
      console.error(`Error in shoppingCartService:getShoppingCart`, error);
      throw error;
    }
  };

  static removeItemCart = async (
    token: string,
    id: string
  ): Promise<CartResponse> => {
    try {
      const response = await apiClient.delete<CartResponse>(`/api/order-detail/${id}`, {
        headers: { token: token },
      });
      return response.data;
    } catch (error) {
      console.error(`Error in shoppingCartService:removeItemCart`, error);
      throw error;
    }
  };

  static clearShoppingCart = async (token: string) => {
    try {
      const response = await apiClient.post(
        `/api/clear-cart`,
        {
          headers: {
            token: token,
          },
        }
      );
      return response.data;
    } catch (error) {
      console.error(`Error in shoppingCartService:clearShoppingCart`, error);
      throw error;
    }
  };

  static updateCartItem = async (token: string, items: string[]) => {
    try {
      const response = await apiClient.post(
        `/api/update-cart-items`,
        { token: token, items: items },
        {
          headers: {
            token: token,
          },
        }
      );
      return response.data;
    } catch (error) {
      console.error(`Error in shoppingCartService:updateCartItem`, error);
      throw error;
    }
  };
}
