Users page and users service
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
@page "/"
|
||||
|
||||
<PageTitle>Index</PageTitle>
|
||||
|
||||
<h1>Hello, world!</h1>
|
||||
|
||||
Welcome to your new app.
|
||||
|
||||
<SurveyPrompt Title="How is Blazor working for you?"/>
|
||||
72
FoodsharingSiegen.Server/Pages/Users.razor
Normal file
72
FoodsharingSiegen.Server/Pages/Users.razor
Normal file
@@ -0,0 +1,72 @@
|
||||
@page "/"
|
||||
@using FoodsharingSiegen.Contracts.Entity
|
||||
|
||||
@code {
|
||||
|
||||
private RenderFragment PopupTitleTemplate(PopupTitleContext<User> value)
|
||||
{
|
||||
var header = "Benutzer erstellen";
|
||||
if (value.EditState == DataGridEditState.Edit) header = "Benutzer bearbeiten";
|
||||
|
||||
return builder =>
|
||||
{
|
||||
builder.OpenElement(0, "span");
|
||||
builder.AddContent(1, header);
|
||||
builder.CloseElement();
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
<PageTitle>Benutzer</PageTitle>
|
||||
|
||||
<h2>Benutzerverwaltung <span style="font-size: .5em; line-height: 0;">Admin</span></h2>
|
||||
|
||||
<DataGrid TItem="User"
|
||||
@ref="UserDataGrid"
|
||||
Data="@UserList"
|
||||
CommandMode="DataGridCommandMode.Commands"
|
||||
EditMode="DataGridEditMode.Popup"
|
||||
PopupTitleTemplate="PopupTitleTemplate"
|
||||
RowInserted="RowInserted"
|
||||
RowUpdated="RowUpdated"
|
||||
RowDoubleClicked="arg => UserDataGrid.Edit(arg.Item)"
|
||||
Editable
|
||||
Responsive>
|
||||
<DataGridColumns>
|
||||
<DataGridCommandColumn TItem="User" Caption="Wololo" Width="100px" CellStyle="@(_ => "display: flex; padding-left: 0; padding-right: 0; justify-content: center; align-items: center;")">
|
||||
<NewCommandTemplate>
|
||||
<Button Size="Size.ExtraSmall" Color="Color.Success" Clicked="@context.Clicked" Class="mr-1" Style="min-width: auto;">
|
||||
<i class="oi oi-plus"></i>
|
||||
</Button>
|
||||
</NewCommandTemplate>
|
||||
<EditCommandTemplate>
|
||||
<Button Size="Size.ExtraSmall" Color="Color.Secondary" Clicked="@context.Clicked" Class="mr-1" Style="min-width: auto;">
|
||||
<i class="oi oi-pencil"></i>
|
||||
</Button>
|
||||
</EditCommandTemplate>
|
||||
<DeleteCommandTemplate>
|
||||
<Button Size="Size.ExtraSmall" Color="Color.Danger" Clicked="@context.Clicked" Class="mr-1" Style="min-width: auto;">
|
||||
<i class="oi oi-trash"></i>
|
||||
</Button>
|
||||
</DeleteCommandTemplate>
|
||||
<ClearFilterCommandTemplate>
|
||||
<Button Size="Size.ExtraSmall" Color="Color.Danger" Clicked="@context.Clicked" Style="min-width: auto;">
|
||||
<i class="o"></i> <i class="fas fa-trash"></i>
|
||||
</Button>
|
||||
</ClearFilterCommandTemplate>
|
||||
</DataGridCommandColumn>
|
||||
<DataGridColumn TItem="User" Field="@nameof(User.Name)" Caption="Name" Editable="true"></DataGridColumn>
|
||||
<DataGridColumn TItem="User" Field="@nameof(User.Mail)" Caption="E-Mail" Editable="true"></DataGridColumn>
|
||||
<DataGridColumn TItem="User" Field="@nameof(User.Type)" Caption="Typ" Editable="true">
|
||||
<EditTemplate>
|
||||
<Select TValue="UserType" @bind-SelectedValue="@context.Item.Type">
|
||||
@foreach (var enumValue in Enum.GetValues<UserType>())
|
||||
{
|
||||
<SelectItem TValue="UserType" Value="enumValue">@enumValue</SelectItem>
|
||||
}
|
||||
</Select>
|
||||
</EditTemplate>
|
||||
</DataGridColumn>
|
||||
</DataGridColumns>
|
||||
</DataGrid>
|
||||
56
FoodsharingSiegen.Server/Pages/Users.razor.cs
Normal file
56
FoodsharingSiegen.Server/Pages/Users.razor.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using Blazorise.DataGrid;
|
||||
using FoodsharingSiegen.Contracts.Entity;
|
||||
using FoodsharingSiegen.Server.Data.Service;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace FoodsharingSiegen.Server.Pages
|
||||
{
|
||||
public partial class Users
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// <summary> Gets or sets the user service. </summary>
|
||||
///
|
||||
/// <value> The user service. </value>
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
[Inject] public UserService UserService { get; set; } = null!;
|
||||
|
||||
private List<User>? UserList { get; set; }
|
||||
public DataGrid<User> UserDataGrid { get; set; }
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
await LoadUsers();
|
||||
|
||||
await base.OnAfterRenderAsync(firstRender);
|
||||
}
|
||||
|
||||
private async Task LoadUsers()
|
||||
{
|
||||
var usersR = await UserService.GetUsersAsync();
|
||||
if (usersR.Success) UserList = usersR.Data;
|
||||
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
private async Task RowUpdated(SavedRowItem<User, Dictionary<string, object>> arg)
|
||||
{
|
||||
if (arg.Item?.Id == null || arg.Item.Id.Equals(Guid.Empty) || arg.Values?.Any() != true) return;
|
||||
|
||||
await UserService.Update(arg.Item);
|
||||
}
|
||||
|
||||
private async Task RowInserted(SavedRowItem<User, Dictionary<string, object>> arg)
|
||||
{
|
||||
var addUserR = await UserService.AddUserAsync(arg.Item);
|
||||
if (!addUserR.Success)
|
||||
{
|
||||
// Error Toast
|
||||
}
|
||||
else
|
||||
{
|
||||
await LoadUsers();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user