// redux/thunks/kvzThunks.ts
import { createAsyncThunk } from "@reduxjs/toolkit";
import {
  fetchKvzData,
  updateKvzSettings,
} from "../../services/fetchKvzDataService";
import { setKueData } from "../slices/kueDataSlice";

/**
 * Lädt KVZ-Daten von der API und aktualisiert Redux Store
 */
export const loadKvzData = createAsyncThunk(
  "kvz/loadData",
  async (_, { dispatch }) => {
    try {
      const data = await fetchKvzData();

      // KVZ-Daten in Redux Store laden
      dispatch(
        setKueData({
          kvzPresence: data.kvzPresence,
          kvzActive: data.kvzActive,
          kvzStatus: data.kvzStatus,
        })
      );

      return data;
    } catch (error) {
      console.error("Fehler beim Laden der KVZ-Daten:", error);
      throw error;
    }
  }
);

/**
 * Aktualisiert KVZ-Einstellungen und synchronisiert Redux Store
 */
export const updateKvzData = createAsyncThunk(
  "kvz/updateData",
  async (
    updates: Array<{
      key: "kvzPresence" | "kvzActive" | "kvzStatus";
      slot?: number;
      ledIndex?: number;
      value: number;
    }>,
    { dispatch }
  ) => {
    try {
      const data = await updateKvzSettings(updates);

      // Aktualisierte Daten in Redux Store laden
      dispatch(
        setKueData({
          kvzPresence: data.kvzPresence,
          kvzActive: data.kvzActive,
          kvzStatus: data.kvzStatus,
        })
      );

      return data;
    } catch (error) {
      console.error("Fehler beim Update der KVZ-Daten:", error);
      throw error;
    }
  }
);
