import { prisma } from '@innungsapp/shared' import { auth } from '@/lib/auth' import { headers } from 'next/headers' import { redirect } from 'next/navigation' import Link from 'next/link' import { NEWS_KATEGORIE_LABELS } from '@innungsapp/shared' import { format } from 'date-fns' import { de } from 'date-fns/locale' const KATEGORIE_COLORS: Record = { Wichtig: 'bg-red-100 text-red-700', Pruefung: 'bg-blue-100 text-blue-700', Foerderung: 'bg-green-100 text-green-700', Veranstaltung: 'bg-purple-100 text-purple-700', Allgemein: 'bg-gray-100 text-gray-700', } export default async function NewsPage() { const session = await auth.api.getSession({ headers: await headers() }) if (!session?.user) redirect('/login') const userRole = await prisma.userRole.findFirst({ where: { userId: session.user.id, role: 'admin' }, }) if (!userRole) redirect('/dashboard') const news = await prisma.news.findMany({ where: { orgId: userRole.orgId }, include: { author: { select: { name: true } } }, orderBy: [{ publishedAt: 'desc' }, { createdAt: 'desc' }], }) const published = news.filter((n) => n.publishedAt) const drafts = news.filter((n) => !n.publishedAt) return (

News

{published.length} publiziert · {drafts.length} Entwürfe

+ Beitrag erstellen
{drafts.length > 0 && (

Entwürfe

{drafts.map((n) => ( ))}

{n.title}

Erstellt {format(n.createdAt, 'dd. MMM yyyy', { locale: de })}

{NEWS_KATEGORIE_LABELS[n.kategorie]} Bearbeiten
)}

Publiziert

{published.map((n) => ( ))}
Titel Kategorie Autor Datum
{n.title} {NEWS_KATEGORIE_LABELS[n.kategorie]} {n.author?.name ?? '—'} {n.publishedAt ? format(n.publishedAt, 'dd.MM.yyyy', { locale: de }) : '—'} Bearbeiten
) }