import { apiClient } from "@/src/app/api/client";

export interface PaymentStatusResponse {
  status: boolean;
  message: string;
  data?: {
    registration_id: string;
    payment_status?: string | null;
    invoice_status?: string | null;
    payment_intent_id?: string | null;
    is_paid: boolean;
  };
}

export async function fetchRegistrationPaymentStatus(
  registrationId: string,
  domain: string,
  options?: {
    paymentIntent?: string | null;
    setupIntent?: string | null;
    sync?: boolean;
  }
): Promise<PaymentStatusResponse | null> {
  try {
    const params = new URLSearchParams();
    if (options?.sync !== false) {
      params.set("sync", "1");
    }
    if (options?.paymentIntent) {
      params.set("payment_intent", options.paymentIntent);
    }
    if (options?.setupIntent) {
      params.set("setup_intent", options.setupIntent);
    }

    const query = params.toString();
    const url = `registration-payment-status/${registrationId}${query ? `?${query}` : ""}`;

    const response = await apiClient.get<PaymentStatusResponse>(url, {
      headers: { "X-Domain": domain },
    });

    return response.data;
  } catch (error) {
    console.error("[paymentStatusService] Failed to fetch payment status:", error);
    return null;
  }
}
