Projekt "MyTicket.com", Informationstechnische Projekte 5AHITN 2023 / 2024

Aufgabenstellung

Es ist die Managementsoftware für einen Ticketshop zu erstellen.
Ihre Software soll zur Verwaltung von Veranstaltungen und der zugehörigen Vorverkaufstickets verwendet werden.
Es soll möglich sein über einen Administratoraccount unterschiedliche Events zu verwalten (hinzufügen / lesen / aktualisieren / löschen).
Jedes Event hat ein Start- und Enddatum (inkl. Uhrzeit), einen Namen, eine Detailbeschreibung.

Für jedes Event können mehrere Ticketkategorien angelegt werden. Jede Kategorie hat ein bestimmtes Kontingent (Anzahl möglicher Karten) und einen bestimmten Ticketpreis.

Beispiel: Sie erzeugen für die für Ihren Maturaball “Maturaball HTL Steyr 2024” eine Veranstaltung. Veranstaltungsstart ist am 02. März 2024 um 20:00 Uhr.
Es gibt drei Ticketkategorien: Kategorie A mit einem Kontingent von 500 Karten um 25€ je Ticket, Kategorie B mit einem Kontingent von 500 Karten um 22€ je Ticket und Kategorie C mit einem Kontingent von 350 Karten um 18€ je Ticket.

Über Ihren Ticketshop können sich Endkunden Tickets für Veranstaltungen kaufen.
Um Tickets für eine Veranstaltung zu erwerben, müssen sich Endkunden im Ticketshop mit einem Benutzerkonto registrieren.
Ein registrierter Benutzer kann sich anschließend über die erfassten Benutzerdaten im System anmelden und (womöglich mehrere) Tickets unterschiedlicher Kategorien und unterschiedlicher Veranstaltungen in seinen Warenkorb legen.

Im letzten Schritt (Checkout) wird der Gesamtpreis berechnet und die Zahlung getätigt.

Beispiel: Der Benutzer Peter Rathgeb kauft sich für die Veranstaltung “Maturaball HTL Steyr 2024” zwei Tickets der Kategorie A und ein Ticket der Kategorie B. Zusätzlich erwirbt der Benutzer zwei Tickets der Kategorie B (zu je 12€) für die Veranstaltung “Frühjahrskonzert Schulorchester HTL Steyr”.
Der Gesamtpreis seines Warenkorbs beträgt also 2 x 25€ + 1 x 22€ + 2 x 12€ = 118€

Sollten Tickets der gewählten Kategorie in der gewählten Menge nicht mehr verfügbar sein, so es nicht möglich sein, die Tickets der gewählten Kategorie in den Warenkorb zu legen.

Umsetzung

Erstellen Sie für den obenstehenden Sachverhalt eine SpringWeb - Anwendung. Erstellen Sie für die Entitäten jeweils eine Model - Klasse (z.B. User, Event, Ticket, …) in denen Sie die Eigenschaften und die Beziehungen der einzelnen Klassen zueinander abbilden. Diese Model - Klassen sollen über die entsprechenden Repositories und der JPA mit der Datenbank kommunizieren. Erstellen Sie zudem für jede Entity Klasse entsprechende Data-Transfer-Object - Klassen. Außerdem soll die Kommunikation zwischen Controllerendpunkt und Datenbank (Repository) über Service - Klassen gekapselt sein.

Erstellen Sie für den Admin - Benutzer Endpunkte für folgende Endpunkte:

Erstellen Sie für alle anderen Benutzer Endpunkte für folgende Aufgaben:

Schreiben Sie Testfälle (Unit - Tests) für folgende Schnittstellen:

Dokumentieren Sie alle Endpunkte Ihrer Anwendung (sprindoc)!

Testen Sie Ihre Endpunkte über eine im Projekt enthaltene requests.http - Datei.

Befüllen Sie Ihre Anwendung mit sinnvollen Testdaten (Benutzer, Events, Ticketkategorien eines Events, Bestellungen, …). Gerne können Sie bei Unklarheiten eigene Annahmen machen.

docker-compose.yml

version: '3.8'

services:
  database:
    container_name: database_myticket
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password --log_bin_trust_function_creators=1
    environment:
      MYSQL_ROOT_PASSWORD: rootpwd
      MYSQL_DATABASE: myticket
      MYSQL_USER: my
      MYSQL_PASSWORD: ticket
    ports:
      - '4306:3306'
    volumes:
      - ./mysql:/var/lib/mysql

Endpunkte

Registrierung

Login

Benutzer ändern (nur für Administratoren zugänglich)

Benutzer löschen (nur für Administratoren zugänglich)

Benutzerliste laden (nur für Administratoren zugänglich)

Benutzer laden (nur für Administratoren zugänglich)

Event erzeugen (nur für Administratoren zugänglich)

Event ändern (nur für Administratoren zugänglich)

Event löschen (nur für Administratoren zugänglich)

Event laden

Zukünftige Events laden

Tickets zum Warenkorb hinzufügen

Warenkorb laden

Tickets kaufen

Abgabe

Abgabe ist am 20.12.2023 am Ende der Stunde (um 09:40 Uhr).
Abgabe: Projektverzeichnis
Abgabeverzeichnis: H:\Abgabe\ITP\MyTicket

Für verspätete Abgaben gilt: Pro Tag Verspätung -> ein Notengrad schlechter.