@using Fluxor @using GoodWood.Domain.Enums @using GoodWood.Web.Store.GameState @using MudBlazor @inherits Fluxor.Blazor.Web.Components.FluxorComponent @inject IState GameState @inject IDispatcher Dispatcher Abgeschlossene Spiele @if (GameState.Value.CompletedGames.Count > 0) { @GameState.Value.CompletedGames.Count } @if (GameState.Value.IsLoading) { } @if (GameState.Value.CompletedGames.Count == 0) { Noch keine abgeschlossenen Spiele an diesem Spieltag. } else { Spieltyp Gestartet Beendet Spieler Status @GetGameDisplayName(context.GameTypeName) @(context.StartedAt?.ToLocalTime().ToString("HH:mm") ?? "-") @(context.CompletedAt?.ToLocalTime().ToString("HH:mm") ?? "-") @context.ParticipantCount @GetStatusLabel(context.Status) } @code { /// /// ID of the day to load completed games for. /// [Parameter] public Guid DayId { get; set; } protected override void OnInitialized() { base.OnInitialized(); if (DayId != Guid.Empty) { Dispatcher.Dispatch(new LoadCompletedGamesAction(DayId)); } } protected override void OnParametersSet() { base.OnParametersSet(); if (DayId != Guid.Empty) { Dispatcher.Dispatch(new LoadCompletedGamesAction(DayId)); } } private static string GetGameIcon(string gameTypeName) => gameTypeName switch { "Training" => Icons.Material.Filled.FitnessCenter, "Shit" => Icons.Material.Filled.Casino, _ => Icons.Material.Filled.SportsScore }; private static string GetGameDisplayName(string gameTypeName) => gameTypeName switch { "Training" => "Training", "Shit" => "Scheiss-Spiel", _ => gameTypeName }; private static Color GetStatusColor(GameStatus status) => status switch { GameStatus.Completed => Color.Success, GameStatus.Aborted => Color.Warning, GameStatus.Active => Color.Info, _ => Color.Default }; private static string GetStatusIcon(GameStatus status) => status switch { GameStatus.Completed => Icons.Material.Filled.CheckCircle, GameStatus.Aborted => Icons.Material.Filled.Cancel, GameStatus.Active => Icons.Material.Filled.PlayCircle, _ => Icons.Material.Filled.Circle }; private static string GetStatusLabel(GameStatus status) => status switch { GameStatus.Completed => "Beendet", GameStatus.Aborted => "Abgebrochen", GameStatus.Active => "Aktiv", _ => status.ToString() }; }