// services/fetchAnalogInputsService.ts

export const fetchAnalogInputsService = async () => {
  // 🌐 Automatische Moduserkennung über Hostname
  const hostname = window.location.hostname;
  const mode =
    hostname === "localhost" || hostname === "127.0.0.1" ? "dev" : "production";

  // ✅ PRODUKTIV: lädt JSON-Datei vom Gerät über CGI
  if (mode === "production") {
    //console.log("🔄 Lade analoge Eingänge im Produktionsmodus (JSON über CGI)");

    const res = await fetch("/CPL?/CPL/SERVICE/analogInputs.json", {
      headers: { Accept: "application/json" },
    });

    if (!res.ok) {
      throw new Error("❌ Fehler beim Laden der analogInputs.json");
    }

    const data = await res.json();

    return data.win_analogInputsValues.map((value: string, i: number) => ({
      id: i + 1,
      value: parseFloat(value),
      label: data.win_analogInputsLabels[i].replace(/'/g, ""),
      unit: data.win_analogInputsUnits[i].replace(/'/g, ""),
      offset: parseFloat(data.win_analogInputsOffset[i]),
      factor: parseFloat(data.win_analogInputsFactor[i]),
      loggerInterval: parseInt(data.win_analogInputsLoggerIntervall[i]),
      weighting: parseInt(data.win_analogInputsWeighting[i]),
    }));
  }

  // ✅ ENTWICKLUNG: Daten vom lokalen API-Mock
  else {
    console.log(
      "🧪 Lade analoge Eingänge im Entwicklungsmodus (Mock über API)"
    );

    const res = await fetch("/api/cpl/getAnalogInputsHandler");
    if (!res.ok) {
      throw new Error("❌ Fehler beim Laden der analogen Eingänge (Mock)");
    }

    const data = await res.json();

    return data.win_analogInputsValues.map((value: string, i: number) => ({
      id: i + 1,
      value: parseFloat(value),
      label: data.win_analogInputsLabels[i].replace(/'/g, ""),
      unit: data.win_analogInputsUnits[i].replace(/'/g, ""),
      offset: parseFloat(data.win_analogInputsOffset[i]),
      factor: parseFloat(data.win_analogInputsFactor[i]),
      loggerInterval: parseInt(data.win_analogInputsLoggerIntervall[i]),
      weighting: parseInt(data.win_analogInputsWeighting[i]),
    }));
  }
};
