create player
This commit is contained in:
parent
ed83a246ab
commit
a0df047b85
|
|
@ -18,6 +18,14 @@
|
|||
@inject IDispatcher Dispatcher
|
||||
|
||||
@* @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)
|
||||
{
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
public async Task<Player> CreateAsync(Player item, string userName)
|
||||
public async Task<Player> CreatePlayerAsync(Player item, string userName)
|
||||
{
|
||||
item.ModifiedBy = userName;
|
||||
var created = await _playerRepository.CreateAsync(item);
|
||||
|
|
@ -95,7 +95,7 @@ namespace KoogleApp.Data
|
|||
return created;
|
||||
}
|
||||
|
||||
public async Task<Player> UpdateAsync(Player item, string userName)
|
||||
public async Task<Player> UpdatePlayerAsync(Player item, string userName)
|
||||
{
|
||||
item.ModifiedBy = userName;
|
||||
var updated = await _playerRepository.UpdateAsync(item);
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ namespace KoogleApp.Services
|
|||
// ENTWICKLUNG: In-Memory Repository
|
||||
if (uesInMemory)
|
||||
{
|
||||
services.AddSingleton<IPlayerRepository, InMemoryPlayerRepository>();
|
||||
services.AddSingleton<IPlayerExpenseRepository, InMemoryPlayerExpenseRepository>();
|
||||
services.AddSingleton<IPlayerRepository, PlayerRepository>();
|
||||
services.AddSingleton<IPlayerExpenseRepository, PlayerExpenseRepository>();
|
||||
}
|
||||
// PRODUKTION: Entity Framework Repository
|
||||
else
|
||||
|
|
|
|||
|
|
@ -10,4 +10,8 @@ namespace KoogleApp.Store.Player
|
|||
public record SelectPlayerAction(PlayerState? Player);
|
||||
|
||||
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();
|
||||
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 idx = state.Players.FindIndex(p => p.Id == action.PlayerId);
|
||||
newList[idx] = newList[idx] with { Available = action.IsAvailable }; // Element ändern
|
||||
|
||||
return state with { Players = newList };
|
||||
}
|
||||
|
||||
|
|
@ -80,5 +79,21 @@ namespace KoogleApp.Store.Player
|
|||
|
||||
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 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)
|
||||
//{
|
||||
// if (state. == null)
|
||||
|
|
|
|||
Loading…
Reference in New Issue