feat(mitarbeiter): Vorgesetzter auch fuer Personen ohne Verzeichnis (#43)
This commit was merged in pull request #43.
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
||||
mitarbeiterAnlegen,
|
||||
mitarbeiterBearbeiten,
|
||||
mitarbeiterImportieren,
|
||||
vorgesetztenSetzen,
|
||||
type MitarbeiterImportAbweisung,
|
||||
} from "@/server/services/mitarbeiter";
|
||||
import type { HandelnderBenutzer } from "@/server/mandant";
|
||||
@@ -161,6 +162,40 @@ export async function mitarbeiterAktivSetzenAktion(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vorgesetzten setzen oder entfernen (#020).
|
||||
*
|
||||
* Ein leeres Feld entfernt die Zuordnung — deshalb `optional` und nicht
|
||||
* `min(1)`: „niemand“ ist hier eine Angabe und kein Versehen.
|
||||
*/
|
||||
export async function vorgesetztenSetzenAktion(
|
||||
_vorher: AktionsErgebnis,
|
||||
formular: FormData,
|
||||
): Promise<AktionsErgebnis> {
|
||||
const zugang = await angemeldetOderMeldung();
|
||||
if ("fehler" in zugang) return zugang;
|
||||
|
||||
const eingabe = z
|
||||
.object({ mitarbeiterId: z.string().min(1), vorgesetzterId: z.string().optional() })
|
||||
.safeParse({
|
||||
mitarbeiterId: formular.get("mitarbeiterId"),
|
||||
vorgesetzterId: formular.get("vorgesetzterId") ?? undefined,
|
||||
});
|
||||
if (!eingabe.success) return { fehler: "Die Eingabe ist unvollständig." };
|
||||
|
||||
try {
|
||||
await vorgesetztenSetzen(
|
||||
eingabe.data.mitarbeiterId,
|
||||
eingabe.data.vorgesetzterId ?? null,
|
||||
zugang.benutzer,
|
||||
);
|
||||
revalidatePath(`/mitarbeiter/${eingabe.data.mitarbeiterId}`);
|
||||
return { erfolg: eingabe.data.vorgesetzterId ? "Gespeichert." : "Vorgesetzter entfernt." };
|
||||
} catch (fehler) {
|
||||
return alsErgebnis(fehler, "Die Änderung konnte nicht gespeichert werden.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Personen aus einer CSV-Datei einspielen (#016).
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user