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,23 @@
@file:OptIn(kotlin.uuid.ExperimentalUuidApi::class)
package at.mocode.entries.domain.model
import at.mocode.core.domain.serialization.UuidSerializer
import kotlinx.serialization.Serializable
import kotlin.uuid.Uuid
/**
* Value Object für den Einsatz eines Richters (Funktionärs) in einem Bewerb.
*
* Beschreibt, welcher Funktionär in welcher Funktion/Position bei einem Bewerb eingesetzt wird
* (z.B. Richter C, Aufsicht, Parcoursbauer).
*
* @property funktionaerId Referenz auf den Funktionär (UUID aus masterdata-context).
* @property position Positions-Bezeichnung gemäß ÖTO (z.B. "C", "M", "B", "Aufsicht").
*/
@Serializable
data class RichterEinsatz(
@Serializable(with = UuidSerializer::class)
val funktionaerId: Uuid,
val position: String
)
@@ -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
)