Files
meldestelle/shared/src/commonMain/kotlin/at/mocode/model/Pruefungsaufgabe.kt
T
2025-06-30 13:25:44 +02:00

45 lines
2.4 KiB
Kotlin

package at.mocode.model
import at.mocode.enums.SparteE
import at.mocode.serializers.KotlinInstantSerializer
import at.mocode.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable
@Serializable
data class Pruefungsaufgabe(
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
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 sparteE: SparteE, // 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 // ...