import Link from "next/link"; import { Plus, Upload, User } from "lucide-react"; import { MitarbeiterAnlegen } from "@/components/mitarbeiter-anlegen"; import { MitarbeiterImportieren } from "@/components/mitarbeiter-importieren"; import { MitarbeiterSuche } from "@/components/mitarbeiter-suche"; import { StammdatenReiter } from "@/components/stammdaten-reiter"; import { Herkunft } from "@/generated/prisma/enums"; import { darf } from "@/server/auth/rollen"; import { sitzungErforderlich } from "@/server/auth/sitzungspflicht"; import { kundenEbeneSichtbar } from "@/server/mandant"; import { kundenListe } from "@/server/queries/kunden"; import { abteilungsNamen, mitarbeiterListe, type MitarbeiterZeile } from "@/server/queries/mitarbeiter"; import { MITARBEITER_IMPORT_HOECHSTZEILEN, MITARBEITER_IMPORT_SPALTEN } from "@/server/services/mitarbeiter"; /** * Mitarbeiterliste (#011). * * Gesucht wird ueber Anzeigename, Mail, UPN und `sam` — im Ticket steht mal das * eine, mal das andere. Standardmaessig erscheinen nur aktive Personen; fuers * Offboarding gibt es den Umschalter. * * Die Filter laufen als GET-Formular ueber die Adresse: ein gesetzter Filter ist * dann verlinkbar, der Zurueck-Knopf tut das Erwartete, und die Seite bleibt * eine Server-Komponente, die nur die sichtbaren Zeilen laedt. */ function Zeile({ zeile, kundenEbene }: { zeile: MitarbeiterZeile; kundenEbene: boolean }) { const kennungen = [zeile.mail, zeile.upn === zeile.mail ? null : zeile.upn, zeile.sam] .filter(Boolean) .join(" · "); return (
{kennungen}
: null}{[ zeile.abteilung, zeile.titel, `${zeile.anzahlGeraete} ${zeile.anzahlGeraete === 1 ? "Gerät" : "Geräte"}`, `${zeile.anzahlLaeufe} ${zeile.anzahlLaeufe === 1 ? "Lauf" : "Läufe"}`, ] .filter(Boolean) .join(" · ")}
Personen werden nie gelöscht, nur deaktiviert — ein archivierter Lauf muss auch in zehn Jahren noch sagen können, für wen er lief.
Keine Person passt zu diesen Filtern.
) : (Für das Onboarding, bevor der nächste Verzeichnisabgleich gelaufen ist. Eine so angelegte Person bleibt vollständig änderbar.