import axios, { AxiosError } from "axios";

const CLASSWISE_API_URL = process.env.NEXT_PUBLIC_CLASSWISE_API_URL || "https://backend.classwise.youngengineers.org/api/v3";
const CLASSWISE_TOKEN = process.env.CLASSWISE_TOKEN || "";

export interface GroupDetailResponse {
  status: string;
  message: string;
  data: any;
}

// Separate axios instance for Classwise API
const classwiseApiClient = axios.create({
  baseURL: CLASSWISE_API_URL,
  timeout: 10000,
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": CLASSWISE_TOKEN,
  },
});

export class GroupDetailService {
  async fetchGroupDetail(groupId: string | number, franchiseeId?: string | null): Promise<any | null> {
    const startTime = Date.now();

    try {
      const response = await classwiseApiClient.get<GroupDetailResponse>(
        `/get-group-details/${groupId}`,
        {
          params: {
            franchiseeId: franchiseeId || undefined,
          },
        }
      );

      if (!response.data?.status || response.data.status !== "success") {
        return null;
      }

      const elapsed = Date.now() - startTime;

      return response.data.data;
    } catch (error) {
      const elapsed = Date.now() - startTime;
      console.error(
        `[GroupDetailService] ✗ Failed to fetch group details for ID ${groupId} in ${elapsed}ms:`,
        error instanceof AxiosError ? error.message : error
      );
      return null;
    }
  }
}

export const groupDetailService = new GroupDetailService();
