feat(veranstaltung): Wizard für neue Veranstaltung implementiert und ZNS-Light-Integration hinzugefügt

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-16 13:26:39 +02:00
parent 10f9e82718
commit cb4f2f855c
11 changed files with 318 additions and 121 deletions
@@ -0,0 +1,12 @@
package at.mocode.zns.importer
/**
* Der Modus des ZNS-Imports.
*
* [FULL] - Alle Dateien (Vereine, Reiter, Pferde, Funktionäre) werden importiert.
* [LIGHT] - Nur Stammdaten (Vereine, Reiter) werden importiert (Performance-Optimiert).
*/
enum class ZnsImportMode {
FULL,
LIGHT
}
@@ -91,9 +91,13 @@ class ZnsImportService(
* Importiert eine ZNS-ZIP-Datei aus einem [InputStream].
*
* @param zipInputStream Der InputStream der ZIP-Datei.
* @param mode Der [ZnsImportMode] (Standard: [ZnsImportMode.FULL]).
* @return [ZnsImportResult] mit Statistiken und eventuellen Fehlern.
*/
suspend fun importiereZip(zipInputStream: InputStream): ZnsImportResult {
suspend fun importiereZip(
zipInputStream: InputStream,
mode: ZnsImportMode = ZnsImportMode.FULL
): ZnsImportResult {
val dateien = extrahiereDateien(zipInputStream)
// println("[DEBUG_LOG] Gefundene Dateien: ${dateien.keys}")
// dateien.forEach { (name, lines) -> println("[DEBUG_LOG] Datei $name hat ${lines.size} Zeilen") }
@@ -103,8 +107,21 @@ class ZnsImportService(
val (vereineNeu, vereineUpd) = importiereVereine(dateien[FILE_VEREIN] ?: emptyList(), fehler)
val (reiterNeu, reiterUpd) = importiereReiter(dateien[FILE_LIZENZ] ?: emptyList(), fehler, warnungen)
val (pferdeNeu, pferdeUpd) = importierePferde(dateien[FILE_PFERDE] ?: emptyList(), fehler)
val (richterNeu, richterUpd) = importiereFunktionaere(dateien[FILE_RICHT] ?: emptyList(), fehler, warnungen)
var pferdeNeu = 0
var pferdeUpd = 0
var richterNeu = 0
var richterUpd = 0
if (mode == ZnsImportMode.FULL) {
val (pNeu, pUpd) = importierePferde(dateien[FILE_PFERDE] ?: emptyList(), fehler)
pferdeNeu = pNeu
pferdeUpd = pUpd
val (rNeu, rUpd) = importiereFunktionaere(dateien[FILE_RICHT] ?: emptyList(), fehler, warnungen)
richterNeu = rNeu
richterUpd = rUpd
}
return ZnsImportResult(
vereineImportiert = vereineNeu,