import Link from "next/link";
import { notFound } from "next/navigation";
import { ContentHeader } from "@/components/layout/ContentHeader";
import {
AblaufBadge,
EinkaufBadge,
KeineMeldungBadge,
StatusBadge,
VerkaufBadge,
} from "@/components/ui/Badges";
import { Card } from "@/components/ui/Card";
import { CopyableCode } from "@/components/ui/CopyableCode";
import { InfoBox } from "@/components/ui/SmallBox";
import { formatDatum, formatEuro } from "@/lib/format";
import { HEUTE, kunden } from "@/mock/data";
import {
PRODUKT_NAME,
alertsVonKunde,
getKunde,
hostMeldetNicht,
hostsVonKunde,
laufzeitenVonKunde,
summenProJahr,
summenVonKunde,
} from "@/mock/queries";
export function generateStaticParams() {
return kunden.map((kunde) => ({ id: kunde.id }));
}
export async function generateMetadata({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
return { title: getKunde(id)?.name ?? "Kunde" };
}
export default async function KundenDetailSeite({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
const kunde = getKunde(id);
if (!kunde) notFound();
const eigeneHosts = hostsVonKunde(kunde.id);
const laufzeiten = laufzeitenVonKunde(kunde.id);
const summen = summenVonKunde(kunde.id);
const proJahr = summenProJahr(laufzeiten);
const alerts = alertsVonKunde(kunde.id);
return (
<>
{kunde.notizen ?? Keine Notizen hinterlegt.}
Keine offenen Warnungen.
) : (| Host | Produkt | Status | Key | Ablauf |
|---|---|---|---|---|
|
{host.hostname}
{hostMeldetNicht(host) ? |
{PRODUKT_NAME[host.produkt]} |
|
|
|
| Laufzeit | Host | Proxmox | Einkauf | Kundenrechnung | Verkauf |
|---|---|---|---|---|---|
| {formatDatum(laufzeit.start)} – {formatDatum(laufzeit.ende)} {laufzeit.vorschlag ? ( Vorschlag ) : null} | {host?.hostname ?? "–"} |
|
{formatEuro(laufzeit.einkauf?.nettoBetrag)} |
|
{formatEuro(laufzeit.verkauf?.nettoBetrag)} |
| Jahr | Einkauf netto | Verkauf netto | Marge |
|---|---|---|---|
| {jahr.jahr} | {formatEuro(jahr.einkauf)} | {formatEuro(jahr.verkauf)} | = 0 ? "pl-text-success" : "pl-text-danger"}> {formatEuro(jahr.marge)} |