diff --git a/src/Koogle.Web/Components/Pages/Days/DayDetails.razor b/src/Koogle.Web/Components/Pages/Days/DayDetails.razor index c9f5136..fa39b50 100644 --- a/src/Koogle.Web/Components/Pages/Days/DayDetails.razor +++ b/src/Koogle.Web/Components/Pages/Days/DayDetails.razor @@ -597,9 +597,20 @@ else return Icons.Material.Filled.Circle; // Future } - private void AdvanceStatus() + private async Task AdvanceStatus() { - if (Day is null) return; + if (Day is null) + return; + + if (Day.Status == DayStatus.Started ) + { + var res = await DialogService.ShowMessageBox("Tag abschließen?", "Spieltag wirklich beenden?", yesText: "Ja", noText: "Nein"); + if (res.HasValue && !res.Value) + { + return; + } + } + Dispatcher.Dispatch(new AdvanceDayStatusAction(Day.Id)); Snackbar.Add("Status wird aktualisiert...", Severity.Info); } @@ -834,11 +845,15 @@ else } } - private void EndGame() + private async Task EndGame() { - Dispatcher.Dispatch(new EndGameAction(GameStatus.Completed)); - _activeTabIndex = 0; // Switch back to Details tab - Snackbar.Add("Spiel wird beendet...", Severity.Info); + var res = await DialogService.ShowMessageBox("Spiel beenden", "Spiel wirklich beenden?", yesText:"Ja", noText:"Nein"); + if (res.HasValue && res.Value) + { + Dispatcher.Dispatch(new EndGameAction(GameStatus.Completed)); + _activeTabIndex = 0; // Switch back to Details tab + Snackbar.Add("Spiel wird beendet...", Severity.Info); + } } private string? GetCurrentPlayerName() diff --git a/src/Koogle.Web/Components/Pages/Days/DayEditDialog.razor b/src/Koogle.Web/Components/Pages/Days/DayEditDialog.razor index 383fdcf..7496c3c 100644 --- a/src/Koogle.Web/Components/Pages/Days/DayEditDialog.razor +++ b/src/Koogle.Web/Components/Pages/Days/DayEditDialog.razor @@ -3,6 +3,8 @@ @using Fluxor @using Koogle.Web.Store.PersonState +@inherits Fluxor.Blazor.Web.Components.FluxorComponent + @inject IState PersonState @inject IDispatcher Dispatcher @@ -98,6 +100,8 @@ protected override void OnInitialized() { + base.OnInitialized(); + if (Day is not null) { _postDate = Day.PostDate; @@ -105,8 +109,11 @@ } else { - // Load persons for selection when creating new day - Dispatcher.Dispatch(new LoadPersonsAction()); + // Only load persons if not already loaded + if (PersonState.Value.Persons.Count == 0 && !PersonState.Value.IsLoading) + { + Dispatcher.Dispatch(new LoadPersonsAction()); + } // Pre-select all members _selectedPersonIds = PersonState.Value.Persons @@ -118,9 +125,15 @@ protected override void OnAfterRender(bool firstRender) { - if (firstRender && !IsEditMode) + base.OnAfterRender(firstRender); + + if (!IsEditMode && _selectedPersonIds.Count == 0 && PersonState.Value.Persons.Count > 0) { - // Update selection after persons are loaded + // Update pre-selection after persons are loaded + _selectedPersonIds = PersonState.Value.Persons + .Where(p => p.PersonStatus == PersonStatus.Member) + .Select(p => p.Id) + .ToList(); StateHasChanged(); } }