diff --git a/docs/prompts.md b/docs/prompts.md index 1612119..35e0739 100644 --- a/docs/prompts.md +++ b/docs/prompts.md @@ -1,4 +1,10 @@ +- neuer Tag -> optional Gäste und nicht alle Teilnehmer +- Tag beendnden -> alle Teilnehmer hinzufügen, und strafen hinzufügen +- offene Sachstrafen von einem Tag zum nächsten fortschreiben +- + + ## Optimierung Spieltag-Details Blende die Erledigt-Kennzeichnung (Als bezahlt markieren) in der Tabelle mit den Staten () für Geldstrafen aus. Nur Sachstrafen sollen sich manuell erledigen lassen. Geldstrafen werden später zentral über die Abrechnung des gesamten Tages erledigt. diff --git a/src/Koogle.Web/Components/Pages/Days/AddParticipantDialog.razor b/src/Koogle.Web/Components/Pages/Days/AddParticipantDialog.razor index 37e4a54..d6f5643 100644 --- a/src/Koogle.Web/Components/Pages/Days/AddParticipantDialog.razor +++ b/src/Koogle.Web/Components/Pages/Days/AddParticipantDialog.razor @@ -12,8 +12,14 @@ } else { - Wähle eine Person aus: - + + Wähle Personen aus: + + Alle + Keine + + + @foreach (var person in AvailablePersons.OrderByDescending(p => p.PersonStatus == PersonStatus.Member).ThenBy(p => p.Name)) { @@ -34,8 +40,15 @@ Abbrechen - - Hinzufügen + + @if (_selectedPersons.Count > 0) + { + @_selectedPersons.Count hinzufügen + } + else + { + Hinzufügen + } @@ -50,13 +63,24 @@ [Parameter] public Guid DayId { get; set; } - private PersonDto? _selectedPerson; + private IReadOnlyCollection _selectedPersons = []; + + private void SelectAll() + { + _selectedPersons = AvailablePersons.ToList(); + } + + private void SelectNone() + { + _selectedPersons = []; + } private void Cancel() => MudDialog?.Cancel(); private void Submit() { - if (_selectedPerson is null) return; - MudDialog?.Close(DialogResult.Ok(_selectedPerson.Id)); + if (_selectedPersons.Count == 0) return; + var personIds = _selectedPersons.Select(p => p.Id).ToList(); + MudDialog?.Close(DialogResult.Ok(personIds)); } } diff --git a/src/Koogle.Web/Components/Pages/Days/DayDetails.razor b/src/Koogle.Web/Components/Pages/Days/DayDetails.razor index 27567ba..b9dcacc 100644 --- a/src/Koogle.Web/Components/Pages/Days/DayDetails.razor +++ b/src/Koogle.Web/Components/Pages/Days/DayDetails.razor @@ -567,15 +567,18 @@ else var dialog = await DialogService.ShowAsync("Teilnehmer hinzufügen", parameters); var result = await dialog.Result; - if (result != null && !result.Canceled && result.Data is Guid personId) + if (result != null && !result.Canceled && result.Data is List personIds) { - var dto = new AddDayParticipantDto + foreach (var personId in personIds) { - DayId = Day.Id, - PersonId = personId - }; - Dispatcher.Dispatch(new AddDayParticipantAction(dto)); - Snackbar.Add("Teilnehmer wird hinzugefügt...", Severity.Info); + var dto = new AddDayParticipantDto + { + DayId = Day.Id, + PersonId = personId + }; + Dispatcher.Dispatch(new AddDayParticipantAction(dto)); + } + Snackbar.Add($"{personIds.Count} Teilnehmer werden hinzugefügt...", Severity.Info); } }