import Link from "next/link"; import { notFound } from "next/navigation"; import { HostNotizen } from "@/components/hosts/HostNotizen"; import { ContentHeader } from "@/components/layout/ContentHeader"; import { AblaufBadge, Badge, EinkaufBadge, KeineMeldungBadge, StatusBadge, VerkaufBadge, } from "@/components/ui/Badges"; import { Card } from "@/components/ui/Card"; import { CopyableCode } from "@/components/ui/CopyableCode"; import { Tabs } from "@/components/ui/Tabs"; import { PRODUKT_TEXT } from "@/lib/anzeige"; import { prisma } from "@/lib/db"; import { formatDatum, formatDatumZeit, formatEuro, formatUptime, formatZahl } from "@/lib/format"; import { hostKundeSetzen } from "@/server/actions/host-detail"; import { hostTokenWiderrufen } from "@/server/actions/tokens"; import { hostMitDetails } from "@/server/queries/hostliste"; import { meldungsGrenze } from "@/server/queries/hosts"; export async function generateMetadata({ params }: { params: Promise<{ id: string }> }) { const { id } = await params; const host = await prisma.host.findUnique({ where: { id }, select: { hostname: true } }); return { title: host?.hostname ?? "Host" }; } function Zeile({ bezeichnung, children }: { bezeichnung: string; children: React.ReactNode }) { return (
{bezeichnung} {children}
); } export default async function HostDetailSeite({ params }: { params: Promise<{ id: string }> }) { const { id } = await params; const host = await hostMitDetails(id); if (!host) notFound(); const kunden = await prisma.kunde.findMany({ orderBy: { name: "asc" }, select: { id: true, name: true }, }); const jetzt = new Date(); const meldetNicht = !host.letzterReportAm || host.letzterReportAm < meldungsGrenze(jetzt); const socketAbweichung = host.subLizenzierteSockets !== null && host.sockets !== null && host.subLizenzierteSockets !== host.sockets; return ( <> } />
{host.alerts.length > 0 ? (
    {host.alerts.map((alert) => (
  • {alert.titel} {" "} {alert.beschreibung}
  • ))}
) : null}