feat(mitarbeiter): Vorgesetzter auch fuer Personen ohne Verzeichnis (#43)
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s

This commit was merged in pull request #43.
This commit is contained in:
2026-10-04 15:10:34 +00:00
parent 0fa41b9e08
commit 0060a55387
19 changed files with 683 additions and 49 deletions
+18 -3
View File
@@ -3,11 +3,17 @@ import { notFound } from "next/navigation";
import { ArrowLeft, Laptop } from "lucide-react";
import { MitarbeiterAktiv } from "@/components/mitarbeiter-aktiv";
import { MitarbeiterStammdaten } from "@/components/mitarbeiter-stammdaten";
import { MitarbeiterVorgesetzter } from "@/components/mitarbeiter-vorgesetzter";
import { Herkunft } from "@/generated/prisma/enums";
import { darf } from "@/server/auth/rollen";
import { sitzungErforderlich } from "@/server/auth/sitzungspflicht";
import { kundenEbeneSichtbar } from "@/server/mandant";
import { geraeteDesMitarbeiters, mitarbeiterHolen, vorgesetzterVon } from "@/server/queries/mitarbeiter";
import {
geraeteDesMitarbeiters,
mitarbeiterHolen,
moeglicheVorgesetzte,
vorgesetzterVon,
} from "@/server/queries/mitarbeiter";
/**
* Die Seite einer Person (#011).
@@ -26,10 +32,13 @@ export default async function MitarbeiterSeite({ params }: { params: Promise<{ i
if (!person) notFound();
const darfBearbeiten = darf(benutzer.rolle, "mitarbeiterBearbeiten");
const [geraete, kundenEbene, vorgesetzter] = await Promise.all([
const [geraete, kundenEbene, vorgesetzter, auswahl] = await Promise.all([
geraeteDesMitarbeiters(person.id, benutzer),
kundenEbeneSichtbar(),
vorgesetzterVon(person.id, benutzer),
// Nur holen, wer sie auch braucht: fuer einen Leser ist die Liste aller
// Kolleginnen und Kollegen eine Abfrage ohne Zweck.
darfBearbeiten ? moeglicheVorgesetzte(person.id, benutzer) : [],
]);
return (
@@ -60,8 +69,14 @@ export default async function MitarbeiterSeite({ params }: { params: Promise<{ i
) : null}
{darfBearbeiten ? (
<div className="mt-6">
<div className="mt-6 flex flex-col gap-6">
<MitarbeiterAktiv mitarbeiterId={person.id} aktiv={person.aktiv} />
<MitarbeiterVorgesetzter
mitarbeiterId={person.id}
vorgesetzterId={vorgesetzter?.id ?? null}
auswahl={auswahl}
ausDemVerzeichnis={person.herkunft === Herkunft.ABGLEICH}
/>
</div>
) : null}