impl div Klassen
This commit is contained in:
@@ -11,8 +11,15 @@ enum class DatenQuelleE { OEPS_ZNS, MANUELL }
|
||||
@Serializable
|
||||
enum class VerbandE { OEPS, FEI, SONSTIGE }
|
||||
|
||||
@Serializable
|
||||
enum class CupSerieTypE { CUP_SERIE }
|
||||
|
||||
|
||||
@Serializable
|
||||
enum class LizenzKategorieE { REITERLIZENZ, FAHRERLIZENZ, STARTKARTE }
|
||||
@Serializable
|
||||
enum class LizenzTyp { REITER, FAHRER, VOLTIGIERER, WESTERN, WORKING_EQUITATION, POLO, STARTKARTE_ALLG, STARTKARTE_VOLTIGIEREN, STARTKARTE_WESTERN, STARTKARTE_ISLAND, STARTKARTE_FAHREN_JUGEND, STARTKARTE_HORSEBALL, STARTKARTE_POLO, PARAEQUESTRIAN, SONSTIGE }
|
||||
|
||||
|
||||
@Serializable
|
||||
enum class SportfachStammdatenTypE { DRESSURAUFGABE, WERTUNGSVERFAHREN_SPRINGEN, WERTUNGSVERFAHREN_DRESSUR, BEWERBSKLASSE, BEWERBSKATEGORIE_OETO }
|
||||
@@ -24,37 +31,43 @@ enum class PruefungsViereckE { VIERECK_20X40, VIERECK_20X60 }
|
||||
enum class RichtverfahrenModusE { GM, GT }
|
||||
|
||||
@Serializable
|
||||
enum class GeschlechtE { M, W }
|
||||
enum class ArtDesStechensE { EINFACHES_STECHEN }
|
||||
|
||||
@Serializable
|
||||
enum class PferdeGeschlechtE {
|
||||
HENGST, STUTE, WALLACH, UNBEKANNT
|
||||
}
|
||||
|
||||
@Serializable
|
||||
enum class EventStatusE { IN_PLANUNG, AKTIV, BEENDET }
|
||||
|
||||
@Serializable
|
||||
enum class VeranstalterTyp { VEREIN, FIRMA, PRIVATPERSON, SONSTIGE, UNBEKANNT }
|
||||
enum class NennungsArtE {
|
||||
ONLINE_PORTAL, EZNS_OEPS, EMAIL, TELEFON, FAX, VOR_ORT
|
||||
}
|
||||
|
||||
@Serializable
|
||||
enum class PlatzTyp { AUSTRAGUNG, VORBEREITUNG, LONGIEREN, SONSTIGES }
|
||||
enum class VeranstalterTypE { VEREIN, FIRMA, PRIVATPERSON, SONSTIGE, UNBEKANNT }
|
||||
@Serializable
|
||||
enum class NennungsArt { OEPS_ZNS, EIGENES_ONLINE, DIREKT_VERANSTALTER_EMAIL, DIREKT_VERANSTALTER_TELEFON, DIREKT_VERANSTALTER_WHATSAPP, SONSTIGE }
|
||||
enum class PlatzTypE { AUSTRAGUNG, VORBEREITUNG, LONGIEREN, SONSTIGES }
|
||||
|
||||
@Serializable
|
||||
enum class SparteE { DRESSUR, SPRINGEN, VIELSEITIGKEIT, FAHREN, VOLTIGIEREN, WESTERN, DISTANZ, ISLAND, PFERDESPORT_SPIEL, BASIS, KOMBINIERT, SONSTIGES }
|
||||
|
||||
@Serializable
|
||||
enum class BewerbStatus { GEPLANT, OFFEN_FUER_NENNUNG, GESCHLOSSEN_FUER_NENNUNG, LAEUFT, ABGESCHLOSSEN, ABGESAGT }
|
||||
@Serializable
|
||||
enum class Bedingungstyp { LIZENZ_REITER, LIZENZ_FAHRER, ALTER_PFERD, ALTER_REITER, RASSE_PFERD, GESCHLECHT_PFERD, GESCHLECHT_REITER, STARTKARTE, SONSTIGES }
|
||||
@Serializable
|
||||
enum class BeginnzeitTyp { FIX_UM, NACH_BEWERB, CA_UM, ANSCHLIESSEND }
|
||||
enum class BeginnzeitTypE { FIX_UM, NACH_BEWERB, CA_UM, ANSCHLIESSEND }
|
||||
@Serializable
|
||||
enum class Operator { GLEICH, UNGLEICH, MINDESTENS, MAXIMAL, ZWISCHEN, IN_LISTE, NICHT_IN_LISTE }
|
||||
@Serializable
|
||||
enum class FunktionaerRolle { RICHTER, PARCOURSBAUER, PARCOURSBAU_ASSISTENT, TECHN_DELEGIERTER, TURNIERBEAUFTRAGTER, STEWARD, ZEITNEHMER, SCHREIBER, VERANSTALTER_KONTAKT, TURNIERLEITER, HELFER, SONSTIGE }
|
||||
|
||||
@Serializable
|
||||
enum class RichterPosition { BEI_C, BEI_E, BEI_H, BEI_M, BEI_B, VORSITZ, SEITENRICHTER, SONSTIGE }
|
||||
enum class RichterPositionE { C, E, H, M, B, VORSITZ, SEITENRICHTER, SONSTIGE }
|
||||
@Serializable
|
||||
enum class Geschlecht { M, W, D, UNBEKANNT }
|
||||
@Serializable
|
||||
enum class LizenzTyp { REITER, FAHRER, VOLTIGIERER, WESTERN, WORKING_EQUITATION, POLO, STARTKARTE_ALLG, STARTKARTE_VOLTIGIEREN, STARTKARTE_WESTERN, STARTKARTE_ISLAND, STARTKARTE_FAHREN_JUGEND, STARTKARTE_HORSEBALL, STARTKARTE_POLO, PARAEQUESTRIAN, SONSTIGE }
|
||||
enum class GeschlechtE { M, W, D, UNBEKANNT }
|
||||
@Serializable
|
||||
enum class GeschlechtPferd { HENGST, STUTE, WALLACH, UNBEKANNT }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package at.mocode.shared.model
|
||||
|
||||
import at.mocode.shared.enums.BeginnzeitTyp
|
||||
import at.mocode.shared.enums.BeginnzeitTypE
|
||||
import at.mocode.shared.serializers.BigDecimalSerializer
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalTimeSerializer
|
||||
@@ -41,7 +41,7 @@ data class Abteilung(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var platzId: Uuid?, // FK zum Austragungsplatz (kann vom Hauptbewerb abweichen)
|
||||
var datum: LocalDate?,
|
||||
var beginnzeitTyp: BeginnzeitTyp = BeginnzeitTyp.ANSCHLIESSEND,
|
||||
var beginnzeitTypE: BeginnzeitTypE = BeginnzeitTypE.ANSCHLIESSEND,
|
||||
@Serializable(with = KotlinLocalTimeSerializer::class)
|
||||
var beginnzeitFix: LocalTime? = null,
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package at.mocode.shared.model
|
||||
|
||||
import at.mocode.shared.enums.BeginnzeitTyp
|
||||
import at.mocode.shared.enums.BeginnzeitTypE
|
||||
import at.mocode.shared.enums.SparteE
|
||||
import at.mocode.shared.serializers.*
|
||||
import com.benasher44.uuid.Uuid
|
||||
@@ -66,7 +66,7 @@ data class Bewerb(
|
||||
var standardPlatzId: Uuid?, // FK zum Default-Austragungsplatz
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var standardDatum: LocalDate?,
|
||||
var standardBeginnzeitTyp: BeginnzeitTyp = BeginnzeitTyp.ANSCHLIESSEND, // neuer Enum Wert
|
||||
var standardBeginnzeitTypE: BeginnzeitTypE = BeginnzeitTypE.ANSCHLIESSEND, // neuer Enum Wert
|
||||
@Serializable(with = KotlinLocalTimeSerializer::class)
|
||||
var standardBeginnzeitFix: LocalTime? = null,
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package at.mocode.shared.model
|
||||
|
||||
import at.mocode.shared.enums.PlatzTyp
|
||||
import at.mocode.shared.enums.PlatzTypE
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
@@ -13,5 +13,5 @@ data class Platz(
|
||||
var name: String,
|
||||
var dimension: String?,
|
||||
var boden: String?,
|
||||
var typ: PlatzTyp
|
||||
var typ: PlatzTypE
|
||||
)
|
||||
|
||||
@@ -31,7 +31,7 @@ data class Turnier(
|
||||
var datumBis: LocalDate,
|
||||
@Serializable(with = KotlinLocalDateTimeSerializer::class) // Beispiel
|
||||
var nennungsschluss: LocalDateTime?,
|
||||
var nennungsArt: List<NennungsArt> = emptyList(),
|
||||
var nennungsArt: List<NennungsArtE> = emptyList(),
|
||||
var nennungsHinweis: String?,
|
||||
var eigenesNennsystemUrl: String?,
|
||||
@Serializable(with = BigDecimalSerializer::class)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package at.mocode.shared.model
|
||||
|
||||
import at.mocode.shared.enums.VeranstalterTyp
|
||||
import at.mocode.shared.enums.VeranstalterTypE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
@@ -22,7 +22,7 @@ data class Veranstaltung(
|
||||
var datumBis: LocalDate,
|
||||
var veranstalterName: String,
|
||||
var veranstalterOepsNummer: String?,
|
||||
var veranstalterTyp: VeranstalterTyp = VeranstalterTyp.UNBEKANNT,
|
||||
var veranstalterTypE: VeranstalterTypE = VeranstalterTypE.UNBEKANNT,
|
||||
var veranstaltungsortName: String,
|
||||
var veranstaltungsortAdresse: String,
|
||||
var kontaktpersonName: String?,
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Repräsentiert eine spezifische Lizenz oder Qualifikation, die einer Person (`DomPerson`)
|
||||
* zugeordnet ist.
|
||||
*
|
||||
* Diese Entität verknüpft eine Person mit einer globalen Lizenzdefinition (`LizenzTypGlobal`)
|
||||
* und speichert zusätzliche Informationen wie die Gültigkeit.
|
||||
* Die Informationen stammen aus der Verarbeitung der Roh-Lizenzfelder
|
||||
* (insb. `lizenzinfoRawOepsRoh`) aus `Person_ZNS_Staging`.
|
||||
*
|
||||
* @property lizenzId Eindeutiger interner Identifikator für diese zugeordnete Lizenz (UUID).
|
||||
* @property personId Fremdschlüssel zur `DomPerson`, der diese Lizenz besitzt.
|
||||
* @property lizenzTypGlobalId Fremdschlüssel zum `LizenzTypGlobal`, der die Art dieser Lizenz definiert.
|
||||
* @property gueltigBisJahr Das Jahr, bis zu dem diese Lizenz (basierend auf der letzten Zahlung im ZNS) gültig ist.
|
||||
* @property ausgestelltAm Optionales Datum, an dem diese spezifische Lizenz für die Person ausgestellt wurde (nicht immer aus ZNS ersichtlich).
|
||||
* @property istAktivBezahltOeps Gibt an, ob diese Lizenz als "aktiv/bezahlt" aus den OEPS-Daten (primär LIZENZINFO) hervorgeht.
|
||||
* @property notiz Interne Anmerkungen zu dieser spezifischen Lizenzzuordnung.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class DomLizenz(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val lizenzId: Uuid = uuid4(),
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val personId: Uuid, // FK zu DomPerson.personId
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val lizenzTypGlobalId: Uuid, // FK zu LizenzTypGlobal.lizenzTypGlobalId
|
||||
|
||||
var gueltigBisJahr: Int?, // Aus Person_ZNS_Staging.jahrLetzteZahlungLizenzOepsRoh
|
||||
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var ausgestelltAm: LocalDate? = null, // Nicht direkt in LIZENZ01.dat, ggf. manuell oder andere Quelle
|
||||
|
||||
var istAktivBezahltOeps: Boolean = false, // Wird gesetzt, wenn die Lizenz aus LIZENZINFO stammt
|
||||
// oder als Hauptlizenz aktiv ist.
|
||||
|
||||
var notiz: String? = null,
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
+2
-2
@@ -23,7 +23,7 @@ import kotlinx.serialization.Serializable
|
||||
* @property vorname Vorname der Person.
|
||||
* @property titel Akademischer Titel oder Anrede (z.B. Dr., Ing.).
|
||||
* @property geburtsdatum Geburtsdatum der Person.
|
||||
* @property geschlecht Geschlecht der Person.
|
||||
* @property geschlechtE Geschlecht der Person.
|
||||
* @property nationalitaetLandId Fremdschlüssel zur `LandDefinition` für die Nationalität.
|
||||
* @property feiId Optionale FEI-Identifikationsnummer der Person.
|
||||
* @property telefon Private oder geschäftliche Telefonnummer.
|
||||
@@ -59,7 +59,7 @@ data class DomPerson(
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var geburtsdatum: LocalDate? = null, // Konvertiert aus Person_ZNS_Staging.geburtsdatumTextRoh
|
||||
|
||||
var geschlecht: GeschlechtE? = null, // Konvertiert aus Person_ZNS_Staging.geschlechtCodeRoh
|
||||
var geschlechtE: GeschlechtE? = null, // Konvertiert aus Person_ZNS_Staging.geschlechtCodeRoh
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var nationalitaetLandId: Uuid? = null, // Aufgelöst aus Person_ZNS_Staging.nationalitaetCodeRoh via LandDefinition
|
||||
@@ -0,0 +1,56 @@
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Repräsentiert eine spezifische Funktionärsqualifikation, die einer Person (`DomPerson`)
|
||||
* zugeordnet ist.
|
||||
*
|
||||
* Diese Entität verknüpft eine Person mit einer globalen Qualifikationsdefinition (`QualifikationsTyp`)
|
||||
* und kann zusätzliche Informationen wie eine spezifische Bemerkung oder Gültigkeit speichern.
|
||||
* Die Informationen stammen primär aus der Verarbeitung der Roh-Qualifikationskürzel
|
||||
* aus `Person_ZNS_Staging.qualifikationenRawOepsRoh` (welches aus `RICHT01.dat` befüllt wird).
|
||||
*
|
||||
* @property qualifikationId Eindeutiger interner Identifikator für diese zugeordnete Qualifikation (UUID).
|
||||
* @property personId Fremdschlüssel zur `DomPerson`, die diese Qualifikation besitzt.
|
||||
* @property qualTypId Fremdschlüssel zum `QualifikationsTyp`, der die Art dieser Qualifikation definiert.
|
||||
* @property bemerkung Optionale Bemerkungen zu dieser spezifischen Qualifikation der Person
|
||||
* (z.B. spezifische Einsatzbereiche, Einschränkungen).
|
||||
* @property gueltigVon Optionales Datum, ab wann diese Qualifikation für die Person gültig ist.
|
||||
* @property gueltigBis Optionales Datum, bis wann diese Qualifikation für die Person gültig ist.
|
||||
* @property istAktiv Gibt an, ob diese Qualifikation für die Person aktuell als aktiv betrachtet wird.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class DomQualifikation(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val qualifikationId: Uuid = uuid4(),
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val personId: Uuid, // FK zu DomPerson.personId
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val qualTypId: Uuid, // FK zu QualifikationsTyp.qualTypId
|
||||
|
||||
var bemerkung: String? = null,
|
||||
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var gueltigVon: LocalDate? = null, // Nicht direkt in RICHT01.dat, aber evtl. für manuelle Pflege
|
||||
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var gueltigBis: LocalDate? = null, // Nicht direkt in RICHT01.dat
|
||||
|
||||
var istAktiv: Boolean = true, // Standardmäßig aktiv, wenn importiert
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package at.mocode.shared.model.domaene.verein
|
||||
package at.mocode.shared.model.domaene
|
||||
|
||||
import at.mocode.shared.enums.DatenQuelleE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
@@ -0,0 +1,48 @@
|
||||
import at.mocode.shared.enums.PlatzTypE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Repräsentiert einen physischen Platz auf einer Reitanlage, der für verschiedene Zwecke
|
||||
* im Rahmen einer Pferdesportveranstaltung genutzt werden kann.
|
||||
*
|
||||
* @property platzId Eindeutiger interner Identifikator für diesen Platz (UUID).
|
||||
* @property name Der Name oder die Bezeichnung des Platzes.
|
||||
* @property typ Die Art des Platzes (z.B. AUSTRAGUNG, VORBEREITUNG).
|
||||
* @property laengeMeter Optionale Angabe der Länge des Platzes in Metern.
|
||||
* @property breiteMeter Optionale Angabe der Breite des Platzes in Metern.
|
||||
* @property bodenbelag Beschreibung des Bodenbelags.
|
||||
* @property ueberdacht Gibt an, ob der Platz überdacht ist.
|
||||
* @property beleuchtungVorhanden Gibt an, ob eine Beleuchtung für den Platz vorhanden ist.
|
||||
* @property istAktiv Gibt an, ob dieser Platz aktuell verfügbar und nutzbar ist.
|
||||
* @property notizen Interne Notizen oder zusätzliche Informationen zum Platz.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class Platz(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val platzId: Uuid = uuid4(),
|
||||
|
||||
var name: String,
|
||||
var typ: PlatzTypE,
|
||||
|
||||
var laengeMeter: Double? = null,
|
||||
var breiteMeter: Double? = null,
|
||||
var bodenbelag: String? = null,
|
||||
var ueberdacht: Boolean? = null,
|
||||
var beleuchtungVorhanden: Boolean? = null,
|
||||
|
||||
var istAktiv: Boolean = true,
|
||||
var notizen: String? = null,
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
import at.mocode.shared.enums.BeginnzeitTypE
|
||||
import at.mocode.shared.enums.PlatzTypE
|
||||
import at.mocode.shared.model.DotierungsAbstufung
|
||||
import at.mocode.shared.serializers.BigDecimalSerializer
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalTimeSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import com.ionspin.kotlin.bignum.decimal.BigDecimal
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.datetime.LocalTime
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Repräsentiert eine spezifische Abteilung innerhalb einer Prüfung (`Pruefung_OEPS`).
|
||||
* Eine Prüfung kann in eine oder mehrere Abteilungen unterteilt sein, basierend auf
|
||||
* Kriterien wie Lizenzstufen, Altersklassen, Pferdeeigenschaften etc.
|
||||
* Nennungen, Startlisten und Ergebnislisten beziehen sich primär auf diese Abteilungen.
|
||||
*
|
||||
* @property pruefungAbteilungDbId Eindeutiger interner Identifikator für diese Abteilung (UUID).
|
||||
* @property pruefungDbId Fremdschlüssel zur übergeordneten `Pruefung_OEPS`.
|
||||
* @property abteilungsKennzeichen Ein Kennzeichen für diese Abteilung innerhalb der Prüfung (z.B. "1", "A", "R1").
|
||||
* Wird oft zur Erstellung der vollständigen Bewerbsnummer verwendet (z.B. "12/1").
|
||||
* @property bezeichnungOeffentlich Die offizielle Bezeichnung dieser Abteilung, wie sie auf Listen erscheinen soll
|
||||
* (z.B. "R1 Reiter", "Lizenzfrei", "Junioren"). Falls leer, kann sie aus der
|
||||
* Bezeichnung der Hauptprüfung und dem Kennzeichen abgeleitet werden.
|
||||
* @property bezeichnungIntern Interne Bezeichnung oder Notiz zur Abteilung.
|
||||
* @property teilKritMinLizenzStammdatumId Optionaler FK zu `Sportfachliche_Stammdaten` (Typ LIZENZTYP_OEPS_STUFE),
|
||||
* der die Mindestlizenz für diese Abteilung definiert.
|
||||
* @property teilKritMaxLizenzStammdatumId Optionaler FK für die Maximallizenz.
|
||||
* @property teilKritErlaubteLizenzenStammdatenIds Liste von FKs zu `Sportfachliche_Stammdaten` (Typ LIZENZTYP_OEPS),
|
||||
* die die exakt erlaubten Lizenzen definieren.
|
||||
* @property teilKritMinPferdealter Mindestalter der Pferde für diese Abteilung.
|
||||
* @property teilKritMaxPferdealter Maximalalter der Pferde für diese Abteilung.
|
||||
* @property teilKritAltersklasseReiterStammdatumId FK zu `Sportfachliche_Stammdaten` (Typ ALTERSCLASSEN_DEFINITION),
|
||||
* der die Altersklasse der Reiter definiert.
|
||||
* @property teilKritPferderasseStammdatumId FK zu `Sportfachliche_Stammdaten` (Typ PFERDERASSE),
|
||||
* der die erlaubte Pferderasse definiert.
|
||||
* @property teilKritAnzahlStarterMin Optionale Mindestanzahl an Startern für diese Abteilung.
|
||||
* @property teilKritAnzahlStarterMax Optionale Maximalanzahl an Startern für diese Abteilung.
|
||||
* @property teilKritFreiTextBeschreibung Freitextliche Beschreibung weiterer oder spezieller Teilungskriterien.
|
||||
* @property startgeld Überschreibt ggf. das Standard-Startgeld der `Pruefung_OEPS` für diese Abteilung.
|
||||
* @property dotierungen Spezifische Dotierungsabstufungen für diese Abteilung.
|
||||
* @property platzId Optionaler Fremdschlüssel zum `Platz`, falls diese Abteilung auf einem anderen Platz
|
||||
* als dem Standardplatz der `Pruefung_OEPS` stattfindet.
|
||||
* @property datum Optionales spezifisches Datum für diese Abteilung.
|
||||
* @property beginnzeitTyp Typ der geplanten Beginnzeit für diese Abteilung.
|
||||
* @property beginnzeitFix Fixe Beginnzeit, falls Typ FIX_UM.
|
||||
* @property beginnNachAbteilungOderPruefungId Fremdschlüssel zu einer anderen `Pruefung_Abteilung` oder `Pruefung_OEPS`,
|
||||
* nach der diese Abteilung starten soll.
|
||||
* @property beginnzeitCa Ungefähre Beginnzeit, falls Typ CA_UM.
|
||||
* @property dauerProStartGeschaetztSek Geschätzte Dauer pro Starter in Sekunden für diese Abteilung.
|
||||
* Überschreibt ggf. Werte aus `Pruefung_OEPS` oder den spartspezifischen Details.
|
||||
* @property umbauzeitNachAbteilungMin Umbauzeit in Minuten nach dieser Abteilung.
|
||||
* @property besichtigungszeitVorAbteilungMin Besichtigungszeit in Minuten vor dieser Abteilung.
|
||||
* @property stechzeitZusaetzlichMin Zusatzzeit für ein eventuelles Stechen in Minuten für diese Abteilung.
|
||||
* @property istAktivFuerNennung Gibt an, ob für diese Abteilung Nennungen entgegengenommen werden können.
|
||||
* @property istStartlisteFinal Gibt an, ob die Startliste für diese Abteilung finalisiert wurde.
|
||||
* @property istErgebnislisteFinal Gibt an, ob die Ergebnisliste für diese Abteilung finalisiert wurde.
|
||||
* @property anzahlNennungen Informativ: Aktuelle Anzahl der Nennungen für diese Abteilung.
|
||||
* @property anzahlStarterEffektiv Informativ: Tatsächliche Anzahl der Starter.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class Pruefung_Abteilung(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val pruefungAbteilungDbId: Uuid = uuid4(),
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val pruefungDbId: Uuid, // FK zu Pruefung_OEPS.pruefungDbId
|
||||
|
||||
var abteilungsKennzeichen: String, // z.B. "1", "A", "R1"
|
||||
var bezeichnungOeffentlich: String? = null,
|
||||
var bezeichnungIntern: String? = null,
|
||||
|
||||
// Strukturierte Teilungskriterien (Verweise auf Sportfachliche_Stammdaten)
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var teilKritMinLizenzStammdatumId: Uuid? = null, // Typ LIZENZTYP_OEPS_STUFE
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var teilKritMaxLizenzStammdatumId: Uuid? = null, // Typ LIZENZTYP_OEPS_STUFE
|
||||
var teilKritErlaubteLizenzenStammdatenIds: List<@Serializable(with = UuidSerializer::class) Uuid>? = null, // Typ LIZENZTYP_OEPS
|
||||
var teilKritMinPferdealter: Int? = null,
|
||||
var teilKritMaxPferdealter: Int? = null,
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var teilKritAltersklasseReiterStammdatumId: Uuid? = null, // Typ ALTERSCLASSEN_DEFINITION
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var teilKritPferderasseStammdatumId: Uuid? = null, // Typ PFERDERASSE
|
||||
var teilKritAnzahlStarterMin: Int? = null,
|
||||
var teilKritAnzahlStarterMax: Int? = null,
|
||||
var teilKritFreiTextBeschreibung: String? = null,
|
||||
|
||||
// Abteilungsspezifische Überschreibungen
|
||||
@Serializable(with = BigDecimalSerializer::class)
|
||||
var startgeld: BigDecimal? = null, // Überschreibt Pruefung_OEPS.startgeldStandard
|
||||
var dotierungen: List<DotierungsAbstufung> = emptyList(), // Eigene Dotierung, erbt sonst von Pruefung_OEPS
|
||||
|
||||
// Zeitplanung (überschreibt ggf. Werte aus Pruefung_OEPS oder deren spartspez. Details)
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var platzId: Uuid?, // FK zu Platz.platzId
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var datum: LocalDate?,
|
||||
var beginnzeitTyp: BeginnzeitTypE = BeginnzeitTypE.ANSCHLIESSEND,
|
||||
@Serializable(with = KotlinLocalTimeSerializer::class)
|
||||
var beginnzeitFix: LocalTime? = null,
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var beginnNachAbteilungOderPruefungId: Uuid?, // Kann ID einer anderen Pruefung_Abteilung oder Pruefung_OEPS sein
|
||||
@Serializable(with = KotlinLocalTimeSerializer::class)
|
||||
var beginnzeitCa: LocalTime? = null,
|
||||
var dauerProStartGeschaetztSek: Int? = null,
|
||||
var umbauzeitNachAbteilungMin: Int? = null,
|
||||
var besichtigungszeitVorAbteilungMin: Int? = null,
|
||||
var stechzeitZusaetzlichMin: Int? = null,
|
||||
|
||||
var istAktivFuerNennung: Boolean = true,
|
||||
var istStartlisteFinal: Boolean = false,
|
||||
var istErgebnislisteFinal: Boolean = false,
|
||||
|
||||
var anzahlNennungen: Int = 0, // Wird dynamisch befüllt oder periodisch aktualisiert
|
||||
var anzahlStarterEffektiv: Int = 0, // Wird dynamisch befüllt
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
@@ -0,0 +1,92 @@
|
||||
import at.mocode.shared.enums.BeginnzeitTypE
|
||||
import at.mocode.shared.enums.SparteE
|
||||
import at.mocode.shared.serializers.*
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import com.ionspin.kotlin.bignum.decimal.BigDecimal
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.datetime.LocalTime
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Repräsentiert die Basis-Informationen eines Bewerbs (einer Prüfung) innerhalb eines Turniers.
|
||||
* Diese Entität enthält spartenübergreifende Attribute. Spartenspezifische Details
|
||||
* werden in separaten, verknüpften Entitäten gespeichert (z.B. `DressurPruefungSpezifika`).
|
||||
*
|
||||
* @property pruefungDbId Eindeutiger interner Identifikator für diese Prüfung/diesen Bewerb (UUID).
|
||||
* @property turnierOepsId Fremdschlüssel zum übergeordneten `Turnier_OEPS`.
|
||||
* @property oepsBewerbNrAnzeige Die offizielle Nummer des Bewerbs gemäß Ausschreibung (z.B. 1, 12).
|
||||
* @property nameTextUebergeordnet Die Hauptbezeichnung des Bewerbs/der Prüfung
|
||||
* (z.B. "Dressurprüfung", "Standardspringprüfung").
|
||||
* @property sparte Die Pferdesportsparte dieses Bewerbs (DRESSUR, SPRINGEN, etc.).
|
||||
* Wird beim Anlegen gesetzt, ggf. vorgeschlagen aus der gewählten ÖTO-Kategorie.
|
||||
* @property oepsKategorieStammdatumId Fremdschlüssel zu `Sportfachliche_Stammdaten` (Typ BEWERBSKATEGORIE_OETO),
|
||||
* die die spezifische ÖTO-Kategorie dieses Bewerbs definiert (z.B. "CDN-C Neu").
|
||||
* @property istDotiert Gibt an, ob dieser Bewerb grundsätzlich mit Geldpreisen dotiert ist.
|
||||
* Details zur Dotierung können in der Abteilung oder spartspezifisch festgelegt werden.
|
||||
* @property startgeldStandard Ein Standard-Startgeld für diesen Bewerb. Kann von der Abteilung oder
|
||||
* spartspezifischen Regeln überschrieben werden.
|
||||
* @property oepsBewerbsartCodeZns Optionaler OEPS-Code für die Art des Bewerbs, relevant für den ZNS-Export.
|
||||
* @property notizenIntern Interne Notizen oder Kommentare zu diesem Bewerb.
|
||||
* @property istAbgesagt Gibt an, ob der Bewerb abgesagt wurde.
|
||||
* @property erfordertAbteilungsAuswahlFuerNennung Gibt an, ob für Nennungen zu diesem Bewerb
|
||||
* zwingend eine spezifische Abteilung ausgewählt werden muss (true), oder ob Nennungen direkt
|
||||
* zum Bewerb (implizit zur Default-Abteilung) erfolgen können (false).
|
||||
* @property standardPlatzId Optionaler Default-Austragungsort (FK zu `Platz`) für diesen Bewerb.
|
||||
* Kann von der Abteilung überschrieben werden.
|
||||
* @property standardDatum Optionales Default-Datum für diesen Bewerb. Kann von der Abteilung überschrieben werden.
|
||||
* @property standardBeginnzeitTyp Default-Typ für die geplante Beginnzeit.
|
||||
* @property standardBeginnzeitFix Default-fixe Beginnzeit, falls Typ FIX_UM.
|
||||
* @property standardBeginnNachPruefungId Default-Verweis auf eine andere Pruefung_OEPS (deren letzte Abteilung),
|
||||
* falls Typ ANSCHLIESSEND oder NACH_VORHERIGEM_BEWERB_ABTEILUNG.
|
||||
* @property standardBeginnzeitCa Default-ungefähre Beginnzeit, falls Typ CA_UM.
|
||||
* @property anzahlAbteilungen Die Anzahl der für diesen Bewerb definierten Abteilungen (informativ).
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class Pruefung_OEPS( // Unsere BewerbBasis
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val pruefungDbId: Uuid = uuid4(),
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val turnierOepsId: Uuid, // Umbenannt von turnier_db_id für Konsistenz
|
||||
|
||||
var oepsBewerbNrAnzeige: Int, // Deine nummerInAusschreibung
|
||||
var nameTextUebergeordnet: String,
|
||||
var sparte: SparteE, // Explizit, kann aus oepsKategorieStammdatumId vorgeschlagen werden
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var oepsKategorieStammdatumId: Uuid, // FK zu Sportfachliche_Stammdaten (Typ BEWERBSKATEGORIE_OETO)
|
||||
|
||||
var istDotiert: Boolean = false,
|
||||
@Serializable(with = BigDecimalSerializer::class)
|
||||
var startgeldStandard: BigDecimal? = null,
|
||||
|
||||
var oepsBewerbsartCodeZns: String? = null,
|
||||
var notizenIntern: String? = null,
|
||||
var istAbgesagt: Boolean = false,
|
||||
var erfordertAbteilungsAuswahlFuerNennung: Boolean = true, // Default: Nennung nur für spezifische Abteilung
|
||||
|
||||
// Standard-Zeitplanungswerte (können von Abteilung oder spartspez. Details überschrieben werden)
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var standardPlatzId: Uuid? = null,
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var standardDatum: LocalDate? = null,
|
||||
var standardBeginnzeitTyp: BeginnzeitTypE = BeginnzeitTypE.ANSCHLIESSEND,
|
||||
@Serializable(with = KotlinLocalTimeSerializer::class)
|
||||
var standardBeginnzeitFix: LocalTime? = null,
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var standardBeginnNachPruefungId: Uuid? = null, // Verweis auf Pruefung_OEPS.pruefungDbId
|
||||
@Serializable(with = KotlinLocalTimeSerializer::class)
|
||||
var standardBeginnzeitCa: LocalTime? = null,
|
||||
|
||||
var anzahlAbteilungen: Int = 0, // Wird berechnet oder bei Erstellung der Abteilungen gesetzt
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
@@ -0,0 +1,125 @@
|
||||
import at.mocode.shared.enums.EventStatusE
|
||||
import at.mocode.shared.enums.NennungsArtE
|
||||
import at.mocode.shared.enums.RegelwerkTypE
|
||||
import at.mocode.shared.enums.SparteE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateTimeSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.datetime.LocalDateTime
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Repräsentiert ein spezifisches, vom zuständigen Verband (OEPS, FEI) genehmigtes Turnier
|
||||
* innerhalb eines Veranstaltungsrahmens. Enthält alle turnierspezifischen Informationen
|
||||
* gemäß Ausschreibung und die für den Turnierbericht relevanten Daten.
|
||||
*
|
||||
* @property turnierOepsId Eindeutiger interner Identifikator für dieses Turnier (UUID).
|
||||
* @property veranstaltungsRahmenId Fremdschlüssel zum übergeordneten `VeranstaltungsRahmen`.
|
||||
* @property oepsTurnierNr Die offizielle OEPS-Turniernummer (z.B. "25319"). Sollte eindeutig sein.
|
||||
* @property titel Der offizielle Titel des Turniers laut Ausschreibung
|
||||
* (z.B. "CSN-C NEU CSNP-C NEU NEUMARKT/M., OÖ").
|
||||
* @property untertitel Optionaler Untertitel oder Zusatzbezeichnung für das Turnier.
|
||||
* @property hauptsparte Die primäre Pferdesportsparte dieses Turniers (z.B. SPRINGEN, DRESSUR).
|
||||
* Auch wenn Bewerbe anderer Sparten stattfinden können, gibt es meist eine Hauptausrichtung.
|
||||
* @property oetoKategorieStammdatenIds Liste von Fremdschlüsseln zu `Sportfachliche_Stammdaten` (Typ BEWERBSKATEGORIE_OETO),
|
||||
* die die offiziellen ÖTO-Kategorien dieses Turniers definieren (z.B. ["CDN-C Neu", "CDNP-C Neu"]).
|
||||
* @property regelwerkTyp Das primär für dieses Turnier geltende Regelwerk (ÖTO, FEI).
|
||||
* @property datumVon Spezifisches Startdatum dieses Turniers.
|
||||
* @property datumBis Spezifisches Enddatum dieses Turniers.
|
||||
* @property nennschlussNenndatei Zeitlicher Nennschluss für die vom OEPS bereitgestellte Nenndatei (n2).
|
||||
* @property nennschlussOffiziell Offizieller Nennschluss laut Ausschreibung.
|
||||
* @property nennungsArtBevorzugt Die bevorzugte Art der Nennung für dieses Turnier (z.B. Online-Portal, ZNS).
|
||||
* @property nennungsHinweisText Wichtige Hinweise zur Nennung direkt aus der Ausschreibung.
|
||||
* @property pdfAusschreibungUrl URL oder Pfad zur offiziellen PDF-Ausschreibung.
|
||||
* @property kommentarIntern Interne Notizen oder Kommentare zum Turnier für die Meldestelle.
|
||||
* @property typNationalInternational Kennzeichnung, ob es sich um ein nationales oder internationales Turnier handelt.
|
||||
* @property spracheDefault Hauptsprache für Dokumente und Kommunikation dieses Turniers.
|
||||
* @property startnummernVerwenden Gibt an, ob Startnummern (zusätzlich zu Kopfnummern) verwendet werden.
|
||||
* @property nennungUeberZnsMoeglichOeps Info, ob dieses Turnier über das OEPS eZNS nennbar ist/war.
|
||||
* @property erhebeNachnennungsgebuehr Gibt an, ob eine Nachnenngebühr erhoben wird.
|
||||
* @property erhebeNennungstauschgebuehr Gibt an, ob eine Gebühr für Pferd-/Reitertausch erhoben wird.
|
||||
* @property logoTurnierUrl URL oder Pfad zu einem spezifischen Logo für dieses Turnier.
|
||||
* @property turnierleiterDomPersonId Fremdschlüssel zur `DomPerson` des Turnierleiters.
|
||||
* @property turnierbeauftragterDomPersonId Fremdschlüssel zur `DomPerson` des Turnierbeauftragten (TBA).
|
||||
* @property meldestelleTelefon Telefonnummer der Meldestelle für dieses Turnier.
|
||||
* @property meldestelleOeffnungszeiten Öffnungszeiten der Meldestelle.
|
||||
* @property startUndErgebnislistenUrl URL, unter der Start- und Ergebnislisten veröffentlicht werden.
|
||||
* @property istBoxenMoeglich Gibt an, ob eine Einstallung/Boxenreservierung möglich ist.
|
||||
* @property anmerkungBoxen Details zu den Boxen (Anzahl, Preis, Reservierung etc.).
|
||||
* @property defaultDauerProStarterSek Standarddauer pro Starter in Sekunden (kann von Bewerb/Abteilung überschrieben werden).
|
||||
* @property defaultUmbauzeitMin Standard-Umbauzeit zwischen Bewerben in Minuten.
|
||||
* @property defaultBesichtigungszeitMin Standard-Besichtigungszeit (z.B. Parcours) in Minuten.
|
||||
* @property defaultStechzeitMin Standard-Zusatzzeit für ein Stechen in Minuten.
|
||||
* @property statusTurnier Aktueller Status des Turniers (analog zu EventStatusE, aber für das Turnier).
|
||||
* @property berichtAnmerkungDopingkontrollen Textfeld für den Turnierbericht.
|
||||
* @property berichtDopingboxVorhanden Boolean für den Turnierbericht.
|
||||
* @property berichtPferdepasskontrollenBeiBewerb Textfeld für den Turnierbericht.
|
||||
* @property berichtPferdepasskontrollenBeanstandungen Textfeld für den Turnierbericht.
|
||||
* @property berichtAnmerkungMeldestelleFunktion Textfeld für den Turnierbericht.
|
||||
* @property berichtAnmerkungZeitnehmungFunktion Textfeld für den Turnierbericht.
|
||||
* @property berichtAnzeigetafelInfo Textfeld für den Turnierbericht.
|
||||
* @property berichtZuschauertribueneInfo Textfeld für den Turnierbericht.
|
||||
* @property berichtStallungenInfo Textfeld für den Turnierbericht.
|
||||
* @property berichtAblaufBesonderheitenUnfaelleProteste Textfeld für den Turnierbericht.
|
||||
* @property berichtBesondereVorkommnisse Textfeld für den Turnierbericht.
|
||||
* @property berichtVerbesserungsvorschlaege Textfeld für den Turnierbericht.
|
||||
* @property berichtGesamteindruck Textfeld für den Turnierbericht.
|
||||
* @property berichtNennlisteMitSperrlisteGeprueft Boolean für den Turnierbericht.
|
||||
* @property berichtNennlisteBeanstandungen Textfeld für den Turnierbericht.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class Turnier_OEPS( // Behält deinen Namen bei
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val turnierOepsId: Uuid = uuid4(),
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val veranstaltungsRahmenId: Uuid,
|
||||
|
||||
var oepsTurnierNr: String,
|
||||
var titel: String,
|
||||
var untertitel: String? = null,
|
||||
var hauptsparte: SparteE,
|
||||
|
||||
// Hier verwenden wir direkt List<Uuid>. Der Serializer für Uuid selbst (@Serializable(with = UuidSerializer::class) an der Uuid-Klasse)
|
||||
// sollte es kotlinx.serialization ermöglichen, auch Listen davon zu behandeln.
|
||||
var oetoKategorieStammdatenIds: List<@Serializable(with = UuidSerializer::class) Uuid>,
|
||||
|
||||
var regelwerkTyp: RegelwerkTypE = RegelwerkTypE.OETO,
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var datumVon: LocalDate,
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var datumBis: LocalDate,
|
||||
|
||||
@Serializable(with = KotlinLocalDateTimeSerializer::class)
|
||||
var nennschlussOffiziell: LocalDateTime? = null, // Nur der offizielle Nennschluss lt. Ausschreibung
|
||||
|
||||
var pdfAusschreibungUrl: String? = null,
|
||||
var kommentarIntern: String? = null,
|
||||
var typNationalInternational: String = "National",
|
||||
var spracheDefault: String = "Deutsch",
|
||||
var logoTurnierUrl: String? = null,
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var turnierleiterDomPersonId: Uuid? = null,
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var turnierbeauftragterDomPersonId: Uuid? = null,
|
||||
|
||||
var meldestelleTelefon: String? = null,
|
||||
var meldestelleOeffnungszeiten: String? = null,
|
||||
var startUndErgebnislistenUrl: String? = null, // Kann auch dynamisch generiert werden
|
||||
|
||||
var statusTurnier: EventStatusE = EventStatusE.IN_PLANUNG, // Wiederverwendung EventStatusE
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Verknüpft ein Turnier (`Turnier_OEPS`) mit einem genutzten Platz (`Platz`)
|
||||
* und beschreibt den spezifischen Verwendungszweck dieses Platzes im Kontext des Turniers.
|
||||
*
|
||||
* @property turnierOepsId Fremdschlüssel zum `Turnier_OEPS`. Teil des zusammengesetzten Primärschlüssels.
|
||||
* @property platzId Fremdschlüssel zum `Platz`. Teil des zusammengesetzten Primärschlüssels.
|
||||
* @property verwendungszweck Beschreibung, wofür der Platz bei diesem Turnier genutzt wird.
|
||||
* @property istHauptAustragungsplatz Optionales Flag, um den primären Austragungsplatz zu kennzeichnen.
|
||||
* @property istHauptVorbereitungsplatz Optionales Flag, um den primären Vorbereitungsplatz zu kennzeichnen.
|
||||
*/
|
||||
@Serializable
|
||||
data class Turnier_hat_Platz(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val turnierOepsId: Uuid, // Teil des PK, FK zu Turnier_OEPS.turnierOepsId
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val platzId: Uuid, // Teil des PK, FK zu Platz.platzId
|
||||
|
||||
var verwendungszweck: String? = null,
|
||||
var istHauptAustragungsplatz: Boolean? = false,
|
||||
var istHauptVorbereitungsplatz: Boolean? = false
|
||||
)
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
package at.mocode.shared.model.veranstaltung
|
||||
|
||||
import at.mocode.shared.enums.EventStatusE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Definiert den übergeordneten Rahmen einer Veranstaltung (z.B. ein Turnierwochenende),
|
||||
* der ein oder mehrere spezifische OEPS-Turniere umfassen kann.
|
||||
*
|
||||
* @property veranstRahmenId Eindeutiger interner Identifikator für diesen Veranstaltungsrahmen (UUID).
|
||||
* @property name Die offizielle oder werbewirksame Bezeichnung des Veranstaltungsrahmens
|
||||
* (z.B. "Neumarkter Pferdesporttage 2025", "Pfingstturnier Sudenhof").
|
||||
* @property eventTypIntern Optionale interne Klassifizierung des Events
|
||||
* (z.B. "StandardWochenende", "Meisterschaftsevent", "Cupveranstaltung").
|
||||
* @property ortName Name der Anlage oder des Hauptortes der Veranstaltung (z.B. "Reitanlage Stroblmair").
|
||||
* @property ortStrasse Straße und Hausnummer des Veranstaltungsortes.
|
||||
* @property ortPlz Postleitzahl des Veranstaltungsortes.
|
||||
* @property ortOrt Ortschaft des Veranstaltungsortes.
|
||||
* @property datumVonGesamt Startdatum des gesamten Veranstaltungsrahmens.
|
||||
* @property datumBisGesamt Enddatum des gesamten Veranstaltungsrahmens.
|
||||
* @property logoUrl Optionaler URL-Pfad zu einem Logo für den Veranstaltungsrahmen.
|
||||
* @property webseiteUrl Optionale URL zur Webseite des Veranstaltungsrahmens oder des Veranstalters.
|
||||
* @property hauptveranstalterDomVereinId Optionale Verknüpfung zum `DomVerein`,
|
||||
* der als Hauptveranstalter dieses Rahmenevents auftritt.
|
||||
* @property hauptKontaktpersonDomPersonId Optionale Verknüpfung zur `DomPerson`,
|
||||
* die als Hauptansprechpartner für den gesamten Veranstaltungsrahmen dient.
|
||||
* @property status Aktueller Status des Veranstaltungsrahmens (z.B. in Planung, genehmigt, aktiv).
|
||||
* @property anmerkungenAllgemein Allgemeine Notizen oder Beschreibungen zum Veranstaltungsrahmen.
|
||||
* @property berichtAnmerkungSanitaer Anmerkungen zu sanitären Anlagen für den Turnierbericht.
|
||||
* @property berichtAnmerkungParkenEntladen Anmerkungen zu Park- und Entlademöglichkeiten.
|
||||
* @property berichtAnmerkungSponsorenBetreuung Anmerkungen zur Sponsorenbetreuung.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class VeranstaltungsRahmen(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val veranstRahmenId: Uuid = uuid4(),
|
||||
|
||||
var name: String,
|
||||
var eventTypIntern: String? = null,
|
||||
|
||||
var ortName: String, // Kombiniert aus deinem ort_text oder spezifischer
|
||||
var ortStrasse: String? = null,
|
||||
var ortPlz: String? = null,
|
||||
var ortOrt: String? = null, // Genauer Ort
|
||||
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var datumVonGesamt: LocalDate,
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var datumBisGesamt: LocalDate,
|
||||
|
||||
var logoUrl: String? = null,
|
||||
var webseiteUrl: String? = null,
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var hauptveranstalterDomVereinId: Uuid? = null, // FK zu DomVerein.vereinId
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var hauptKontaktpersonDomPersonId: Uuid? = null, // FK zu DomPerson.personId
|
||||
|
||||
var status: EventStatusE = EventStatusE.IN_PLANUNG,
|
||||
var anmerkungenAllgemein: String? = null,
|
||||
|
||||
// Felder für übergreifende Turnierbericht-Aspekte
|
||||
var berichtAnmerkungSanitaer: String? = null,
|
||||
var berichtAnmerkungParkenEntladen: String? = null,
|
||||
var berichtAnmerkungSponsorenBetreuung: String? = null,
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
import at.mocode.shared.enums.CupSerieTypE
|
||||
import at.mocode.shared.enums.SparteE
|
||||
import at.mocode.shared.serializers.BigDecimalSerializer
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import com.ionspin.kotlin.bignum.decimal.BigDecimal
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Verknüpft eine Meisterschaft/Cup/Serie (`Meisterschaft_Cup_Serie`) mit einer spezifischen
|
||||
* Prüfungsabteilung (`Pruefung_Abteilung`), die als Wertungsprüfung für diesen
|
||||
* übergreifenden Wettbewerb zählt.
|
||||
*
|
||||
* @property mcsId Fremdschlüssel zur `Meisterschaft_Cup_Serie`. Teil des zusammengesetzten Primärschlüssels.
|
||||
* @property pruefungAbteilungDbId Fremdschlüssel zur `Pruefung_Abteilung`. Teil des zusammengesetzten Primärschlüssels.
|
||||
* @property faktorFuerWertung Ein optionaler Faktor, mit dem das Ergebnis dieser Wertungsprüfung
|
||||
* in die Gesamtwertung des Cups/der Meisterschaft einfließt (Default ist 1.0).
|
||||
* @property bemerkung Optionale Bemerkung zu dieser spezifischen Wertungsprüfung im Kontext des Cups
|
||||
* (z.B. "1. Vorrunde", "Finale", "Qualifikation West").
|
||||
* @property istPflichttermin Gibt an, ob die Teilnahme an dieser Wertungsprüfung für die Cup-Gesamtwertung verpflichtend ist.
|
||||
* @property mindestErgebnisNotwendig Optionales Mindestergebnis, das in dieser Prüfung erzielt werden muss,
|
||||
* um für den Cup gewertet zu werden oder sich für das Finale zu qualifizieren.
|
||||
*/
|
||||
@Serializable
|
||||
data class MCS_Wertungspruefung(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val mcsId: Uuid, // Teil des PK, FK zu Meisterschaft_Cup_Serie.mcsId
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val pruefungAbteilungDbId: Uuid, // Teil des PK, FK zu Pruefung_Abteilung.pruefungAbteilungDbId
|
||||
|
||||
@Serializable(with = BigDecimalSerializer::class)
|
||||
var faktorFuerWertung: BigDecimal? = BigDecimal.fromInt(1), // Default 1.0
|
||||
var bemerkung: String? = null,
|
||||
var istPflichttermin: Boolean = false,
|
||||
var mindestErgebnisNotwendig: String? = null // z.B. "Note 6.0", "Fehlerfrei" - muss interpretiert werden
|
||||
)
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
import at.mocode.shared.enums.CupSerieTypE
|
||||
import at.mocode.shared.enums.SparteE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Definiert einen übergreifenden Wettbewerb wie eine Meisterschaft, einen Cup oder eine Turnierserie,
|
||||
* der sich über mehrere Turniere oder spezifische Prüfungen/Abteilungen erstrecken kann und
|
||||
* eigene Reglements sowie eine Gesamtwertung haben kann.
|
||||
*
|
||||
* @property mcsId Eindeutiger interner Identifikator für diese Meisterschaft/Cup/Serie (UUID).
|
||||
* @property name Der offizielle Name der Meisterschaft, des Cups oder der Serie
|
||||
* (z.B. "EQUIVERON Cup 2025", "NÖ Landesmeisterschaft Dressur Allgemeine Klasse").
|
||||
* @property typ Die Art des übergreifenden Wettbewerbs (siehe `CupSerieTypE`).
|
||||
* @property jahr Das Jahr, in dem diese Meisterschaft/Cup/Serie stattfindet oder gewertet wird.
|
||||
* @property sparte Die Pferdesportsparte, für die dieser Wettbewerb primär ausgeschrieben ist.
|
||||
* @property beschreibung Optionale ausführlichere Beschreibung des Wettbewerbs.
|
||||
* @property reglementText Das spezifische Reglement als Text oder Markdown.
|
||||
* @property reglementPdfUrl Optionaler Link zum offiziellen PDF-Reglement.
|
||||
* @property hauptsponsor Optionaler Name des Hauptsponsors.
|
||||
* @property gesamtdotationText Optionale Beschreibung der Gesamtdotation (z.B. "ca. EUR 8.000.- in Sachpreisen").
|
||||
* @property teilnahmebedingungenText Spezifische Teilnahmebedingungen für diesen Wettbewerb.
|
||||
* @property austragungsbedingungenText Spezifische Austragungsbedingungen (z.B. welche Prüfungen zählen).
|
||||
* @property wertungsModusBeschreibung Beschreibung, wie die Gesamtwertung ermittelt wird.
|
||||
* @property oetoRegelReferenzId Optionale Verknüpfung zu einer spezifischen Regel in der
|
||||
* `OETORegelReferenz`-Tabelle, die diesen Wettbewerb oder seine Grundlagen definiert.
|
||||
* @property istAktiv Gibt an, ob dieser Wettbewerb aktuell aktiv ist.
|
||||
* @property ansprechpartnerDomPersonId Optionale Verknüpfung zur `DomPerson`, die für diesen Cup verantwortlich ist.
|
||||
* @property logoUrl Optionaler URL zu einem Logo für den Cup/die Meisterschaft.
|
||||
* @property webseiteUrl Optionale Webseite mit weiteren Informationen.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class Meisterschaft_Cup_Serie(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val mcsId: Uuid = uuid4(),
|
||||
|
||||
var name: String,
|
||||
var typ: CupSerieTypE,
|
||||
var jahr: Int,
|
||||
var sparte: SparteE,
|
||||
|
||||
var beschreibung: String? = null,
|
||||
var reglementText: String? = null,
|
||||
var reglementPdfUrl: String? = null,
|
||||
var hauptsponsor: String? = null,
|
||||
var gesamtdotationText: String? = null,
|
||||
|
||||
var teilnahmebedingungenText: String? = null,
|
||||
var austragungsbedingungenText: String? = null,
|
||||
var wertungsModusBeschreibung: String? = null,
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var oetoRegelReferenzId: Uuid? = null, // Dein oeto_regel_ref_id_mcs
|
||||
|
||||
var istAktiv: Boolean = true,
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var ansprechpartnerDomPersonId: Uuid? = null,
|
||||
var logoUrl: String? = null,
|
||||
var webseiteUrl: String? = null,
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
import at.mocode.shared.enums.PruefungsViereckE
|
||||
import at.mocode.shared.enums.RichterPositionE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Speichert die spezifischen Details und Anforderungen für eine Dressurprüfung,
|
||||
* die auf einer Basis-Prüfung (`Pruefung_OEPS`) aufbaut.
|
||||
*
|
||||
* @property pruefungDbId Eindeutiger Identifikator, der auch der Fremdschlüssel zur
|
||||
* zugehörigen `Pruefung_OEPS` ist (1:1-Beziehung).
|
||||
* @property aufgabeStammdatumId Fremdschlüssel zu `Sportfachliche_Stammdaten` (Typ DRESSURAUFGABE),
|
||||
* die die zu reitende Dressuraufgabe definiert.
|
||||
* @property klasseStammdatumId Optionaler Fremdschlüssel zu `Sportfachliche_Stammdaten` (Typ BEWERBSKLASSE),
|
||||
* der die Leistungsklasse dieser Dressurprüfung definiert (z.B. "A", "L", "M").
|
||||
* @property richtverfahrenStammdatumId Fremdschlüssel zu `Sportfachliche_Stammdaten`
|
||||
* (Typ WERTUNGSVERFAHREN_DRESSUR), der das anzuwendende Richtverfahren (z.B. "GM", "GT") definiert.
|
||||
* @property viereckGroesse Die vorgeschriebene Größe des Dressurvierecks für diese Prüfung.
|
||||
* @property erlaubeAuswendigReiten Gibt an, ob das Reiten der Aufgabe auswendig erlaubt/vorgeschrieben ist.
|
||||
* @property erlaubeVorlesen Gibt an, ob das Vorlesen der Aufgabe erlaubt ist.
|
||||
* @property anzahlRichterGeplant Die geplante Anzahl der Richter für diese Prüfung.
|
||||
* @property maxPunkteProRichterMöglich Maximale Punktzahl, die pro Richter erreicht werden kann (falls relevant und nicht in der Aufgabe definiert).
|
||||
* @property geplanteRichterpositionen Liste der geplanten Richterpositionen für diese Prüfung (z.B. [C, M, H]).
|
||||
* Die tatsächliche Zuweisung von Personen erfolgt über `FunktionaerEinsatzPlanung` oder `BewerbFunktionaerZuordnung`.
|
||||
* @property standardDauerProStartSek Standarddauer pro Starter in Sekunden für diese Art von Dressurprüfung.
|
||||
* Kann von der Abteilung überschrieben werden.
|
||||
* @property pauseNachAnzahlReiter Optional: Nach wie vielen Reitern eine kurze Pause eingeplant werden soll.
|
||||
* @property dauerPauseMin Optional: Dauer der Pause in Minuten.
|
||||
* @property createdAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class DressurPruefungSpezifika(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val pruefungDbId: Uuid, // PK (identisch mit Pruefung_OEPS.pruefungDbId) und FK
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var aufgabeStammdatumId: Uuid, // FK zu Sportfachliche_Stammdaten (Typ DRESSURAUFGABE)
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var klasseStammdatumId: Uuid?, // FK zu Sportfachliche_Stammdaten (Typ BEWERBSKLASSE, Sparte Dressur)
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var richtverfahrenStammdatumId: Uuid, // FK zu Sportfachliche_Stammdaten (Typ WERTUNGSVERFAHREN_DRESSUR)
|
||||
|
||||
var viereckGroesse: PruefungsViereckE,
|
||||
var erlaubeAuswendigReiten: Boolean = true,
|
||||
var erlaubeVorlesen: Boolean = false,
|
||||
var anzahlRichterGeplant: Int = 1,
|
||||
var maxPunkteProRichterMöglich: Double? = null,
|
||||
|
||||
// Definiert, welche Richterpositionen für diese Prüfung besetzt werden sollen
|
||||
var geplanteRichterPositionen: List<RichterPositionE> = listOf(RichterPositionE.C),
|
||||
|
||||
// Zeitplanung spezifisch (Default für Abteilungen dieses Dressurbewerbs)
|
||||
var standardDauerProStartSek: Int = 240, // z.B. 4 Minuten
|
||||
var pauseNachAnzahlReiter: Int? = null,
|
||||
var dauerPauseMin: Int? = null,
|
||||
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
import at.mocode.shared.enums.ArtDesStechensE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Speichert die spezifischen Details und Anforderungen für eine Springprüfung,
|
||||
* die auf einer Basis-Prüfung (`Pruefung_OEPS`) aufbaut.
|
||||
*
|
||||
* @property pruefungDbId Eindeutiger Identifikator, der auch der Fremdschlüssel zur
|
||||
* zugehörigen `Pruefung_OEPS` ist (1:1-Beziehung).
|
||||
* @property klasseStammdatumId Optionaler Fremdschlüssel zu `Sportfachliche_Stammdaten` (Typ BEWERBSKLASSE),
|
||||
* der die Leistungsklasse/Höhe dieser Springprüfung definiert (z.B. "105cm", "Klasse A").
|
||||
* @property richtverfahrenStammdatumId Fremdschlüssel zu `Sportfachliche_Stammdaten`
|
||||
* (Typ WERTUNGSVERFAHREN_SPRINGEN), der das anzuwendende Richtverfahren definiert (z.B. "A2", "C").
|
||||
* @property parcoursskizzeUrl Optionaler URL oder Pfad zur Parcoursskizze.
|
||||
* @property gpParcoursLaengeMeter Länge des Grundparcours in Metern.
|
||||
* @property gpErlaubteZeitSekunden Erlaubte Zeit für den Grundparcours in Sekunden.
|
||||
* @property gpHoechstZeitSekunden Höchstzeit für den Grundparcours in Sekunden.
|
||||
* @property gpAnzahlHindernisse Anzahl der Hindernisse im Grundparcours.
|
||||
* @property gpAnzahlSpruenge Anzahl der Sprünge im Grundparcours.
|
||||
* @property hatIdealzeit Gibt an, ob es eine Idealzeit gibt (relevant für Stilspringprüfungen oder spezielle Verfahren).
|
||||
* @property artDesStechens Die Art des Stechens, falls eines stattfindet (siehe `ArtDesStechensE`).
|
||||
* @property stParcoursLaengeMeter Länge des Stechparcours in Metern.
|
||||
* @property stErlaubteZeitSekunden Erlaubte Zeit für das Stechen in Sekunden.
|
||||
* @property stHoechstZeitSekunden Höchstzeit für das Stechen in Sekunden.
|
||||
* @property stAnzahlHindernisse Anzahl der Hindernisse im Stechen.
|
||||
* @property stAnzahlSpruenge Anzahl der Sprünge im Stechen.
|
||||
* @property standardDauerProStartSek Standarddauer pro Starter in Sekunden für diese Art von Springprüfung.
|
||||
* @property standardUmbauzeitMin Standard-Umbauzeit nach diesem Bewerb in Minuten (Default für Abteilungen).
|
||||
* @property standardBesichtigungszeitMin Standard-Besichtigungszeit vor diesem Bewerb in Minuten (Default für Abteilungen).
|
||||
* @property standardStechzeitZusaetzlichMin Standard-Zusatzzeit für ein eventuelles Stechen in Minuten (Default für Abteilungen).
|
||||
* @property zeitMessSystemIntegrationInformation Information zur geplanten oder verwendeten Zeitmessanlage (z.B. "Microgate REI2", "Alge Timing").
|
||||
* @propertycreatedAt Zeitstempel der Erstellung dieses Datensatzes.
|
||||
* @property updatedAt Zeitstempel der letzten Aktualisierung dieses Datensatzes.
|
||||
*/
|
||||
@Serializable
|
||||
data class SpringPruefungSpezifika(
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
val pruefungDbId: Uuid, // PK (identisch mit Pruefung_OEPS.pruefungDbId) und FK
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var klasseStammdatumId: Uuid?, // FK zu Sportfachliche_Stammdaten (Typ BEWERBSKLASSE, Sparte Springen)
|
||||
|
||||
@Serializable(with = UuidSerializer::class)
|
||||
var richtverfahrenStammdatumId: Uuid, // FK zu Sportfachliche_Stammdaten (Typ WERTUNGSVERFAHREN_SPRINGEN)
|
||||
|
||||
var parcoursskizzeUrl: String? = null,
|
||||
|
||||
// Grundparcours Details
|
||||
var gpParcoursLaengeMeter: Int? = null,
|
||||
var gpErlaubteZeitSekunden: Int? = null,
|
||||
var gpHoechstZeitSekunden: Int? = null,
|
||||
var gpAnzahlHindernisse: Int? = null,
|
||||
var gpAnzahlSpruenge: Int? = null,
|
||||
var hatIdealzeit: Boolean = false,
|
||||
|
||||
// Stechen Details (optional, je nach Richtverfahren und artDesStechens)
|
||||
var artDesStechens: ArtDesStechensE? = null,
|
||||
var stParcoursLaengeMeter: Int? = null,
|
||||
var stErlaubteZeitSekunden: Int? = null,
|
||||
var stHoechstZeitSekunden: Int? = null,
|
||||
var stAnzahlHindernisse: Int? = null,
|
||||
var stAnzahlSpruenge: Int? = null,
|
||||
|
||||
// Zeitplanung spezifisch (Default für Abteilungen dieses Springbewerbs)
|
||||
var standardDauerProStartSek: Int = 90, // z.B. 1.5 Minuten
|
||||
var standardUmbauzeitMin: Int = 10,
|
||||
var standardBesichtigungszeitMin: Int = 10,
|
||||
var standardStechzeitZusaetzlichMin: Int? = null, // Nur relevant, wenn Stechen stattfindet
|
||||
|
||||
var zeitMessSystemIntegrationInformation: String? = null, // Freitext für Info zur Zeitmessung
|
||||
|
||||
// var zugewieseneFunktionaere: List<BewerbFunktionaerZuordnung> = emptyList(), // Kommt noch
|
||||
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
val createdAt: Instant = Clock.System.now(),
|
||||
@Serializable(with = KotlinInstantSerializer::class)
|
||||
var updatedAt: Instant = Clock.System.now()
|
||||
)
|
||||
@@ -1,7 +1,7 @@
|
||||
package at.mocode.shared.stammdaten
|
||||
|
||||
import at.mocode.shared.enums.FunktionaerRolle
|
||||
import at.mocode.shared.enums.Geschlecht
|
||||
import at.mocode.shared.enums.GeschlechtE
|
||||
import at.mocode.shared.serializers.KotlinInstantSerializer
|
||||
import at.mocode.shared.serializers.KotlinLocalDateSerializer
|
||||
import at.mocode.shared.serializers.UuidSerializer
|
||||
@@ -22,7 +22,7 @@ data class Person(
|
||||
var titel: String?,
|
||||
@Serializable(with = KotlinLocalDateSerializer::class)
|
||||
var geburtsdatum: LocalDate?,
|
||||
var geschlecht: Geschlecht? = Geschlecht.UNBEKANNT,
|
||||
var geschlechtE: GeschlechtE?,
|
||||
var nationalitaet: String?, // 3-Letter Code
|
||||
var email: String?,
|
||||
var telefon: String?,
|
||||
|
||||
Reference in New Issue
Block a user