// services/fetchAnalogInputsHistory.ts

import { AnalogInputsHistoryEntry } from "@/redux/slices/analogInputs/analogInputsHistorySlice";

export async function fetchAnalogInputsHistory(
  eingang: number,
  zeitraum: string,
  vonDatum?: string,
  bisDatum?: string
): Promise<{ daten: AnalogInputsHistoryEntry[] }> {
  // Umgebung erkennen
  const isDev =
    window.location.hostname === "localhost" ||
    window.location.hostname === "127.0.0.1";

  if (isDev) {
    // Entwicklung: API-Route verwenden
    const url =
      `/api/cpl/getAnalogInputsHistory?eingang=${eingang}&zeitraum=${zeitraum}` +
      (vonDatum ? `&von=${vonDatum}` : "") +
      (bisDatum ? `&bis=${bisDatum}` : "");

    const res = await fetch(url);
    if (!res.ok) {
      throw new Error("Serverantwort war nicht erfolgreich");
    }
    const json = await res.json();
    return { daten: json.daten };
  } else {
    // Produktion: CPL-Webserver direkt abfragen
    // Erwartetes Format: /CPL?seite.ACP&DIA1=YYYY;MM;DD;YYYY;MM;DD;Eingang;Zeitraum
    // Annahme: vonDatum/bisDatum sind im Format YYYY-MM-DD
    if (!vonDatum || !bisDatum) {
      throw new Error("vonDatum und bisDatum sind erforderlich in Produktion");
    }
    const [vonJahr, vonMonat, vonTag] = vonDatum.split("-");
    const [bisJahr, bisMonat, bisTag] = bisDatum.split("-");
    // CPL-Eingang: 100-107 für AE-Eingänge
    // AE-Eingang: 100 + (eingang - 1)
    const aeEingang = 100 + (eingang - 1);
    // Zeitraum-Parameter: DIA0, DIA1, DIA2
    let diaType = "DIA1";
    if (zeitraum === "DIA0") diaType = "DIA0";
    if (zeitraum === "DIA2") diaType = "DIA2";
    // Beispiel: /CPL?seite.ACP&DIA1=2025;06;21;2025;07;21;100;1
    const url = `${window.location.origin}/CPL?seite.ACP&${diaType}=${vonJahr};${vonMonat};${vonTag};${bisJahr};${bisMonat};${bisTag};${aeEingang};1`;
    console.log("CPL URL:", url); // Debug-Ausgabe
    const res = await fetch(url);
    if (!res.ok) {
      throw new Error("Fehler bei CPL-Server: " + res.status);
    }
    const json = await res.json();
    // Die Struktur der Antwort kann ggf. angepasst werden
    return { daten: json };
  }
}

/*   // ⬇️ PRODUKTION: direkt vom CPL-Webserver holen
  for (let i = 0; i < 8; i++) {
    const inputNumber = i + 1;
    const sourceId = 99 + inputNumber;

    try {
      const url = `${window.location.origin}/CPL?Service/empty.acp&DIA0=${fromDate};${toDate};${sourceId};1`;
      const response = await fetch(url);
      if (!response.ok)
        throw new Error(`Fehler bei AE${inputNumber}: ${response.status}`);
      const data = await response.json();
      result[sourceId] = data;
    } catch (error) {
      console.error(`❌ Fehler beim Laden von AE${inputNumber}:`, error);
      result[sourceId] = [];
    }
  }

  return result;
}
 */
