start day with pre-selected players

This commit is contained in:
beo3000 2025-11-19 17:46:18 +01:00
parent 93e867eb6b
commit dee21d8c08
5 changed files with 48 additions and 20 deletions

View File

@ -1,10 +1,12 @@
@using KoogleApp.Components.Dialogs @using KoogleApp.Components.Dialogs
@using KoogleApp.Store.DayFeature @using KoogleApp.Store.DayFeature
@using KoogleApp.Store.Game.ThrowPanel @using KoogleApp.Store.Game.ThrowPanel
@using KoogleApp.Store.Player
@inherits FluxorComponent @inherits FluxorComponent
@inject IDispatcher Dispatcher @inject IDispatcher Dispatcher
@inject IState<DayState> DayState @inject IState<DayState> DayState
@inject IState<PlayersState> PlayersState
@inject IDialogService DialogService @inject IDialogService DialogService
@if (DayState.Value.Status != DayStatus.Started) @if (DayState.Value.Status != DayStatus.Started)
@ -22,6 +24,7 @@
private async Task StartClick(MouseEventArgs obj) private async Task StartClick(MouseEventArgs obj)
{ {
Dispatcher.Dispatch(new InitNewDayModelAction(PlayersState.Value.Players));
var parameters = new DialogParameters<StartDayDialog>{ }; var parameters = new DialogParameters<StartDayDialog>{ };
// parameters.Add<TimeRecordDto>(x => x.Record, Record); // parameters.Add<TimeRecordDto>(x => x.Record, Record);

View File

@ -1,18 +1,20 @@
@using KoogleApp.Data @using KoogleApp.Data
@using KoogleApp.Model @using KoogleApp.Model
@using KoogleApp.Store.Player
@inject SharedDataService SharedDataService @inject SharedDataService SharedDataService
@inject IState<PlayersState> PlayersState
@if (_players != null) @if (PlayersState != null)
{ {
<MudSelect T="Player" Label="Teilnehmer" HelperText="teilnehmende Spiel auswählen" <MudSelect T="PlayerState" Label="Teilnehmer" HelperText="teilnehmende Spiel auswählen"
MultiSelectionTextFunc="@(new Func<List<string>,string>(GetMultiSelectionText))" MultiSelectionTextFunc="@(new Func<List<string>,string>(GetMultiSelectionText))"
MultiSelection="true" MultiSelection="true"
Converter="@converter" Converter="converter"
@bind-SelectedValues="SelectedValues"> @bind-SelectedValues="SelectedValues">
@foreach (var player in _players) @foreach (var player in PlayersState.Value.Players)
{ {
<MudSelectItem T="Player" Value="@player">@player.Name</MudSelectItem> <MudSelectItem T="PlayerState" Value="@player">@player.Name</MudSelectItem>
} }
</MudSelect> </MudSelect>
} }
@ -20,19 +22,19 @@
@code { @code {
private IEnumerable<Player?>? _players; // private IEnumerable<PlayerState?>? _players;
protected override async Task OnAfterRenderAsync(bool firstRender) // protected override async Task OnAfterRenderAsync(bool firstRender)
{ // {
if (firstRender) // if (firstRender)
{ // {
var data = await SharedDataService.GetAllPlayersAsync(); // var data = await SharedDataService.GetAllPlayersAsync();
_players = data.OrderBy(p => p.Name).ToList(); // _players = data.OrderBy(p => p.Name).ToList();
StateHasChanged(); // StateHasChanged();
} // }
} // }
Converter<Player> converter = new Converter<Player> Converter<PlayerState> converter = new Converter<PlayerState>
{ {
SetFunc = value => value.Name, SetFunc = value => value.Name,
GetFunc = text => null, GetFunc = text => null,
@ -50,10 +52,10 @@
private IEnumerable<Player?>? _value; private IEnumerable<PlayerState?>? _value;
[Parameter] [Parameter]
public IEnumerable<Player?>? SelectedValues public IEnumerable<PlayerState?>? SelectedValues
{ {
get => _value; get => _value;
set set
@ -65,5 +67,5 @@
} }
[Parameter] [Parameter]
public EventCallback<IEnumerable<Player?>?> SelectedValuesChanged { get; set; } public EventCallback<IEnumerable<PlayerState?>?> SelectedValuesChanged { get; set; }
} }

View File

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using KoogleApp.Store.Player;
namespace KoogleApp.Model namespace KoogleApp.Model
{ {
@ -9,6 +10,6 @@ namespace KoogleApp.Model
[Display(Name = "Datum")] [Display(Name = "Datum")]
public DateTime? PostDate { get; set; } = DateTime.Today; public DateTime? PostDate { get; set; } = DateTime.Today;
public IEnumerable<Player?>? Players { get; set; } public IEnumerable<PlayerState?>? Players { get; set; }
} }
} }

View File

@ -1,4 +1,5 @@
using KoogleApp.Model; using KoogleApp.Model;
using KoogleApp.Store.Player;
namespace KoogleApp.Store.DayFeature namespace KoogleApp.Store.DayFeature
{ {
@ -30,4 +31,6 @@ namespace KoogleApp.Store.DayFeature
{ {
public DayModel DayModel { get; } = dayModel; public DayModel DayModel { get; } = dayModel;
} }
public record InitNewDayModelAction(List<PlayerState> Players);
} }

View File

@ -146,5 +146,24 @@ namespace KoogleApp.Store.DayFeature
ErrorMessage = action.ErrorMessage ErrorMessage = action.ErrorMessage
}; };
} }
[ReducerMethod]
public static DayModelState OnInitNewDayModelAction(DayModelState state, InitNewDayModelAction action)
{
return state with
{
Submitting = false,
ErrorMessage = "",
Submitted = false,
Model = new DayModel()
{
Players = action.Players.Where(p => p.PlayerStatus == PlayerStatus.Member).ToList(),
PostDate = DateTime.Today
}
};
}
} }
} }