Files
UserService/UserService/Pages/SecurityGroups.razor

95 lines
3.4 KiB
Plaintext

@page "/securitygroups"
@using UserService.DatabaseLayer.DataModels
@using UserService.DatabaseLayer.Repository
@inject ISecurityGroupsRepository SecurityGroupsRepository
@inject IOrganizationUnitsRepository OrganizationUnits
<h1>Table of all security groups</h1>
@if (_securityGroups == null)
{
<p>
<em>Loading...</em>
</p>
}
else
{
<MatTable Items="@_securityGroups" class="mat-elevation-z5">
<MatTableHeader>
<th style="width: 30%">Common Name</th>
<th style="width: 20%">Description</th>
<th style="width: 20%">E-Mail</th>
<th style="width: 20%">Parent</th>
<th style="width: auto"> </th>
<th style="width: auto"> </th>
</MatTableHeader>
<MatTableRow>
<td>@context.CommonName</td>
<td>@context.Description</td>
<td>@context.EMail</td>
<td>@context.Parent</td>
<td><a href="securitygroups" @onclick="@(e => EditSecurityGroup(context))">edit</a></td>
<td><a href="securitygroups" @onclick="@(e => DeleteSecurityGroup(context))">delete</a></td>
</MatTableRow>
</MatTable>
<MatButton @onclick="@(e => EditSecurityGroup(new SecurityGroup()))">Create new group</MatButton>
}
<MatDialog @bind-IsOpen="@_dialogIsOpen">
@if (_securityGroupToEdit != null)
{
<MatDialogTitle>@(_securityGroupToEdit.Id == 0 ? "New" : "Edit") @_securityGroupToEdit.CommonName (@_securityGroupToEdit.Id)</MatDialogTitle>
<MatDialogContent>
<MatTextField Label="Common name" @bind-Value="@_securityGroupToEdit.CommonName" ReadOnly="@(_securityGroupToEdit.Id != 0)"></MatTextField>
<p />
<MatTextField Label="Description" @bind-Value="@_securityGroupToEdit.Description"></MatTextField>
<MatTextField Label="E-Mail" @bind-Value="@_securityGroupToEdit.EMail"></MatTextField>
<p />
<MatAutocompleteList Items="@_organizationUnits" TItem="Node" Label="Parent" CustomStringSelector="@(i => i.CommonName)" @bind-Value="@_securityGroupToEdit.Parent"></MatAutocompleteList>
</MatDialogContent>
}
else
{
<MatDialogTitle>No securityGroup selected</MatDialogTitle>
}
<MatDialogActions>
<MatButton OnClick="@(e => { _dialogIsOpen = false; })">No Thanks</MatButton>
<MatButton OnClick="@OkClick">OK</MatButton>
</MatDialogActions>
</MatDialog>
@code {
bool _dialogIsOpen;
SecurityGroup _securityGroupToEdit;
private IReadOnlyList<SecurityGroup> _securityGroups;
private IReadOnlyList<OrganizationUnit> _organizationUnits;
protected override async Task OnInitializedAsync()
{
_securityGroups = await SecurityGroupsRepository.GetAllAsync();
_organizationUnits = await OrganizationUnits.GetAllAsync().ConfigureAwait(false);
}
private void EditSecurityGroup(SecurityGroup securityGroup)
{
_dialogIsOpen = true;
_securityGroupToEdit = (SecurityGroup)securityGroup.Clone();
}
async Task OkClick()
{
await SecurityGroupsRepository.UpdateAsync(_securityGroupToEdit).ConfigureAwait(false);
await OnInitializedAsync().ConfigureAwait(false);
_dialogIsOpen = false;
}
private async Task DeleteSecurityGroup(SecurityGroup securityGroup)
{
await SecurityGroupsRepository.DeleteAsync(securityGroup).ConfigureAwait(false);
await OnInitializedAsync().ConfigureAwait(false);
}
}