"use client"; import { useActionState } from "react"; import { Lock } from "lucide-react"; import { Button } from "@/components/ui/button"; import { mitarbeiterBearbeitenAktion, type AktionsErgebnis } from "@/server/actions/mitarbeiter"; import { FELD } from "@/lib/formular"; export type StammdatenPerson = { readonly id: string; readonly vorname: string; readonly nachname: string; readonly anzeigename: string; readonly mail: string | null; readonly upn: string | null; readonly sam: string | null; readonly abteilung: string | null; readonly titel: string | null; /** Bei `true` kommen die Stammdaten aus dem Verzeichnis und sind gesperrt. */ readonly ausVerzeichnis: boolean; }; /** * Stammdaten bearbeiten – oder ansehen, wenn sie aus dem Verzeichnis kommen. * * Bei `herkunft = ABGLEICH` ist **jedes** gepflegte Feld gesperrt, nicht nur * einige: alles daran wird im Verzeichnis gepflegt, und der naechste Abgleich * wuerde eine Aenderung ohnehin zurueckdrehen. Die Felder werden trotzdem * gezeigt — man will die Werte sehen —, nur eben schreibgeschuetzt. Ein * ausgeblendetes Feld waere eine schlechtere Auskunft als ein gesperrtes. */ export function MitarbeiterStammdaten({ person, darfBearbeiten, }: { person: StammdatenPerson; darfBearbeiten: boolean; }) { const [ergebnis, aktion, laeuft] = useActionState( mitarbeiterBearbeitenAktion, {}, ); /* * Zwei verschiedene Gruende, dasselbe Ergebnis — aber nicht dieselbe Meldung. * Wer die Rolle nicht hat, bekommt keinen Satz ueber das Verzeichnis zu lesen, * der fuer ihn gar nicht der Grund ist. */ const gesperrt = person.ausVerzeichnis || !darfBearbeiten; return (
{gesperrt ? (
) : null}
{ergebnis.fehler ? (

{ergebnis.fehler}

) : null} {ergebnis.erfolg ? (

{ergebnis.erfolg}

) : null} {gesperrt ? null : ( )}
); }