Zum Hauptinhalt springen

Mitarbeiter — Kurs-Anmeldungen (Sub-Route)

Zweck

Sub-Route /employees/:id/course-enrollments zeigt alle Kurs-Anmeldungen des Mitarbeiters mit parentType = Employee. Sub-Sub-Route /employees/:id/course-enrollment-certificates listet die ausgestellten Zertifikate.

Voraussetzungen

- Berechtigung `view:Employee` und `view:CourseEnrollment`. - Für Anmeldung: `create:CourseEnrollment` und `view:Course`.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Employee, Employee, FE_CourseEnrollment, CourseEnrollmentListe sichtbar
createCourseEnrollmentAnmeldenAPP_SPEAMCORE_CREATE_COURSE_ENROLLMENT
viewCourseKurs-AuswahlAPP_SPEAMCORE_VIEW_COURSE

Schritt-für-Schritt-Anleitung

  1. Mitarbeiter (/employees/:id) → Tab Kurs-Anmeldungen.
  2. + Anmeldung wählt einen Kurs und legt eine CourseEnrollment mit parentType = Employee, parentId = :id an.
  3. Sub-Sub-Tab Zertifikate (/employees/:id/course-enrollment-certificates) zeigt die ausgestellten Zertifikate aus abgeschlossenen Kursen.

Kursanmeldungen-Tab am Mitarbeiter (Lukas Schneider) mit Spalten Kurs und Ablaufdatum — Beispiel „Arbeitssicherheit & DGUV-Vorschriften" und Button „+ Kurs hinzufügen" (Test-Daten).

Anlege-Pattern (Code-Lookup-basiert)

Beim Klick auf den + Hinzufügen-Button erscheint kein Modal mit Eingabemaske, sondern ein Auswahl-Workflow (customAddButton-Pattern):

  1. Modal mit Suche im Stamm der zu verknüpfenden Entität (z. B. Rolle, Fahrzeug, Kurs).
  2. Anwender wählt einen oder mehrere Einträge.
  3. Pro Auswahl wird ein Assignment-Datensatz erzeugt, der die N:M-Verknüpfung Mitarbeiter ↔ Stamm hält — nicht der Stamm selbst.
  4. Klick auf eine Zeile führt zum Detail des Assignment (Pflege z. B. von Gültigkeitszeitraum, prozentuale Aufteilung).
**Stamm vs Assignment:** Das Löschen einer Verknüpfung (Assignment) entfernt nur die Beziehung zum Mitarbeiter, **nicht** den Stamm. Stamm-Änderungen wirken auf alle Mitarbeiter mit aktiver Verknüpfung — Anpassung etwa der Rolle hat sofort Auswirkung auf alle Mitarbeiter mit dieser Rolle.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/course-enrollments?filter[parentType=Employee&parentId]Listeview CourseEnrollment
POST/api/course-enrollmentsAnmeldencreate CourseEnrollment

Versionshinweise

  • 2026-04-30: Initiale Veroeffentlichung.