feat: erweitere DemoEventFlow und EventWizardViewModel um neue Schritte

Signed-off-by: StefanMoCoAt <stefan.mo.co@gmail.com>
This commit is contained in:
Stefan Mogeritsch 2026-04-21 18:16:52 +02:00
parent 2d7046d0e3
commit 3b4e3db51d
2 changed files with 19 additions and 2 deletions

View File

@ -10,12 +10,20 @@ import at.mocode.frontend.core.wizard.runtime.WizardState
sealed interface DemoEventStep : StepId { sealed interface DemoEventStep : StepId {
data object ZnsCheck : DemoEventStep data object ZnsCheck : DemoEventStep
data object VeranstalterSelection : DemoEventStep data object VeranstalterSelection : DemoEventStep
data object AnsprechpersonMapping : DemoEventStep
data object MetaData : DemoEventStep
} }
data class DemoEventAcc(val dummy: String = "") data class DemoEventAcc(
val veranstalterId: String? = null,
val veranstalterNr: String = ""
)
object DemoEventGuards { object DemoEventGuards {
val hasZns: Guard<DemoEventStep, DemoEventAcc> = { ctx, _ -> (ctx.stats?.vereinCount ?: 0) > 0 } val hasZns: Guard<DemoEventStep, DemoEventAcc> = { ctx, _ -> (ctx.stats?.vereinCount ?: 0) > 0 }
// Platzhalter-Guard: aktuell stets true, damit Verhalten dem Legacy-Pfad entspricht.
// Wird später durch echte Domänenlogik ersetzt (Veranstalter-Typ/ID etc.).
val needsContactPerson: Guard<DemoEventStep, DemoEventAcc> = { _, _ -> true }
} }
val DemoEventFlow = flow<DemoEventStep, DemoEventAcc>(start = DemoEventStep.ZnsCheck) { val DemoEventFlow = flow<DemoEventStep, DemoEventAcc>(start = DemoEventStep.ZnsCheck) {
@ -23,6 +31,10 @@ val DemoEventFlow = flow<DemoEventStep, DemoEventAcc>(start = DemoEventStep.ZnsC
whenGuard("hasZns", DemoEventGuards.hasZns, go = DemoEventStep.VeranstalterSelection) whenGuard("hasZns", DemoEventGuards.hasZns, go = DemoEventStep.VeranstalterSelection)
otherwise(DemoEventStep.VeranstalterSelection) otherwise(DemoEventStep.VeranstalterSelection)
} }
step(DemoEventStep.VeranstalterSelection) {
whenGuard("needsContactPerson", DemoEventGuards.needsContactPerson, go = DemoEventStep.AnsprechpersonMapping)
otherwise(DemoEventStep.MetaData)
}
} }
// Hilfsfunktion für einfache manuelle Nutzung im Spike // Hilfsfunktion für einfache manuelle Nutzung im Spike

View File

@ -246,13 +246,18 @@ class EventWizardViewModel(
} }
private fun isHandledByRuntime(step: WizardStep): Boolean = when (step) { private fun isHandledByRuntime(step: WizardStep): Boolean = when (step) {
WizardStep.ZNS_CHECK, WizardStep.VERANSTALTER_SELECTION -> true WizardStep.ZNS_CHECK,
WizardStep.VERANSTALTER_SELECTION,
WizardStep.ANSPRECHPERSON_MAPPING,
WizardStep.META_DATA -> true
else -> false else -> false
} }
private fun mapToWizardStep(step: DemoEventStep): WizardStep? = when (step) { private fun mapToWizardStep(step: DemoEventStep): WizardStep? = when (step) {
DemoEventStep.ZnsCheck -> WizardStep.ZNS_CHECK DemoEventStep.ZnsCheck -> WizardStep.ZNS_CHECK
DemoEventStep.VeranstalterSelection -> WizardStep.VERANSTALTER_SELECTION DemoEventStep.VeranstalterSelection -> WizardStep.VERANSTALTER_SELECTION
DemoEventStep.AnsprechpersonMapping -> WizardStep.ANSPRECHPERSON_MAPPING
DemoEventStep.MetaData -> WizardStep.META_DATA
} }
fun setVeranstalter(id: Uuid, nummer: String, name: String, standardOrt: String, logo: String?) { fun setVeranstalter(id: Uuid, nummer: String, name: String, standardOrt: String, logo: String?) {