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

View File

@ -1,18 +1,20 @@
@using KoogleApp.Data
@using KoogleApp.Model
@using KoogleApp.Store.Player
@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))"
MultiSelection="true"
Converter="@converter"
Converter="converter"
@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>
}
@ -20,19 +22,19 @@
@code {
private IEnumerable<Player?>? _players;
// private IEnumerable<PlayerState?>? _players;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
var data = await SharedDataService.GetAllPlayersAsync();
_players = data.OrderBy(p => p.Name).ToList();
StateHasChanged();
}
}
// protected override async Task OnAfterRenderAsync(bool firstRender)
// {
// if (firstRender)
// {
// var data = await SharedDataService.GetAllPlayersAsync();
// _players = data.OrderBy(p => p.Name).ToList();
// StateHasChanged();
// }
// }
Converter<Player> converter = new Converter<Player>
Converter<PlayerState> converter = new Converter<PlayerState>
{
SetFunc = value => value.Name,
GetFunc = text => null,
@ -50,10 +52,10 @@
private IEnumerable<Player?>? _value;
private IEnumerable<PlayerState?>? _value;
[Parameter]
public IEnumerable<Player?>? SelectedValues
public IEnumerable<PlayerState?>? SelectedValues
{
get => _value;
set
@ -65,5 +67,5 @@
}
[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 KoogleApp.Store.Player;
namespace KoogleApp.Model
{
@ -9,6 +10,6 @@ namespace KoogleApp.Model
[Display(Name = "Datum")]
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.Store.Player;
namespace KoogleApp.Store.DayFeature
{
@ -30,4 +31,6 @@ namespace KoogleApp.Store.DayFeature
{
public DayModel DayModel { get; } = dayModel;
}
public record InitNewDayModelAction(List<PlayerState> Players);
}

View File

@ -146,5 +146,24 @@ namespace KoogleApp.Store.DayFeature
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
}
};
}
}
}