import { redirect } from "next/navigation"; import AdminShell from "@/components/admin/AdminShell"; import { requireAdminSession } from "@/lib/admin/auth"; import { listMediaFiles } from "@/lib/admin/media"; import { getContactInquiries, getRepairInquiries } from "@/lib/admin/store"; import { getContentSummary } from "@/lib/content/service"; import { getSmtpSettings, isSmtpConfigured } from "@/lib/mail/config"; import { appVersion, checkStorage } from "@/lib/runtime/config"; function countNew(items: T[]) { return items.filter((item) => item.status === "new").length; } export default async function AdminDashboardPage() { if (!await requireAdminSession()) redirect("/admin/login"); let healthStatus = "OK"; try { await checkStorage(); } catch { healthStatus = "Fehler"; } const [contacts, repairs, smtpSettings, mediaFiles, contentSummary] = await Promise.all([ getContactInquiries(), getRepairInquiries(), getSmtpSettings(), listMediaFiles(), getContentSummary(), ]); const latest = [...contacts, ...repairs].sort((a, b) => b.createdAt.localeCompare(a.createdAt)).slice(0, 6); const contentModified = contentSummary.lastModified ? new Date(contentSummary.lastModified).toLocaleString("de-DE") : "keine Änderung"; return (

Administration

Dashboard

Kontaktanfragen{contacts.length}{countNew(contacts)} neu
Reparaturanfragen{repairs.length}{countNew(repairs)} neu
Medien{mediaFiles.length}im Storage
Content{contentSummary.pageCount}{contentModified}
SMTP{isSmtpConfigured(smtpSettings) ? "OK" : "Fehlt"}{smtpSettings.lastTestStatus ?? "kein Test"}
Versionv{appVersion}Website
Health{healthStatus}Storage und Runtime

Letzte Anfragen

{latest.map((item) => ( ))} {latest.length === 0 && }
DatumNameTypStatus
{new Date(item.createdAt).toLocaleDateString("de-DE")} {item.name} {"manufacturer" in item ? "Reparatur" : "Kontakt"} {item.status}
Noch keine Anfragen vorhanden.
); }