diff --git a/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Turnier.kt b/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Turnier.kt index d597d725..b1b2153e 100644 --- a/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Turnier.kt +++ b/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Turnier.kt @@ -2,6 +2,7 @@ package at.mocode.events.domain.model +import at.mocode.core.domain.model.ReglementE import at.mocode.core.domain.model.SparteE import at.mocode.core.domain.model.TeilnehmerKreisE import at.mocode.core.domain.model.TurnierkategorieE @@ -26,11 +27,17 @@ import kotlin.uuid.Uuid * @property turnierId Eindeutige interne ID (UUID). * @property veranstaltungId Referenz auf die übergeordnete Veranstaltung. * @property name Offizieller Name des Turniers. + * @property turnierNummer Offizielle 5-stellige Turniernummer. * @property sparte Sparte des Turniers (Springen, Dressur, Vielseitigkeit, etc.). * @property kategorie Turnierkategorie gemäß ÖTO (CSN-C, CDN, CAN, etc.). + * @property reglement Reglement, dem das Turnier unterliegt. * @property datum Datum des Turniers (kann innerhalb der Veranstaltungsdauer liegen). - * @property richterObmannId ID des Richter-Obmanns (Referenz auf officials-context). + * @property einschraenkungen Einschränkungen des Teilnehmerkreises. + * @property turnierbeauftragterId ID des Turnierbeauftragten (TB) (Referenz auf officials-context). * @property parcoursbauerId ID des Parcoursbauers (Referenz auf officials-context, nur Springen). + * @property nennschluss Nennschluss (Datum/Uhrzeit). + * @property nachnenngebuehrVerlangt Ob Nachnenngebühr verlangt wird. + * @property nenntauschboerseAktiv Ob die Nenntauschbörse aktiv ist. * @property status Aktueller Status des Turniers. * @property maxBewerbe Maximale Anzahl an Bewerben (optional, aus Ausschreibung). * @property istMeisterschaft Ob dieses Turnier Meisterschafts-Charakter hat. @@ -52,15 +59,22 @@ data class Turnier( val turnierNummer: String, var sparte: SparteE, var kategorie: TurnierkategorieE, + var reglement: ReglementE = ReglementE.OETO, var datum: LocalDate, var einschraenkungen: List = emptyList(), // Funktionäre @Serializable(with = UuidSerializer::class) - var richterObmannId: Uuid? = null, + var turnierbeauftragterId: Uuid? = null, @Serializable(with = UuidSerializer::class) var parcoursbauerId: Uuid? = null, + // Meldestellen-Flags + @Serializable(with = InstantSerializer::class) + var nennschluss: Instant? = null, + var nachnenngebuehrVerlangt: Boolean = false, + var nenntauschboerseAktiv: Boolean = false, + // Workflow-Status var status: TurnierStatusE = TurnierStatusE.GEPLANT, @@ -83,8 +97,8 @@ data class Turnier( */ fun validateFunktionaerBesetzung(): List { val warnings = mutableListOf() - if (richterObmannId == null) { - warnings.add("Kein Richter-Obmann zugewiesen. Pflichtfeld für Turnierdurchführung (ÖTO).") + if (turnierbeauftragterId == null) { + warnings.add("Kein Turnierbeauftragter (TB) zugewiesen. Pflichtfeld für Turnierdurchführung (ÖTO).") } if (sparte == SparteE.SPRINGEN && parcoursbauerId == null) { warnings.add("Kein Parcoursbauer zugewiesen. Pflichtfeld für Springturniere (ÖTO).") diff --git a/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Veranstaltung.kt b/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Veranstaltung.kt index 797db1f1..5648b0dc 100644 --- a/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Veranstaltung.kt +++ b/backend/services/events/events-domain/src/main/kotlin/at/mocode/events/domain/model/Veranstaltung.kt @@ -26,6 +26,8 @@ import kotlin.time.Instant * @property ort Location where the event takes place. * @property veranstalterVereinId ID of the organizing club/association. * @property sparten List of sport disciplines included in this event. + * @property austragungsplaetze List of locations/arenas available at this event. + * @property artikelPreisliste List of items/services sold by the organizer at this event. * @property istAktiv Whether the event is currently active. * @property istOeffentlich Whether the event is public. * @property maxTeilnehmer Maximum number of participants (optional). @@ -58,6 +60,8 @@ data class Veranstaltung( // Event Details var sparten: List = emptyList(), + var austragungsplaetze: List = emptyList(), + var artikelPreisliste: List = emptyList(), var istAktiv: Boolean = true, var istOeffentlich: Boolean = true, var maxTeilnehmer: Int? = null, diff --git a/core/core-domain/src/commonMain/kotlin/at/mocode/core/domain/model/Enums.kt b/core/core-domain/src/commonMain/kotlin/at/mocode/core/domain/model/Enums.kt index 5c549137..8be69a92 100644 --- a/core/core-domain/src/commonMain/kotlin/at/mocode/core/domain/model/Enums.kt +++ b/core/core-domain/src/commonMain/kotlin/at/mocode/core/domain/model/Enums.kt @@ -524,3 +524,15 @@ enum class PlatzTypE { /** Sonstige Fläche */ SONSTIGE } + +/** + * Reglement, dem das Turnier unterliegt. + */ +@Serializable +enum class ReglementE { + /** Nationales Reglement (ÖTO) */ + OETO, + + /** Internationales Reglement (FEI) */ + FEI +}