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)); if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder));
modelBuilder.Entity<MembersMember>() modelBuilder.Entity<MembersMember>()
.HasKey(bc => new { bc.MemberId, AttachedMemberId = bc.AttachedMemberId }); .HasKey(bc => new { bc.MemberId, bc.AttachedMemberId });
modelBuilder.Entity<MembersMember>() modelBuilder.Entity<MembersMember>()
.HasOne(bc => bc.AttachedMember) .HasOne(bc => bc.AttachedMember)
.WithMany(b => b!.MemberOf) .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); 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(); 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) 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 namespace UserService.DatabaseLayer.Repositories
{ {
@ -7,5 +14,12 @@ namespace UserService.DatabaseLayer.Repositories
public SecurityGroupsRepository() : base(x => x.SecurityGroups) 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)" TextField="@((item) => item.CommonName)"
ValueField="@((item) => item)" ValueField="@((item) => item)"
SearchChanged="@OnSearchChanged" SearchChanged="@OnSearchChanged"
Placeholder="Username" SelectedValue="@SelectedMember"/> Placeholder="Username"
SelectedValueChanged="@MySearchHandler"
SelectedValue="@SelectedMember" />
</Addon> </Addon>
<Addon AddonType="AddonType.End"> <Addon AddonType="AddonType.End">
<Button Clicked="@AddToListAsync" Color="Color.Primary">Ok</Button> <Button Clicked="@AddToListAsync" Color="Color.Primary">Ok</Button>
@ -121,37 +123,26 @@ else
<Row> <Row>
<Column ColumnSize="ColumnSize.Is12"> <Column ColumnSize="ColumnSize.Is12">
<Table Narrow="true" FullWidth="true"> <Table Narrow="true" FullWidth="true">
<TableHeader> <TableHeader>
<TableRow> <TableRow>
<TableHeaderCell>#</TableHeaderCell> <TableHeaderCell>#</TableHeaderCell>
<TableHeaderCell>Common Name</TableHeaderCell> <TableHeaderCell>Common Name</TableHeaderCell>
<TableHeaderCell></TableHeaderCell> <TableHeaderCell></TableHeaderCell>
</TableRow> </TableRow>
</TableHeader> </TableHeader>
<TableBody> <TableBody>
@foreach (var member in SelectedSecurityGroup?.Members ?? Enumerable.Empty<MembersMember>()) @foreach (var member in SelectedSecurityGroup?.Members ?? Enumerable.Empty<MembersMember>())
{ {
<TableRow> <TableRow>
<TableRowHeader>@member.MemberId</TableRowHeader> <TableRowHeader>@member.MemberId</TableRowHeader>
<TableRowCell>Mark</TableRowCell> <TableRowCell>@member.AttachedMember.CommonName</TableRowCell>
<TableRowCell> <TableRowCell>
<Button Color="Color.Danger">Delete</Button> <Button Color="Color.Danger">Delete</Button>
</TableRowCell> </TableRowCell>
</TableRow> </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> </TableBody>
</Table> </Table>
</Column> </Column>
</Row> </Row>

View File

@ -50,8 +50,7 @@ namespace UserService.Pages
} }
/// <inheritdoc /> /// <inheritdoc />
protected override async Task RowUpdatingCallback( protected override async Task RowUpdatingCallback(CancellableRowChange<SecurityGroup, Dictionary<string, object>> arg)
CancellableRowChange<SecurityGroup, Dictionary<string, object>> arg)
{ {
if (arg == null) throw new ArgumentNullException(nameof(arg)); if (arg == null) throw new ArgumentNullException(nameof(arg));
var securityGroup = arg.Item; var securityGroup = arg.Item;
@ -64,8 +63,11 @@ namespace UserService.Pages
protected async Task MySearchHandler(object arg) protected async Task MySearchHandler(object arg)
{ {
var result = arg is Member addedMember ? addedMember.CommonName : "Fuck"; if (arg is Member addedMember)
await JsRuntime.AlertAsync(result).ConfigureAwait(false); {
SelectedMember = addedMember;
}
} }
protected async Task OnSearchChanged(string arg) protected async Task OnSearchChanged(string arg)
@ -91,7 +93,17 @@ namespace UserService.Pages
protected async Task AddToListAsync() 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);
} }