import apiClient from "@/infrastructure/apiClient";
import apiPath from "@/infrastructure/apiPath";

export default {
  // Lấy danh sách giao dịch với phân trang và lọc
  async search(searchModel) {
    try {
      const params = JSON.parse(JSON.stringify(searchModel));
      const response = await apiClient.post(apiPath.transaction.searchWalletTransactions, params);
      return response.data;
    } catch (error) {
      console.error("Error searching transactions:", error);
      return { Result: 2, Message: "Lỗi khi tìm kiếm giao dịch", Data: { Items: [], TotalCount: 0 } };
    }
  },

  // Lấy chi tiết giao dịch theo ID
  async getById(id) {
    try {
      const response = await apiClient.get(`${apiPath.transaction.getById}${id}`);
      return response.data;
    } catch (error) {
      console.error("Error getting transaction details:", error);
      return null;
    }
  },

  // Lấy thống kê giao dịch của ví
  async getStatistics(walletId, startDate = null, endDate = null) {
    try {
      let url = `${apiPath.transaction.getStatistics}${walletId}`;
      const params = new URLSearchParams();
      
      if (startDate) {
        params.append('startDate', startDate);
      }
      if (endDate) {
        params.append('endDate', endDate);
      }
      
      if (params.toString()) {
        url += `?${params.toString()}`;
      }
      
      const response = await apiClient.get(url);
      return response.data;
    } catch (error) {
      console.error("Error getting transaction statistics:", error);
      return { Result: 2, Message: "Lỗi khi lấy thống kê giao dịch", Data: null };
    }
  },

  // Lấy lịch sử số dư ví
  async getBalanceHistory(walletId, startDate = null, endDate = null) {
    try {
      let url = `${apiPath.transaction.getBalanceHistory}${walletId}`;
      const params = new URLSearchParams();
      
      if (startDate) {
        params.append('startDate', startDate);
      }
      if (endDate) {
        params.append('endDate', endDate);
      }
      
      if (params.toString()) {
        url += `?${params.toString()}`;
      }
      
      const response = await apiClient.get(url);
      return response.data;
    } catch (error) {
      console.error("Error getting balance history:", error);
      return { Result: 2, Message: "Lỗi khi lấy lịch sử số dư", Data: null };
    }
  },
};
