feature: save members of security group

This commit is contained in:
Holger Börchers 2020-09-11 22:41:21 +02:00
parent 31ef9bf45b
commit baec3160af
6 changed files with 52 additions and 30 deletions

View File

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

View File

@ -30,7 +30,7 @@ namespace UserService.DatabaseLayer.DataModels
{
if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder));
modelBuilder.Entity<MembersMember>()
.HasKey(bc => new { bc.MemberId, AttachedMemberId = bc.AttachedMemberId });
.HasKey(bc => new { bc.MemberId, bc.AttachedMemberId });
modelBuilder.Entity<MembersMember>()
.HasOne(bc => bc.AttachedMember)
.WithMany(b => b!.MemberOf)

View File

@ -26,10 +26,10 @@ namespace UserService.DatabaseLayer.Repositories
return await Context(db).Include(x => x.Parent).WhereOrDefault(predicate).ToListAsync(token).ConfigureAwait(false);
}
public async Task<T?> GetAsync(Expression<Func<T, bool>> predicate, CancellationToken token = default)
public virtual async Task<T?> GetAsync(Expression<Func<T, bool>> predicate, CancellationToken token = default)
{
await using var db = new UserServiceDbContext();
return await Context(db).FirstOrDefaultAsync(predicate, token).ConfigureAwait(false);
return await Context(db).Include(x => x.Parent).FirstOrDefaultAsync(predicate, token).ConfigureAwait(false);
}
public async Task AddAsync(T entity, CancellationToken token = default)

View File

@ -1,4 +1,11 @@
using UserService.Infrastructure.DataModels;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using UserService.DatabaseLayer.DataModels;
using UserService.Infrastructure.DataModels;
namespace UserService.DatabaseLayer.Repositories
{
@ -7,5 +14,12 @@ namespace UserService.DatabaseLayer.Repositories
public SecurityGroupsRepository() : base(x => x.SecurityGroups)
{
}
public override async Task<IReadOnlyList<SecurityGroup>> GetAllAsync(Expression<Func<SecurityGroup, bool>>? predicate = null, CancellationToken token = default)
{
await using var db = new UserServiceDbContext();
return await Context(db).Include(x => x.Parent).WhereOrDefault(predicate).ToListAsync(token).ConfigureAwait(false);
}
}
}

View File

@ -110,7 +110,9 @@ else
TextField="@((item) => item.CommonName)"
ValueField="@((item) => item)"
SearchChanged="@OnSearchChanged"
Placeholder="Username" SelectedValue="@SelectedMember"/>
Placeholder="Username"
SelectedValueChanged="@MySearchHandler"
SelectedValue="@SelectedMember" />
</Addon>
<Addon AddonType="AddonType.End">
<Button Clicked="@AddToListAsync" Color="Color.Primary">Ok</Button>
@ -121,37 +123,26 @@ else
<Row>
<Column ColumnSize="ColumnSize.Is12">
<Table Narrow="true" FullWidth="true">
<TableHeader>
<TableRow>
<TableHeaderCell>#</TableHeaderCell>
<TableHeaderCell>Common Name</TableHeaderCell>
<TableHeaderCell></TableHeaderCell>
</TableRow>
</TableHeader>
<TableHeader>
<TableRow>
<TableHeaderCell>#</TableHeaderCell>
<TableHeaderCell>Common Name</TableHeaderCell>
<TableHeaderCell></TableHeaderCell>
</TableRow>
</TableHeader>
<TableBody>
@foreach (var member in SelectedSecurityGroup?.Members ?? Enumerable.Empty<MembersMember>())
{
<TableRow>
<TableRowHeader>@member.MemberId</TableRowHeader>
<TableRowCell>Mark</TableRowCell>
<TableRowCell>@member.AttachedMember.CommonName</TableRowCell>
<TableRowCell>
<Button Color="Color.Danger">Delete</Button>
</TableRowCell>
</TableRow>
}
<TableRow>
<TableRowHeader>2</TableRowHeader>
<TableRowCell>Jacob</TableRowCell>
<TableRowCell><Button>Delete</Button></TableRowCell>
</TableRow>
<TableRow>
<TableRowHeader>3</TableRowHeader>
<TableRowCell>Larry</TableRowCell>
<TableRowCell><Button>Delete</Button></TableRowCell>
</TableRow>
</TableBody>
</Table>
</Table>
</Column>
</Row>

View File

@ -50,8 +50,7 @@ namespace UserService.Pages
}
/// <inheritdoc />
protected override async Task RowUpdatingCallback(
CancellableRowChange<SecurityGroup, Dictionary<string, object>> arg)
protected override async Task RowUpdatingCallback(CancellableRowChange<SecurityGroup, Dictionary<string, object>> arg)
{
if (arg == null) throw new ArgumentNullException(nameof(arg));
var securityGroup = arg.Item;
@ -64,8 +63,11 @@ namespace UserService.Pages
protected async Task MySearchHandler(object arg)
{
var result = arg is Member addedMember ? addedMember.CommonName : "Fuck";
await JsRuntime.AlertAsync(result).ConfigureAwait(false);
if (arg is Member addedMember)
{
SelectedMember = addedMember;
}
}
protected async Task OnSearchChanged(string arg)
@ -91,7 +93,17 @@ namespace UserService.Pages
protected async Task AddToListAsync()
{
//SelectedSecurityGroup.Members.Add(new UserMember());
if (SelectedMember is null) return;
if (SelectedSecurityGroup is null) return;
SelectedSecurityGroup.Members.Add(new MembersMember
{
MemberId = SelectedSecurityGroup.Id,
Member = SelectedSecurityGroup,
AttachedMemberId = SelectedMember.Id,
AttachedMember = SelectedMember
});
SelectedMember = default;
//await SecurityGroupsRepository.UpdateAsync(SelectedSecurityGroup).ConfigureAwait(false);
}