// app/(lib)/actions/franchiseAddressesAction.ts
"use server";

import { franchiseAddressesService, type GlobeLocation } from "../services/franchiseAddressesService";
import { extractDomain } from "../utils/domain";

export interface FranchiseAddressesActionResponse {
  success: boolean;
  data: GlobeLocation[];
  message?: string;
}

/**
 * Fetch active franchise locations with latitude and longitude
 * Used to display pointers on the globe in About Us page
 */
export async function fetchFranchiseAddressesAction(): Promise<FranchiseAddressesActionResponse> {
  try {
    const domain = await extractDomain();
    
    const locations = await franchiseAddressesService.fetchActiveFranchiseLocations(domain);

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


    return {
      success: true,
      data: locations,
      message: "Franchise addresses fetched successfully",
    };
  } catch (error) {
    console.error("[fetchFranchiseAddressesAction] Error:", error);
    return {
      success: false,
      data: [],
      message: error instanceof Error ? error.message : "Failed to fetch franchise addresses",
    };
  }
}
