Add domain models: Austragungsplatz, TurnierArtikel, and RichterEinsatz.

This commit is contained in:
2026-04-08 22:58:21 +02:00
parent 8bc6f8e1df
commit da7afec9d7
3 changed files with 80 additions and 0 deletions
@@ -0,0 +1,29 @@
@file:OptIn(kotlin.uuid.ExperimentalUuidApi::class)
package at.mocode.events.domain.model
import at.mocode.core.domain.model.SparteE
import at.mocode.core.domain.serialization.UuidSerializer
import kotlinx.serialization.Serializable
import kotlin.uuid.Uuid
/**
* Domain-Modell für einen Austragungsplatz innerhalb einer Veranstaltung.
*
* Ein Austragungsplatz ist ein physischer Ort (Platz, Arena, Halle), auf dem Bewerbe
* stattfinden. Er kann als Austragungsplatz (Wettkampf) oder Vorbereitungsplatz
* (Einreiten) klassifiziert sein.
*
* @property id Eindeutige interne ID (UUID).
* @property name Bezeichnung des Platzes (z.B. "Waldarena", "Vorbereitungsplatz Nord").
* @property typ Klassifikation: "Austragungsplatz" oder "Vorbereitungsplatz".
* @property sparte Optionale Sparten-Zuordnung (z.B. nur für Springen genutzt).
*/
@Serializable
data class Austragungsplatz(
@Serializable(with = UuidSerializer::class)
val id: Uuid = Uuid.random(),
val name: String,
val typ: String,
val sparte: SparteE? = null
)
@@ -0,0 +1,28 @@
@file:OptIn(kotlin.uuid.ExperimentalUuidApi::class)
package at.mocode.events.domain.model
import at.mocode.core.domain.serialization.UuidSerializer
import kotlinx.serialization.Serializable
import kotlin.uuid.Uuid
/**
* Domain-Modell für einen Turnier-Artikel im Billing-Context.
*
* Ein TurnierArtikel repräsentiert eine abrechenbare Leistung oder ein Produkt,
* das im Rahmen einer Veranstaltung angeboten wird (z.B. Ansage, Heu, Startgeld).
* Preise werden in Cent gespeichert (Long), um Gleitkomma-Fehler zu vermeiden.
*
* @property id Eindeutige interne ID (UUID).
* @property name Bezeichnung des Artikels (z.B. "Ansage", "Heu", "Startgeld").
* @property preis Preis in Cent (z.B. 1500 = 15,00 €).
* @property typ Klassifikation: "AUTOMATISCH" (systemseitig) oder "MANUELL" (manuell erfasst).
*/
@Serializable
data class TurnierArtikel(
@Serializable(with = UuidSerializer::class)
val id: Uuid = Uuid.random(),
val name: String,
val preis: Long,
val typ: String
)