create player
This commit is contained in:
parent
ed83a246ab
commit
a0df047b85
|
|
@ -18,6 +18,14 @@
|
||||||
@inject IDispatcher Dispatcher
|
@inject IDispatcher Dispatcher
|
||||||
|
|
||||||
@* @inject SharedDataService _dataService *@
|
@* @inject SharedDataService _dataService *@
|
||||||
|
<PanelToolbar>
|
||||||
|
<MudTooltip Text="Spieler anlegen"
|
||||||
|
Color="Color.Primary" Placement="Placement.Bottom" Arrow="true">
|
||||||
|
<MudIconButton Icon="@Icons.Material.Filled.Add"
|
||||||
|
Variant="Variant.Filled" Color="Color.Primary"
|
||||||
|
Class="mr-5" OnClick="CreatePlayerClick"/>
|
||||||
|
</MudTooltip>
|
||||||
|
</PanelToolbar>
|
||||||
|
|
||||||
@if (PlayersState.Value != null)
|
@if (PlayersState.Value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -90,6 +98,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void CreatePlayerClick(MouseEventArgs obj)
|
||||||
|
{
|
||||||
|
Dispatcher.Dispatch(new SavePlayerAction(new PlayerState("Max Musermann",0,true,PlayerStatus.Member)));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ namespace KoogleApp.Data
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Player> CreateAsync(Player item, string userName)
|
public async Task<Player> CreatePlayerAsync(Player item, string userName)
|
||||||
{
|
{
|
||||||
item.ModifiedBy = userName;
|
item.ModifiedBy = userName;
|
||||||
var created = await _playerRepository.CreateAsync(item);
|
var created = await _playerRepository.CreateAsync(item);
|
||||||
|
|
@ -95,7 +95,7 @@ namespace KoogleApp.Data
|
||||||
return created;
|
return created;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Player> UpdateAsync(Player item, string userName)
|
public async Task<Player> UpdatePlayerAsync(Player item, string userName)
|
||||||
{
|
{
|
||||||
item.ModifiedBy = userName;
|
item.ModifiedBy = userName;
|
||||||
var updated = await _playerRepository.UpdateAsync(item);
|
var updated = await _playerRepository.UpdateAsync(item);
|
||||||
|
|
|
||||||
|
|
@ -51,8 +51,8 @@ namespace KoogleApp.Services
|
||||||
// ENTWICKLUNG: In-Memory Repository
|
// ENTWICKLUNG: In-Memory Repository
|
||||||
if (uesInMemory)
|
if (uesInMemory)
|
||||||
{
|
{
|
||||||
services.AddSingleton<IPlayerRepository, InMemoryPlayerRepository>();
|
services.AddSingleton<IPlayerRepository, PlayerRepository>();
|
||||||
services.AddSingleton<IPlayerExpenseRepository, InMemoryPlayerExpenseRepository>();
|
services.AddSingleton<IPlayerExpenseRepository, PlayerExpenseRepository>();
|
||||||
}
|
}
|
||||||
// PRODUKTION: Entity Framework Repository
|
// PRODUKTION: Entity Framework Repository
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -10,4 +10,8 @@ namespace KoogleApp.Store.Player
|
||||||
public record SelectPlayerAction(PlayerState? Player);
|
public record SelectPlayerAction(PlayerState? Player);
|
||||||
|
|
||||||
public record ChangePlayerAvailableAction(int PlayerId, bool IsAvailable, DayState DayState, DaysState DaysState);
|
public record ChangePlayerAvailableAction(int PlayerId, bool IsAvailable, DayState DayState, DaysState DaysState);
|
||||||
|
|
||||||
|
public record SavePlayerAction(PlayerState Player);
|
||||||
|
|
||||||
|
public record PlayerSavedAction(PlayerState Player);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,5 +18,32 @@ namespace KoogleApp.Store.Player
|
||||||
var players = await _dataService.GetAllPlayersAsync();
|
var players = await _dataService.GetAllPlayersAsync();
|
||||||
dispatcher.Dispatch(new PlayersLoadedAction(players, action.DayState));
|
dispatcher.Dispatch(new PlayersLoadedAction(players, action.DayState));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[EffectMethod]
|
||||||
|
public async Task HandleSavePlayerAction(SavePlayerAction action, IDispatcher dispatcher)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Model.Player savedData;
|
||||||
|
// Hier die Daten speichern (API-Call, DB, etc.)
|
||||||
|
if (action.Player.Id == 0)
|
||||||
|
{
|
||||||
|
savedData = await _dataService.CreatePlayerAsync(PlayersSelector.DbConvert(action.Player), "todo");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
savedData = await _dataService.UpdatePlayerAsync(PlayersSelector.DbConvert(action.Player), "todo");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nach erfolgreichem Speichern neue Action dispatchen
|
||||||
|
dispatcher.Dispatch(new PlayerSavedAction(PlayersSelector.DbConvert(savedData)));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//dispatcher.Dispatch(new SaveDataFailureAction(ex.Message));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,6 @@ namespace KoogleApp.Store.Player
|
||||||
var newList = new List<PlayerState>(state.Players); // Kopie erstellen
|
var newList = new List<PlayerState>(state.Players); // Kopie erstellen
|
||||||
var idx = state.Players.FindIndex(p => p.Id == action.PlayerId);
|
var idx = state.Players.FindIndex(p => p.Id == action.PlayerId);
|
||||||
newList[idx] = newList[idx] with { Available = action.IsAvailable }; // Element ändern
|
newList[idx] = newList[idx] with { Available = action.IsAvailable }; // Element ändern
|
||||||
|
|
||||||
return state with { Players = newList };
|
return state with { Players = newList };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,5 +79,21 @@ namespace KoogleApp.Store.Player
|
||||||
|
|
||||||
return state with { Players = lst };
|
return state with { Players = lst };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ReducerMethod]
|
||||||
|
public static PlayersState OnPlayerSavedAction(PlayersState state, PlayerSavedAction action)
|
||||||
|
{
|
||||||
|
var newList = new List<PlayerState>(state.Players);
|
||||||
|
var idx = state.Players.FindIndex(p => p.Id == action.Player.Id);
|
||||||
|
if (idx < 0)
|
||||||
|
{
|
||||||
|
newList.Add(action.Player);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newList[idx] = action.Player;
|
||||||
|
}
|
||||||
|
return state with { Players = newList.OrderBy(_ => _.Name).ToList() };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,22 @@
|
||||||
{
|
{
|
||||||
public static class PlayersSelector
|
public static class PlayersSelector
|
||||||
{
|
{
|
||||||
|
public static PlayerState DbConvert(Model.Player player)
|
||||||
|
{
|
||||||
|
return new PlayerState(player.Name, player.Id, true, player.PlayerStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Model.Player DbConvert(PlayerState player)
|
||||||
|
{
|
||||||
|
return new Model.Player
|
||||||
|
{
|
||||||
|
Name = player.Name,
|
||||||
|
Id = player.Id,
|
||||||
|
PlayerStatus = player.PlayerStatus
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//public static PlayerState? SelectedPlayer(PlayersState state)
|
//public static PlayerState? SelectedPlayer(PlayersState state)
|
||||||
//{
|
//{
|
||||||
// if (state. == null)
|
// if (state. == null)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue