import type { Metadata } from 'next' import Link from 'next/link' import { notFound } from 'next/navigation' import { ArrowLeft } from 'lucide-react' import { NeueAufgabe } from '@/app/(app)/aufgaben/neue-aufgabe' import { ProjektFormular } from '@/app/(app)/projekte/projekt-formular' import { AufgabenListe } from '@/components/aufgaben/aufgaben-liste' import { Fortschrittsbalken } from '@/components/fortschrittsbalken' import { Card, CardInhalt, CardKopf, CardTitel } from '@/components/ui/card' import { Kennzeichen } from '@/components/ui/kennzeichen' import { PROJEKT_STATUS_NAME, aufwandSumme, fortschrittBerechnen } from '@/lib/aufgabe' import { alsDatum, alsDauer, alsTagesschluessel } from '@/lib/zeit' import { aufgabenLaden, bereicheLaden, projekteZurAuswahlLaden, } from '@/server/abfragen/aufgaben' import { verlangeAnmeldung } from '@/server/berechtigung' import { db } from '@/server/db' export async function generateMetadata({ params, }: { params: Promise<{ id: string }> }): Promise { const { id } = await params const projekt = await db.projekt.findUnique({ where: { id }, select: { name: true }, }) return { title: projekt?.name ?? 'Projekt' } } export default async function ProjektSeite({ params, }: { params: Promise<{ id: string }> }) { const { id } = await params await verlangeAnmeldung(`/projekte/${id}`) const projekt = await db.projekt.findUnique({ where: { id }, select: { id: true, name: true, beschreibung: true, status: true, zielAm: true, bereichId: true, bereich: { select: { id: true, name: true, farbe: true } }, }, }) if (!projekt) notFound() const [aufgaben, bereiche, projekte] = await Promise.all([ // Hier bewusst ohne nurOffen: im Projekt gehört auch das Erledigte ins Bild. aufgabenLaden({ projektId: projekt.id }), bereicheLaden(), projekteZurAuswahlLaden(), ]) const fortschritt = fortschrittBerechnen(aufgaben) const offenerAufwand = aufwandSumme( aufgaben.filter((a) => a.status !== 'ERLEDIGT' && a.status !== 'VERWORFEN'), ) return (
Alle Projekte
{projekt.bereich && ( )}

{projekt.name}

{projekt.status !== 'AKTIV' && ( {PROJEKT_STATUS_NAME[projekt.status]} )}
{projekt.beschreibung && (

{projekt.beschreibung}

)}

{fortschritt.gesamt === 0 ? 'Noch keine Aufgaben zugeordnet.' : `${fortschritt.erledigt} von ${fortschritt.gesamt} erledigt (${fortschritt.prozent} %)`} {offenerAufwand > 0 && ` · noch ${alsDauer(offenerAufwand)} geschätzt`} {projekt.zielAm && ` · Ziel ${alsDatum(projekt.zielAm)}`}

Aufgaben im Projekt

Projekt bearbeiten
) }