"use server";

import { programsByAgeService } from "../services/programsByAgeService";
import { extractDomain, extractFranchiseeIdFromHeaders } from "../utils/domain";

export interface ProgramsByAgeActionResponse {
  success: boolean;
  data: any[];
  message?: string;
}

export async function fetchProgramsByAgeAction(age: string): Promise<ProgramsByAgeActionResponse> {
  try {
    if (!age) {
      return {
        success: false,
        data: [],
        message: "Age parameter is required",
      };
    }

    const domain = await extractDomain();
    const franchiseeId = await extractFranchiseeIdFromHeaders();

    const programs = await programsByAgeService.fetchByAge(age, domain, franchiseeId);


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