From 1811ea5a1ac10f47228e53761a9d852ccb0f6048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20B=C3=B6rchers?= Date: Sat, 26 Sep 2020 20:49:09 +0200 Subject: [PATCH] Fixed bugs --- .../Repositories/BaseRepository.cs | 4 ++-- .../Repositories/SecurityGroupsRepository.cs | 10 ++++++++++ .../KeyValueExtensions.cs | 13 +++++++++++++ UserService.Infrastructure/NodeExtensions.cs | 10 ++++++---- UserService.db | Bin 40960 -> 40960 bytes UserService/Pages/SecurityGroups.razor | 7 ++++--- UserService/Pages/SecurityGroups.razor.cs | 8 +++----- 7 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 UserService.Infrastructure/KeyValueExtensions.cs diff --git a/UserService.DatabaseLayer/Repositories/BaseRepository.cs b/UserService.DatabaseLayer/Repositories/BaseRepository.cs index 9042c1c..25970e3 100644 --- a/UserService.DatabaseLayer/Repositories/BaseRepository.cs +++ b/UserService.DatabaseLayer/Repositories/BaseRepository.cs @@ -27,7 +27,7 @@ namespace UserService.DatabaseLayer.Repositories await db.SaveChangesAsync(token).ConfigureAwait(false); } - public async Task DeleteAsync(T entity, CancellationToken token = default) + public virtual async Task DeleteAsync(T entity, CancellationToken token = default) { await using var db = new UserServiceDbContext(); Context(db).Remove(entity); @@ -45,7 +45,7 @@ namespace UserService.DatabaseLayer.Repositories await using var db = new UserServiceDbContext(); return await Context(db).Include(x => x.Parent).FirstOrDefaultAsync(predicate, token).ConfigureAwait(false); } - public async Task UpdateAsync(T entity, CancellationToken token = default) + public virtual async Task UpdateAsync(T entity, CancellationToken token = default) { await using var db = new UserServiceDbContext(); Context(db).Update(entity); diff --git a/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs b/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs index 6ea101d..a7aefed 100644 --- a/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs +++ b/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs @@ -22,6 +22,7 @@ namespace UserService.DatabaseLayer.Repositories return await Context(db) .Include(x => x.Parent) .Include(x => x.Members) + .ThenInclude(x=> x.AttachedMember) .WhereOrDefault(predicate) .ToListAsync(token).ConfigureAwait(false); } @@ -32,7 +33,16 @@ namespace UserService.DatabaseLayer.Repositories return await Context(db) .Include(x => x.Parent) .Include(x => x.Members) + .ThenInclude(x=> x.AttachedMember) .FirstOrDefaultAsync(predicate, token).ConfigureAwait(false); } + + public override async Task UpdateAsync(SecurityGroup entity, CancellationToken token = default) + { + await using var db = new UserServiceDbContext(); + Context(db).Update(entity); + var items = await db.SaveChangesAsync(token).ConfigureAwait(false); + return items > 0; + } } } \ No newline at end of file diff --git a/UserService.Infrastructure/KeyValueExtensions.cs b/UserService.Infrastructure/KeyValueExtensions.cs new file mode 100644 index 0000000..b38cca0 --- /dev/null +++ b/UserService.Infrastructure/KeyValueExtensions.cs @@ -0,0 +1,13 @@ +// ReSharper disable once CheckNamespace +namespace System.Collections.Generic +{ + public static class KeyValueExtensions + { + public static void Deconstruct(this KeyValuePair keyValuePair, out TKey key, + out TValue value) + { + key = keyValuePair.Key; + value = keyValuePair.Value; + } + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/NodeExtensions.cs b/UserService.Infrastructure/NodeExtensions.cs index 9317853..6fa6a5e 100644 --- a/UserService.Infrastructure/NodeExtensions.cs +++ b/UserService.Infrastructure/NodeExtensions.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using UserService.Infrastructure.DataModels; -namespace UserService.Infrastructure.DataModels +namespace UserService.Infrastructure { public static class NodeExtensions { @@ -12,11 +12,13 @@ namespace UserService.Infrastructure.DataModels if (member == null) throw new ArgumentNullException(nameof(member)); if (values == null) throw new ArgumentNullException(nameof(values)); var properties = member.GetType().GetProperties(); - foreach (var keyValuePair in values) + foreach (var (key, value) in values) { - var propertyInfo = properties.FirstOrDefault(x => x.Name == keyValuePair.Key); + var propertyInfo = properties.FirstOrDefault(x => x.Name == key); if (propertyInfo == null) continue; - propertyInfo.SetValue(member, keyValuePair.Value); + var currentValue = propertyInfo.GetValue(member); + if(Equals(currentValue, value)) continue; + propertyInfo.SetValue(member, value); } } } diff --git a/UserService.db b/UserService.db index cd6537774e2eea638dcc3be98a7dea4689a45c6b..e80347f216afd4993e993d365936c2510f5552a5 100644 GIT binary patch delta 277 zcmZoTz|?SnX#T{M&|;nT?Zg0t4TK%^VJGe3}}}p^U`X z#JPE=pSPkIC*KVQ{y+TR`Oon$<*(rn=DWeK#m@+I{XV|QZT=dJoSPZznHj}6`L95f hed2%1|APN9|2_Vj{8xa=cJZ^aFf#y^-RxHv002TcP^SO@ delta 127 zcmZoTz|?SnX#HD_sBp diff --git a/UserService/Pages/SecurityGroups.razor b/UserService/Pages/SecurityGroups.razor index 5ff271f..48af2b4 100644 --- a/UserService/Pages/SecurityGroups.razor +++ b/UserService/Pages/SecurityGroups.razor @@ -96,7 +96,7 @@ else { Members of @SelectedSecurityGroup.CommonName group - + @@ -135,7 +135,7 @@ else { @member.MemberId - @member.AttachedMember.CommonName + @member.AttachedMember?.CommonName @@ -148,7 +148,8 @@ else - + + } diff --git a/UserService/Pages/SecurityGroups.razor.cs b/UserService/Pages/SecurityGroups.razor.cs index 8e6b0c3..99c0c2c 100644 --- a/UserService/Pages/SecurityGroups.razor.cs +++ b/UserService/Pages/SecurityGroups.razor.cs @@ -6,6 +6,7 @@ using Blazorise; using Blazorise.DataGrid; using Microsoft.AspNetCore.Components; using UserService.DatabaseLayer.Repositories; +using UserService.Infrastructure; using UserService.Infrastructure.DataModels; namespace UserService.Pages @@ -103,11 +104,8 @@ namespace UserService.Pages AttachedMember = SelectedMember }); SelectedMember = default; - //await SecurityGroupsRepository.UpdateAsync(SelectedSecurityGroup).ConfigureAwait(false); } - - protected void OnButtonClicked(SecurityGroup securityGroup) { SelectedSecurityGroup = securityGroup; @@ -131,9 +129,9 @@ namespace UserService.Pages public Member? SelectedMember { get; set; } - - protected void HideModal() + protected async Task HideModalAsync(bool save) { + if (save && SelectedSecurityGroup != null) await SecurityGroupsRepository.UpdateAsync(SelectedSecurityGroup).ConfigureAwait(false); ModalRef.Hide(); } }