impl Pruefungsaufgaben

This commit is contained in:
stefan
2025-05-13 14:01:52 +02:00
parent d1f5d07fab
commit 468b45aa56
28 changed files with 252 additions and 91 deletions
@@ -1,7 +1,7 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.UuidSerializer
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
@@ -1,8 +1,8 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.serializers.BigDecimalSerializer
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.UuidSerializer
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
@@ -1,10 +1,10 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.BewerbStatus
import at.mocode.shared.model.enums.Sparte
import at.mocode.shared.model.serializers.BigDecimalSerializer
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.UuidSerializer
import at.mocode.shared.enums.BewerbStatus
import at.mocode.shared.enums.Sparte
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.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.datetime.Instant
@@ -1,6 +1,6 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.serializers.UuidSerializer
import at.mocode.shared.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.serialization.Serializable
@@ -1,7 +1,7 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.PlatzTyp
import at.mocode.shared.model.serializers.UuidSerializer
import at.mocode.shared.enums.PlatzTyp
import at.mocode.shared.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.serialization.Serializable
@@ -1,7 +1,7 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.NennungsArt
import at.mocode.shared.model.serializers.*
import at.mocode.shared.enums.NennungsArt
import at.mocode.shared.serializers.*
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import com.ionspin.kotlin.bignum.decimal.BigDecimal
@@ -39,7 +39,7 @@ data class Turnier(
var turnierleiterId: Uuid?, // FK zu Person
@Serializable(with = UuidSerializer::class)
var turnierbeauftragterId: Uuid?, // FK zu Person
var richterIds: List<@Serializable(with = UuidSerializer::class) Uuid> = emptyList(), // Pool an Richtern
var richterIds: List<@Serializable(with = UuidSerializer::class) Uuid> = emptyList(), // Pool Richtern
var parcoursbauerIds: List<@Serializable(with = UuidSerializer::class) Uuid> = emptyList(), // FKs zu Person
var parcoursAssistentIds: List<@Serializable(with = UuidSerializer::class) Uuid> = emptyList(), // FKs zu Person
var tierarztInfos: String?,
@@ -1,9 +1,9 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.VeranstalterTyp
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.KotlinLocalDateSerializer
import at.mocode.shared.model.serializers.UuidSerializer
import at.mocode.shared.enums.VeranstalterTyp
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
@@ -1,4 +1,4 @@
package at.mocode.shared.model.enums
package at.mocode.shared.enums
import kotlinx.serialization.Serializable
@@ -0,0 +1,43 @@
package at.mocode.shared.model
import at.mocode.shared.enums.Sparte
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
@Serializable
data class Pruefungsaufgabe(
@Serializable(with = UuidSerializer::class)
val id: Uuid,
var kuerzel: String, // Eindeutiges Kürzel, z.B. "A1", "LF3", "FEI GP PSG"
var nameLang: String, // Vollständiger Name, z.B. "Dressuraufgabe A1 (GM, 20x40m)"
var kategorieText: String?, // Übergeordnete Kategorie, z.B. "Dressuraufgaben Klasse A", "FEI Grand Prix Serie"
var sparte: Sparte, // Primär DRESSUR, aber auch für Vielseitigkeit etc.
var nation: PruefungsaufgabeNationEnum = PruefungsaufgabeNationEnum.NATIONAL,
var richtverfahrenModusDefault: PruefungsaufgabeRichtverfahrenModusEnum?, // GM, GT - als Default für diese Aufgabe
var viereckGroesseDefault: PruefungsaufgabeViereckEnum?, // VIERECK_20x40, VIERECK_20x60 - als Default
var schwierigkeitsgradText: String?, // z.B. "A", "L", "M", "S", "Grand Prix"
var aufgabenNummerInSammlung: String?, // z.B. die "1" bei "Aufgabe A1" oder spezifische FEI Nummer
var jahrgangVersion: String?, // z.B. "2011", "FEI 2023"
var pdfUrlExtern: String?, // Link zur offiziellen PDF-Datei (OEPS, FEI)
var pdfDateinameIntern: String?, // Falls wir die PDFs auch bei uns speichern/hochladen (Dateiname)
var anmerkungen: String?, // z.B. "Diese Aufgabe darf nur mit Leitfaden gerichtet werden"
var dauerGeschaetztMinuten: Double?, // z.B. 3.5
var anzahlMaxPunkteProRichter: Double?, // Für Dressur, falls standardisiert
var istAktiv: Boolean = true, // Kann die Aufgabe aktuell ausgewählt werden?
@Serializable(with = KotlinInstantSerializer::class)
val createdAt: Instant = Clock.System.now(),
@Serializable(with = KotlinInstantSerializer::class)
var updatedAt: Instant = Clock.System.now()
)
enum class PruefungsaufgabeNationEnum { NATIONAL, FEI, SONSTIGE }
enum class PruefungsaufgabeRichtverfahrenModusEnum { GM, GT, NICHT_SPEZIFIZIERT } // Gemeinsam, Getrennt
enum class PruefungsaufgabeViereckEnum { VIERECK_20x40, VIERECK_20x60, ANDERE, UNBEKANNT }
// Shared Serializers (Beispiel, falls noch nicht vorhanden)
// object UuidSerializer // ...
// object KotlinInstantSerializer // ...
@@ -1,4 +1,4 @@
package at.mocode.shared.model.serializers
package at.mocode.shared.serializers
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuidFrom
@@ -1,8 +1,8 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import at.mocode.shared.model.enums.LizenzTyp
import at.mocode.shared.model.enums.Sparte
import at.mocode.shared.model.serializers.KotlinLocalDateSerializer
import at.mocode.shared.enums.LizenzTyp
import at.mocode.shared.enums.Sparte
import at.mocode.shared.serializers.KotlinLocalDateSerializer
import kotlinx.datetime.LocalDate
import kotlinx.serialization.Serializable
@@ -1,10 +1,10 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import at.mocode.shared.model.enums.FunktionaerRolle
import at.mocode.shared.model.enums.Geschlecht
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.KotlinLocalDateSerializer
import at.mocode.shared.model.serializers.UuidSerializer
import at.mocode.shared.enums.FunktionaerRolle
import at.mocode.shared.enums.Geschlecht
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
@@ -1,8 +1,8 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import at.mocode.shared.model.enums.GeschlechtPferd
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.UuidSerializer
import at.mocode.shared.enums.GeschlechtPferd
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
@@ -1,7 +1,7 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.UuidSerializer
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
@@ -1,4 +1,4 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import com.benasher44.uuid.uuid4
import com.ionspin.kotlin.bignum.decimal.BigDecimal
@@ -1,7 +1,7 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.BewerbStatus
import at.mocode.shared.model.enums.Sparte
import at.mocode.shared.enums.BewerbStatus
import at.mocode.shared.enums.Sparte
import com.benasher44.uuid.uuid4
import com.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.datetime.Clock
@@ -1,4 +1,4 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import com.benasher44.uuid.uuid4
import kotlinx.serialization.json.Json
@@ -1,6 +1,6 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.PlatzTyp
import at.mocode.shared.enums.PlatzTyp
import com.benasher44.uuid.uuid4
import kotlinx.serialization.json.Json
import kotlin.test.Test
@@ -1,7 +1,7 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.NennungsArt
import at.mocode.shared.model.enums.PlatzTyp
import at.mocode.shared.enums.NennungsArt
import at.mocode.shared.enums.PlatzTyp
import com.benasher44.uuid.uuid4
import com.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.datetime.Clock
@@ -1,6 +1,6 @@
package at.mocode.shared.model.entitaeten
package at.mocode.shared.entitaeten
import at.mocode.shared.model.enums.VeranstalterTyp
import at.mocode.shared.enums.VeranstalterTyp
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.datetime.LocalDate
@@ -1,4 +1,4 @@
package at.mocode.shared.model.enums
package at.mocode.shared.enums
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@@ -1,4 +1,4 @@
package at.mocode.shared.model.serializers
package at.mocode.shared.serializers
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
@@ -1,7 +1,7 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import at.mocode.shared.model.enums.LizenzTyp
import at.mocode.shared.model.enums.Sparte
import at.mocode.shared.enums.LizenzTyp
import at.mocode.shared.enums.Sparte
import kotlinx.datetime.LocalDate
import kotlinx.serialization.json.Json
import kotlin.test.Test
@@ -1,9 +1,9 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import at.mocode.shared.model.enums.FunktionaerRolle
import at.mocode.shared.model.enums.Geschlecht
import at.mocode.shared.model.enums.LizenzTyp
import at.mocode.shared.model.enums.Sparte
import at.mocode.shared.enums.FunktionaerRolle
import at.mocode.shared.enums.Geschlecht
import at.mocode.shared.enums.LizenzTyp
import at.mocode.shared.enums.Sparte
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.datetime.LocalDate
@@ -1,6 +1,6 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import at.mocode.shared.model.enums.GeschlechtPferd
import at.mocode.shared.enums.GeschlechtPferd
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.serialization.json.Json
@@ -1,4 +1,4 @@
package at.mocode.shared.model.stammdaten
package at.mocode.shared.stammdaten
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock