83 lines
3.9 KiB
Kotlin
83 lines
3.9 KiB
Kotlin
package at.mocode.model.veranstaltung
|
|
|
|
import at.mocode.enums.EventStatusE
|
|
import at.mocode.serializers.KotlinInstantSerializer
|
|
import at.mocode.serializers.KotlinLocalDateSerializer
|
|
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.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()
|
|
)
|