161 lines
5.6 KiB
Plaintext
161 lines
5.6 KiB
Plaintext
@page "/admin/triggers"
|
|
@attribute [Authorize(Roles = "SuperAdmin")]
|
|
|
|
@inherits Fluxor.Blazor.Web.Components.FluxorComponent
|
|
|
|
@using Fluxor
|
|
@using Koogle.Application.DTOs
|
|
@using Koogle.Domain.Enums
|
|
@using Koogle.Web.Store.TriggerState
|
|
@using Microsoft.AspNetCore.Authorization
|
|
|
|
@inject IState<TriggerState> TriggerState
|
|
@inject IDispatcher Dispatcher
|
|
@inject ISnackbar Snackbar
|
|
@inject IDialogService DialogService
|
|
|
|
<PageTitle>Auslöser (Global)</PageTitle>
|
|
|
|
<MudText Typo="Typo.h4" Class="mb-2">Auslöser-Verwaltung</MudText>
|
|
<MudText Typo="Typo.body2" Color="Color.Secondary" Class="mb-4">
|
|
Clubuebergreifende Verwaltung der Auslöser-Definitionen.
|
|
</MudText>
|
|
|
|
@if (TriggerState.Value.Error is not null)
|
|
{
|
|
<MudAlert Severity="Severity.Error" Class="mb-4" ShowCloseIcon="true" CloseIconClicked="ClearError">
|
|
@TriggerState.Value.Error
|
|
</MudAlert>
|
|
}
|
|
|
|
<MudPaper Class="pa-4 mb-4">
|
|
<MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center">
|
|
<MudText Typo="Typo.h6">Auslöser</MudText>
|
|
<MudButton Variant="Variant.Filled"
|
|
Color="Color.Primary"
|
|
StartIcon="@Icons.Material.Filled.Add"
|
|
OnClick="OpenCreateDialog">
|
|
Neuer Auslöser
|
|
</MudButton>
|
|
</MudStack>
|
|
</MudPaper>
|
|
|
|
<MudTable Items="TriggerState.Value.Triggers" Dense="true" Hover="true" Loading="TriggerState.Value.IsLoading">
|
|
<HeaderContent>
|
|
<MudTh>Name</MudTh>
|
|
<MudTh>Beschreibung</MudTh>
|
|
<MudTh>Typ</MudTh>
|
|
<MudTh Style="width: 120px;">Aktionen</MudTh>
|
|
</HeaderContent>
|
|
<RowTemplate>
|
|
<MudTd DataLabel="Name">
|
|
<MudText Typo="Typo.body1"><strong>@context.Name</strong></MudText>
|
|
</MudTd>
|
|
<MudTd DataLabel="Beschreibung">
|
|
<MudText Typo="Typo.body2" Color="Color.Secondary">
|
|
@(string.IsNullOrEmpty(context.Description) ? "-" : context.Description)
|
|
</MudText>
|
|
</MudTd>
|
|
<MudTd DataLabel="Typ">
|
|
<MudChip T="string" Size="Size.Small" Color="Color.Default" Variant="Variant.Text">
|
|
@GetTypeName(context.ExpenseTriggerType)
|
|
</MudChip>
|
|
</MudTd>
|
|
<MudTd>
|
|
<MudStack Row="true" Spacing="1">
|
|
<MudTooltip Text="Bearbeiten">
|
|
<MudIconButton Icon="@Icons.Material.Filled.Edit"
|
|
Size="Size.Small"
|
|
OnClick="@(() => OpenEditDialog(context))"/>
|
|
</MudTooltip>
|
|
<MudTooltip Text="Loeschen">
|
|
<MudIconButton Icon="@Icons.Material.Filled.Delete"
|
|
Size="Size.Small"
|
|
Color="Color.Error"
|
|
OnClick="@(() => ConfirmDelete(context))"/>
|
|
</MudTooltip>
|
|
</MudStack>
|
|
</MudTd>
|
|
</RowTemplate>
|
|
<NoRecordsContent>
|
|
<MudText>Keine Auslöser vorhanden</MudText>
|
|
</NoRecordsContent>
|
|
</MudTable>
|
|
|
|
@code {
|
|
protected override void OnInitialized()
|
|
{
|
|
base.OnInitialized();
|
|
Dispatcher.Dispatch(new LoadTriggersAction());
|
|
}
|
|
|
|
private void ClearError()
|
|
{
|
|
Dispatcher.Dispatch(new ClearTriggerErrorAction());
|
|
}
|
|
|
|
private async Task OpenCreateDialog()
|
|
{
|
|
var dialog = await DialogService.ShowAsync<TriggerFormDialog>("Neuer Auslöser");
|
|
var result = await dialog.Result;
|
|
|
|
if (result != null && !result.Canceled && result.Data is CreateTriggerDto dto)
|
|
{
|
|
Dispatcher.Dispatch(new CreateTriggerAction(dto));
|
|
Snackbar.Add("Auslöser wird erstellt...", Severity.Info);
|
|
}
|
|
}
|
|
|
|
private async Task OpenEditDialog(TriggerDto trigger)
|
|
{
|
|
var parameters = new DialogParameters
|
|
{
|
|
{ "Trigger", trigger }
|
|
};
|
|
|
|
var dialog = await DialogService.ShowAsync<TriggerFormDialog>("Auslöser bearbeiten", parameters);
|
|
var result = await dialog.Result;
|
|
|
|
if (result != null && !result.Canceled && result.Data is UpdateTriggerDto dto)
|
|
{
|
|
Dispatcher.Dispatch(new UpdateTriggerAction(dto));
|
|
Snackbar.Add("Auslöser wird aktualisiert...", Severity.Info);
|
|
}
|
|
}
|
|
|
|
private async Task ConfirmDelete(TriggerDto trigger)
|
|
{
|
|
var parameters = new DialogParameters
|
|
{
|
|
{ "ContentText", $"Soll der Auslöser \"{trigger.Name}\" wirklich geloescht werden? Dies kann nicht rueckgaengig gemacht werden." },
|
|
{ "ButtonText", "Loeschen" },
|
|
{ "Color", Color.Error }
|
|
};
|
|
|
|
var dialog = await DialogService.ShowAsync<Koogle.Web.Components.Shared.ConfirmDialog>(
|
|
"Auslöser loeschen", parameters);
|
|
var result = await dialog.Result;
|
|
|
|
if (result != null && !result.Canceled)
|
|
{
|
|
Dispatcher.Dispatch(new DeleteTriggerAction(trigger.Id));
|
|
Snackbar.Add("Auslöser wird geloescht...", Severity.Info);
|
|
}
|
|
}
|
|
|
|
private static string GetTypeName(ExpenseTriggerType type) => type switch
|
|
{
|
|
ExpenseTriggerType.Gutter => "Gosse",
|
|
ExpenseTriggerType.Bell => "Klingel",
|
|
ExpenseTriggerType.NoWood => "Kein Holz",
|
|
ExpenseTriggerType.FirstThrowFail => "Anwurf",
|
|
ExpenseTriggerType.Circle => "Kranz",
|
|
ExpenseTriggerType.Strike => "Alle 9",
|
|
ExpenseTriggerType.FullGutter => "Anwurf-Gosse",
|
|
ExpenseTriggerType.Eliminated => "Ausgeschieden",
|
|
ExpenseTriggerType.Absent => "Abwesend",
|
|
ExpenseTriggerType.ExpensePoint => "Strafpunkt",
|
|
_ => type.ToString()
|
|
};
|
|
}
|