feat(mitarbeiter): Vorgesetzter auch fuer Personen ohne Verzeichnis (#43)
This commit was merged in pull request #43.
This commit is contained in:
@@ -57,6 +57,8 @@ export type PersonenVorgabe = {
|
||||
readonly upn: string;
|
||||
readonly abteilung: string;
|
||||
readonly titel: string;
|
||||
/** UPN des Vorgesetzten – aufgeloest, nachdem alle Personen stehen. */
|
||||
readonly vorgesetzterUpn?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -64,10 +66,11 @@ export type PersonenVorgabe = {
|
||||
* Haus ohne Verzeichnis entstehen.
|
||||
*
|
||||
* Maria Huber steht so im Auftrag und taucht in den Abnahmekriterien wieder auf.
|
||||
* Ihre Vorgesetzte Petra Klein ist deshalb ebenfalls dabei; **gespeichert wird
|
||||
* die Zuordnung nicht**: `vorgesetzterExterneId` zeigt auf die `externeId`
|
||||
* derselben Verzeichnisquelle, und eine von Hand angelegte Person hat beides
|
||||
* nicht. Im Onboarding-Lauf wird der Vorgesetzte ohnehin beim Start gewaehlt.
|
||||
* Ihre Vorgesetzte Petra Klein ist deshalb ebenfalls dabei — **und die Zuordnung
|
||||
* wird gespeichert**, seit `vorgesetzterId` es erlaubt (#020). Vorher ging das
|
||||
* nicht: die Auskunft lief allein ueber `vorgesetzterExterneId`, und die zeigt
|
||||
* auf die `externeId` derselben Verzeichnisquelle, die eine von Hand angelegte
|
||||
* Person nicht hat.
|
||||
*/
|
||||
export const PERSONEN: readonly PersonenVorgabe[] = [
|
||||
{
|
||||
@@ -77,6 +80,7 @@ export const PERSONEN: readonly PersonenVorgabe[] = [
|
||||
upn: "m.huber@firma.example",
|
||||
abteilung: "Buchhaltung",
|
||||
titel: "Sachbearbeiterin Rechnungsprüfung",
|
||||
vorgesetzterUpn: "p.klein@firma.example",
|
||||
},
|
||||
{
|
||||
vorname: "Petra",
|
||||
@@ -230,6 +234,8 @@ export async function stammdatenSaeen(
|
||||
|
||||
let personen = 0;
|
||||
const nachUpn = new Map<string, string>();
|
||||
/** Nur diese bekommen eine Vorgesetzten-Zuordnung – siehe unten. */
|
||||
const neuAngelegt = new Set<string>();
|
||||
for (const vorgabe of PERSONEN) {
|
||||
const vorhanden = await db.mitarbeiter.findFirst({ where: { kundeId, upn: vorgabe.upn } });
|
||||
if (vorhanden) {
|
||||
@@ -252,9 +258,27 @@ export async function stammdatenSaeen(
|
||||
},
|
||||
});
|
||||
nachUpn.set(vorgabe.upn, angelegt.id);
|
||||
neuAngelegt.add(vorgabe.upn);
|
||||
personen += 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Die Vorgesetzten erst jetzt, wenn alle Personen stehen: eine Zuordnung
|
||||
* zeigt auf eine Zeile, die beim Anlegen der ersten noch nicht da war.
|
||||
*
|
||||
* Nur fuer Personen, die **dieser Lauf** angelegt hat. Eine leere Zuordnung
|
||||
* sagt nicht, ob sie noch nie gesetzt oder im Betrieb entfernt wurde — und ein
|
||||
* zweiter Seed-Lauf darf nichts zurueckdrehen. Dieselbe Regel wie fuer alles
|
||||
* andere hier.
|
||||
*/
|
||||
for (const vorgabe of PERSONEN) {
|
||||
if (!vorgabe.vorgesetzterUpn || !neuAngelegt.has(vorgabe.upn)) continue;
|
||||
const personId = nachUpn.get(vorgabe.upn);
|
||||
const vorgesetzterId = nachUpn.get(vorgabe.vorgesetzterUpn);
|
||||
if (!personId || !vorgesetzterId) continue;
|
||||
await db.mitarbeiter.update({ where: { id: personId }, data: { vorgesetzterId } });
|
||||
}
|
||||
|
||||
// Im Modus DIENSTLEISTUNG traegt der Hostname das Kundenkuerzel – dieselbe
|
||||
// Regel, die auch die Namensvorschlaege benutzen (`{kundenkuerzel}-PC-{nnn}`).
|
||||
const praefix = optionen.hostnamePraefix ? `${optionen.hostnamePraefix}-` : "";
|
||||
|
||||
Reference in New Issue
Block a user