"use server";

import { classwiseClassesService, type ClasswiseClass } from "../services/classwiseClassesService";
import { extractDomain } from "../utils/domain";

export interface ClassesActionResponse {
  success: boolean;
  data: ClasswiseClass[];
  message?: string;
}

export async function fetchClassesAction(
  accountId?: string,
  franchiseeId?: string | null,
  programIds?: Array<string | number>
): Promise<ClassesActionResponse> {
  try {
    const domain = await extractDomain();
    let resolvedAccountId = accountId;

    if (domain === "web.youngengineers.org" || domain === "preview.youngengineers.org" || domain === "localhost") {
      resolvedAccountId = process.env.NEXT_PUBLIC_CLASSWISE_GLOBAL_ACCOUNT_ID || "1162885000381811255";
    }

    const classes = await classwiseClassesService.fetchClasses(resolvedAccountId, franchiseeId, programIds);

    if (classes.length === 0) {
      return {
        success: false,
        data: [],
        message: "No classes found",
      };
    }


    return {
      success: true,
      data: classes,
      message: "Classes fetched successfully",
    };
  } catch (error) {
    console.error("[fetchClassesAction] Error:", error);
    return {
      success: false,
      data: [],
      message: error instanceof Error ? error.message : "Failed to fetch classes",
    };
  }
}
