feat(mitarbeiter): Vorgesetzter auch fuer Personen ohne Verzeichnis (#43)
This commit was merged in pull request #43.
This commit is contained in:
@@ -317,6 +317,7 @@ async function lauf(quelle: Verzeichnisquelle, benutzer: HandelnderBenutzer): Pr
|
||||
// Der Vorgesetzte kommt im zweiten Durchgang: sein DN laesst sich
|
||||
// erst aufloesen, wenn alle Kennungen bekannt sind.
|
||||
vorgesetzterExterneId: null,
|
||||
vorgesetzterId: null,
|
||||
aktiv: true,
|
||||
herkunft: Herkunft.ABGLEICH,
|
||||
zuletztGesehenAm: beginn,
|
||||
@@ -365,7 +366,19 @@ async function lauf(quelle: Verzeichnisquelle, benutzer: HandelnderBenutzer): Pr
|
||||
// Verzeichnis diese Person, und der naechste Lauf findet sie ueber die
|
||||
// Kennung.
|
||||
...(uebernommenJetzt ? { quelleId, externeId: eintrag.externeId } : {}),
|
||||
...(vorgesetztenLeeren ? { vorgesetzterExterneId: null } : {}),
|
||||
/*
|
||||
* Steht im Verzeichnis kein Vorgesetzter, wird der **rohe** Wert
|
||||
* geleert. Die gepflegte Zuordnung nur dann, wenn sie vom
|
||||
* Verzeichnis kam — erkennbar daran, dass dort eine Kennung stand.
|
||||
* Eine von Hand gesetzte Zuordnung bleibt stehen: das Verzeichnis
|
||||
* fuehrt sie nicht, also hat es sie auch nicht zu loeschen (#020).
|
||||
*/
|
||||
...(vorgesetztenLeeren
|
||||
? {
|
||||
vorgesetzterExterneId: null,
|
||||
...(vorhanden.vorgesetzterExterneId !== null ? { vorgesetzterId: null } : {}),
|
||||
}
|
||||
: {}),
|
||||
// Wer wieder im Ergebnis steht, ist wieder aktiv — eine
|
||||
// wiedereingestellte Person behaelt so ihre Laeufe.
|
||||
aktiv: true,
|
||||
@@ -386,12 +399,24 @@ async function lauf(quelle: Verzeichnisquelle, benutzer: HandelnderBenutzer): Pr
|
||||
gelesen = bilanz.gesamtGelesen;
|
||||
|
||||
// --- Zweiter Durchgang: Vorgesetzte --------------------------------------
|
||||
//
|
||||
// Geschrieben werden beide Felder: `vorgesetzterExterneId` als roher Wert des
|
||||
// Verzeichnisses, `vorgesetzterId` als die gepflegte Zuordnung, aus der
|
||||
// jeder Leseweg schoepft (#020). Vorher gab es nur das erste, und eine von
|
||||
// Hand angelegte Person konnte keinen Vorgesetzten haben.
|
||||
for (const offen of offene) {
|
||||
const kennung = kennungNachDn.get(dnSchluessel(offen.vorgesetzterDn)) ?? null;
|
||||
if (kennung === offen.vorherigeKennung) continue;
|
||||
const vorgesetzter =
|
||||
kennung === null
|
||||
? null
|
||||
: await prisma.mitarbeiter.findUnique({
|
||||
where: { quelleId_externeId: { quelleId, externeId: kennung } },
|
||||
select: { id: true },
|
||||
});
|
||||
await prisma.mitarbeiter.updateMany({
|
||||
where: { quelleId, externeId: offen.externeId },
|
||||
data: { vorgesetzterExterneId: kennung },
|
||||
data: { vorgesetzterExterneId: kennung, vorgesetzterId: vorgesetzter?.id ?? null },
|
||||
});
|
||||
// Eine gerade angelegte Person ist angelegt, nicht zusaetzlich
|
||||
// aktualisiert.
|
||||
|
||||
Reference in New Issue
Block a user