import { updateValues } from "../../../../store/variablesSlice";
const handleSave = ({
  ids,
  bezeichnungen,
  isolationsgrenzwerte,
  verzoegerung,
  untereSchleifenGrenzwerte,
  obereSchleifenGrenzwerte,
  schleifenintervall,
  originalValues,
  slot,
  dispatch,
  onModulNameChange,
  onClose,
}) => {
  const changes = {};

  // Überprüfen, ob Änderungen gegenüber den Originalwerten vorliegen
  if (ids[slot] !== originalValues.ids[slot]) {
    changes.KID = ids[slot];
  }
  if (bezeichnungen[slot] !== originalValues.bezeichnungen[slot]) {
    changes.KIA = bezeichnungen[slot];
  }
  if (
    isolationsgrenzwerte[slot] !== originalValues.isolationsgrenzwerte[slot]
  ) {
    changes.KL_ = isolationsgrenzwerte[slot];
  }
  if (verzoegerung[slot] !== originalValues.verzoegerung[slot]) {
    changes.KD_ = verzoegerung[slot];
  }
  if (
    untereSchleifenGrenzwerte[slot] !==
    originalValues.untereSchleifenGrenzwerte[slot]
  ) {
    changes.KR_ = untereSchleifenGrenzwerte[slot];
  }
  if (
    obereSchleifenGrenzwerte[slot] !==
    originalValues.obereSchleifenGrenzwerte[slot]
  ) {
    changes.KRO_ = obereSchleifenGrenzwerte[slot];
  }
  if (schleifenintervall[slot] !== originalValues.schleifenintervall[slot]) {
    changes.KRI = schleifenintervall[slot];
  }

  if (Object.keys(changes).length > 0) {
    let url = `/cpl?/kabelueberwachung.html&slot=${slot}`;
    Object.keys(changes).forEach((paramKey) => {
      url += `&${paramKey}${slot}=${encodeURIComponent(changes[paramKey])}`;
    });

    fetch(url, { method: "GET" })
      .then((response) => {
        if (response.ok) {
          alert("Daten erfolgreich gespeichert!");
          onModulNameChange(ids[slot]);

          // Aktualisiere Redux-Store mit neuen Werten
          dispatch(
            updateValues({
              ids: [...ids],
              bezeichnungen: [...bezeichnungen],
              isolationsgrenzwerte: [...isolationsgrenzwerte],
              verzoegerung: [...verzoegerung],
              untereSchleifenGrenzwerte: [...untereSchleifenGrenzwerte],
              obereSchleifenGrenzwerte: [...obereSchleifenGrenzwerte],
              schleifenintervall: [...schleifenintervall],
            })
          );
        } else {
          alert("Fehler beim Speichern der Daten!");
        }
      })
      .catch((error) => {
        console.error("Fehler:", error);
        //alert("Fehler beim Senden der Daten!");
      });
  } else {
    alert("Keine Änderungen vorgenommen.");
  }

  onClose();
};

export default handleSave;
