Skip to content

UC-V1: Aktive Veranstaltung verwalten #8

Description

@cschog

UC-ID

UC-V1

Ziel / Beschreibung

Es darf systemweit (pro Tenant) immer genau eine aktive Veranstaltung geben.

Dieser Use Case stellt sicher, dass:
• beim Aktivieren einer Veranstaltung
• alle anderen Veranstaltungen automatisch inaktiv werden

Fachlicher Kontext

Veranstaltungsmanagement

Eingaben / Filter

Der Use Case wird ausgelöst durch:
• expliziten API-Call
ODER
• implizit beim Erstellen einer Veranstaltung (Sonderfall)

Unterscheidung:

UC-V1a – Aktive Veranstaltung setzen (explizit)

„Setze Veranstaltung X aktiv“

UC-V1b – Veranstaltung anlegen

„Wenn es noch keine aktive gibt → setze diese aktiv“

👉 UC-V1 ist primär UC-V1a.

Fachliche Regeln

V1-1: Es gibt maximal eine aktive Veranstaltung
V1-2: Bei der ersten Veranstaltung -> aautomatisch aktiv
V1-3: Beim Aktivieren einer Veranstaltung -> alle anderen inaktiv
V1-4: Aktivieren der bereits aktiven Veranstaltung ist erlaubt
V1-5: Beim Löschen der aktiven Veranstaltung -> zuletzt angelegte Veranstaltung wird aktiv
V1-6: Beim Löschen der letzten Veranstaltung -> keine aktive

Abhängigkeiten zu anderen UCs

UC-T1 Teilnehmer hinzufügen -> nutzt aktive Veranstaltung
UC-V1 aktive Veranstaltung wechseln -> Basis-UC
UC-V2 Veranstaltung löschen -> muss aktive berücksichtigen

API / Technische Umsetzung

POST /api/veranstaltung/{id}/activate
Semantik:
• setzt {id} aktiv
• deaktiviert alle anderen

abgeleitete Testfälle:

Aktivieren

  1. Wechsel von A → B → B ist aktiv, A inaktiv
  2. Aktivieren von B, obwohl B aktiv ist → kein Fehler

Löschen

  1. Löschen inaktiver Veranstaltung → aktive bleibt
  2. Löschen aktiver Veranstaltung → vorherige wird aktiv
  3. Löschen der letzten Veranstaltung → keine aktive

Definition of Done

  • API implementiert
  • Validierung umgesetzt
  • Integrationstest vorhanden
  • Dokumentation aktualisiert
  • Review durchgeführt

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions