import { axiosClient } from "@/lib/axios";
import { PaginationMeta } from "@/lib/pagination";

export interface AdminTransaction {
  id: string;
  amount: string;
  method: string;
  status: "INITIATED" | "SUCCESS" | "FAILED" | "REFUNDED";
  transactionRef: string | null;
  paidAt: string | null;
  createdAt: string;
  invoice: {
    id: string;
    invoiceNumber: string;
    totalAmount: string;
    status: string;
    task: { id: string; title: string } | null;
  };
  client: { id: string; name: string; email: string; companyName: string | null };
}

export const adminTransactionService = {
  getTransactions: async (params: {
    page?: number;
    limit?: number;
    status?: string;
  }): Promise<{ data: AdminTransaction[]; meta: PaginationMeta }> => {
    const qs = new URLSearchParams();
    qs.set("page", String(params.page ?? 1));
    qs.set("limit", String(params.limit ?? 20));
    if (params.status && params.status !== "ALL") qs.set("status", params.status);
    const res = await axiosClient.get(`/payments/admin/transactions?${qs.toString()}`);
    return res.data.data;
  },
};
