// /pages/api/cpl/getAnalogInputsHistory.ts
import path from "path";
import fs from "fs/promises";
import type { NextApiRequest, NextApiResponse } from "next";

const erlaubteZeitraeume = ["DIA0", "DIA1", "DIA2"];
const erlaubteEingaenge = [1, 2, 3, 4, 5, 6, 7, 8];

export default async function handler(
  req: NextApiRequest,
  res: NextApiResponse<unknown>
) {
  const { zeitraum, eingang } = req.query;

  const zeitraumKey =
    typeof zeitraum === "string" && erlaubteZeitraeume.includes(zeitraum)
      ? zeitraum
      : null;

  const eingangId =
    typeof eingang === "string" && !isNaN(Number(eingang))
      ? Number(eingang)
      : null;

  // ❌ Fehlerhafte Anfrage
  if (!zeitraumKey || !eingangId || !erlaubteEingaenge.includes(eingangId)) {
    return res.status(400).json({
      error: "❌ Ungültige oder unvollständige Anfrage.",
      erwartet: {
        zeitraum: "Pflichtfeld. Erlaubt: DIA0 | DIA1 | DIA2",
        eingang: "Pflichtfeld. Erlaubt: 1 bis 8 (entspricht AE1 bis AE8)",
      },
      beispiele: [
        "/api/cpl/getAnalogInputsHistory?zeitraum=DIA1&eingang=3",
        "/api/cpl/getAnalogInputsHistory?zeitraum=DIA2&eingang=7",
        "http://localhost:3000/api/cpl/getAnalogInputsHistory?eingang=1&zeitraum=DIA0",
      ],
      hinweis:
        "Die Antwort enthält ein Array mit Messwertobjekten für den gewählten Eingang und Zeitraum.",
    });
  }

  try {
    const filePath = path.join(
      process.cwd(),
      "mocks",
      "device-cgi-simulator",
      "chartsData",
      "analogInputs",
      `${eingangId}`,
      `${zeitraumKey}.json`
    );

    const fileContent = await fs.readFile(filePath, "utf-8");
    const daten = JSON.parse(fileContent);

    res.status(200).json({
      eingang: eingangId,
      zeitraum: zeitraumKey,
      beschreibung:
        zeitraumKey === "DIA0"
          ? "Alle Messwerte"
          : zeitraumKey === "DIA1"
          ? "Stündlich aggregierte Messwerte"
          : "Täglich aggregierte Messwerte",
      daten,
    });
  } catch (error) {
    console.error(
      `❌ Datei nicht gefunden für Eingang ${eingangId} und Zeitraum ${zeitraumKey}:`,
      error
    );
    res.status(404).json({
      error: `Keine Daten gefunden für Eingang ${eingangId} mit Zeitraum ${zeitraumKey}.`,
    });
  }
}
