import { getTranslations } from "next-intl/server";
import { connectDB } from "@/lib/db";
import { Calendar } from "@/models/Calendar";
import { CalendarEvent } from "@/models/CalendarEvent";

// Zeigt anstehende/laufende Termine aller als "öffentlich sichtbar"
// markierten Kalender (Admin: /admin/calendar → Kalender verwalten) — z. B.
// eine "Urlaub"-Kalender, damit Kund:innen sehen, wann kein neuer Termin
// vergeben werden kann, ohne dass wir das manuell im Hinweis-Banner pflegen
// müssten.
export async function VacationNotice({ locale }: { locale: string }) {
  await connectDB();
  const publicCalendars = await Calendar.find({ publicVisible: true }).select("_id").lean();
  if (!publicCalendars.length) return null;

  const now = new Date();
  const events = await CalendarEvent.find({
    calendarId: { $in: publicCalendars.map((c) => c._id) },
    $or: [{ end: { $gte: now } }, { end: null, start: { $gte: now } }],
  })
    .sort({ start: 1 })
    .lean();
  if (!events.length) return null;

  const t = await getTranslations({ locale, namespace: "vacation" });
  const dateFmt = new Intl.DateTimeFormat(locale === "en" ? "en-GB" : "de-DE", { day: "2-digit", month: "2-digit", year: "numeric" });

  // Eigenständige Karte ohne eigenen Breiten-Wrapper (rk-shell / max-w-7xl) —
  // die Elternseite bestimmt die Breite. Kupfer statt Amber, passend zum
  // Redesign-Akzent.
  return (
    <div className="flex w-full max-w-md flex-col gap-2 rounded-2xl border border-[var(--rk-accent)]/25 bg-[var(--rk-accent)]/[0.06] px-6 py-5 text-center">
      <p className="text-xs uppercase tracking-[0.18em] text-[var(--rk-accent)]">{t("eyebrow")}</p>
      {events.map((e) => {
        const start = new Date(e.start);
        const end = e.end ? new Date(e.end) : null;
        const sameDay = !end || dateFmt.format(start) === dateFmt.format(end);
        return (
          <p key={String(e._id)} className="text-sm text-[var(--rk-ink)]">
            {sameDay
              ? t("singleDay", { date: dateFmt.format(start) })
              : t("range", { start: dateFmt.format(start), end: dateFmt.format(end as Date) })}
          </p>
        );
      })}
      <p className="text-xs leading-relaxed text-[var(--rk-ink-muted)]">{t("hint")}</p>
    </div>
  );
}
