import Link from 'next/link' import { AufgabenListe } from '@/components/aufgaben/aufgaben-liste' import { Schnellerfassung } from '@/components/aufgaben/schnellerfassung' import { Fortschrittsbalken } from '@/components/fortschrittsbalken' import { Card, CardBeschreibung, CardInhalt, CardKopf, CardTitel, } from '@/components/ui/card' import { wochenKapazitaet } from '@/lib/bereich' import { alsDatum, alsDauer } from '@/lib/zeit' import { aufgabenLaden, bereicheLaden, projekteZurAuswahlLaden, zaehlstaende, } from '@/server/abfragen/aufgaben' import { belegungHeute, hatKalenderkonto } from '@/server/abfragen/kalender' import { verlangeAnmeldung } from '@/server/berechtigung' import { db } from '@/server/db' import { jetzt } from '@/server/zeitgeber' export default async function StartSeite() { const benutzer = await verlangeAnmeldung('/') const heute = jetzt() const [alleOffenen, bereiche, projekte, zahlen, bereichsListe, belegung, mitKalender] = await Promise.all([ aufgabenLaden({ nurOffen: true, ohneIdeen: true }, 200), bereicheLaden(), projekteZurAuswahlLaden(), zaehlstaende(), db.bereich.findMany({ where: { aktiv: true }, orderBy: [{ reihenfolge: 'asc' }, { name: 'asc' }], }), belegungHeute(benutzer.id, heute), hatKalenderkonto(benutzer.id), ]) // Was jetzt zählt: überfällig, heute oder morgen fällig. const dran = alleOffenen.filter( (a) => a.ueberfaellig || a.faelligkeit === 'heute' || a.faelligkeit === 'morgen', ) const anrede = benutzer.name?.split(' ')[0] ?? benutzer.email return (
{alsDatum(heute)}
{offeneHier.length === 0 ? 'Nichts offen' : `${offeneHier.length} offen`}{' '} · {alsDauer(wochenKapazitaet(bereich))} Kapazität je Woche
{/* Ohne verbundenen Kalender wäre die Belegung immer null – das sähe nach "alles frei" aus und wäre irreführend. */} {mitKalender && heuteHier && ( <>{heuteHier.kapazitaet === 0 ? 'Heute nicht eingeplant' : heuteHier.ueberbucht ? `Heute überbucht: ${alsDauer(heuteHier.belegt)} Termine bei ${alsDauer(heuteHier.kapazitaet)} Kapazität` : `Heute noch ${alsDauer(heuteHier.frei)} frei von ${alsDauer(heuteHier.kapazitaet)}`}
> )}