@page "/admin/users"
@using MoonCore.Blazor.FlyonUi.Common
@using MoonCore.Helpers
@using Moonlight.Shared.Http.Responses.Admin.Users
@using MoonCore.Blazor.FlyonUi.Grid
@using MoonCore.Blazor.FlyonUi.Grid.Columns
@using MoonCore.Common
@inject HttpApiClient ApiClient
@inject AlertService AlertService
@inject ToastService ToastService
|
@code
{
private DataGrid Grid;
private ItemSource ItemSource => ItemSourceFactory.From(LoadItemsAsync);
private async Task> LoadItemsAsync(
int startIndex, int count, string? filter, SortOption? sortOption
)
{
var query = $"?startIndex={startIndex}&count={count}";
if (sortOption != null)
{
var dir = sortOption.Direction == SortDirection.Descending ? "desc" : "asc";
query += $"&orderBy={sortOption.Column}&orderByDir={dir}";
}
if (!string.IsNullOrEmpty(filter))
query += $"&filter={filter}";
return await ApiClient.GetJson>($"api/admin/users{query}");
}
private async Task DeleteAsync(UserResponse response)
{
await AlertService.ConfirmDangerAsync(
"User deletion",
$"Do you really want to delete the user '{response.Username}'",
async () =>
{
await ApiClient.Delete($"api/admin/users/{response.Id}");
await ToastService.SuccessAsync("Successfully deleted user");
await Grid.RefreshAsync();
}
);
}
}