From baec3160afedf4028dc276ff1a4e5c3abcf8e5ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20B=C3=B6rchers?= Date: Fri, 11 Sep 2020 22:41:21 +0200 Subject: [PATCH] feature: save members of security group --- .../.idea/codeStyles/codeStyleConfig.xml | 5 +++ .../DataModels/ModelBuilderExtensions.cs | 2 +- .../Repositories/BaseRepository.cs | 4 +-- .../Repositories/SecurityGroupsRepository.cs | 16 ++++++++- UserService/Pages/SecurityGroups.razor | 33 +++++++------------ UserService/Pages/SecurityGroups.razor.cs | 22 ++++++++++--- 6 files changed, 52 insertions(+), 30 deletions(-) create mode 100644 .idea/.idea.UserService/.idea/codeStyles/codeStyleConfig.xml diff --git a/.idea/.idea.UserService/.idea/codeStyles/codeStyleConfig.xml b/.idea/.idea.UserService/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/.idea.UserService/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs index d1583a5..f5aacf7 100644 --- a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs +++ b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs @@ -30,7 +30,7 @@ namespace UserService.DatabaseLayer.DataModels { if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder)); modelBuilder.Entity() - .HasKey(bc => new { bc.MemberId, AttachedMemberId = bc.AttachedMemberId }); + .HasKey(bc => new { bc.MemberId, bc.AttachedMemberId }); modelBuilder.Entity() .HasOne(bc => bc.AttachedMember) .WithMany(b => b!.MemberOf) diff --git a/UserService.DatabaseLayer/Repositories/BaseRepository.cs b/UserService.DatabaseLayer/Repositories/BaseRepository.cs index 127e8d2..36819f9 100644 --- a/UserService.DatabaseLayer/Repositories/BaseRepository.cs +++ b/UserService.DatabaseLayer/Repositories/BaseRepository.cs @@ -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 GetAsync(Expression> predicate, CancellationToken token = default) + public virtual async Task GetAsync(Expression> 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) diff --git a/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs b/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs index 17b09c9..cebc343 100644 --- a/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs +++ b/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs @@ -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> GetAllAsync(Expression>? 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); + } + } } \ No newline at end of file diff --git a/UserService/Pages/SecurityGroups.razor b/UserService/Pages/SecurityGroups.razor index 617bded..5ff271f 100644 --- a/UserService/Pages/SecurityGroups.razor +++ b/UserService/Pages/SecurityGroups.razor @@ -110,7 +110,9 @@ else TextField="@((item) => item.CommonName)" ValueField="@((item) => item)" SearchChanged="@OnSearchChanged" - Placeholder="Username" SelectedValue="@SelectedMember"/> + Placeholder="Username" + SelectedValueChanged="@MySearchHandler" + SelectedValue="@SelectedMember" /> @@ -121,37 +123,26 @@ else - - - # - Common Name - - - + + + # + Common Name + + + @foreach (var member in SelectedSecurityGroup?.Members ?? Enumerable.Empty()) { @member.MemberId - Mark + @member.AttachedMember.CommonName } - - - 2 - Jacob - - - - 3 - Larry - - -
+
diff --git a/UserService/Pages/SecurityGroups.razor.cs b/UserService/Pages/SecurityGroups.razor.cs index 282915c..8e6b0c3 100644 --- a/UserService/Pages/SecurityGroups.razor.cs +++ b/UserService/Pages/SecurityGroups.razor.cs @@ -50,8 +50,7 @@ namespace UserService.Pages } /// - protected override async Task RowUpdatingCallback( - CancellableRowChange> arg) + protected override async Task RowUpdatingCallback(CancellableRowChange> 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); }