diff --git a/UserService.Infrastructure/NodeExtensions.cs b/UserService.Infrastructure/NodeExtensions.cs index db0a73d..9317853 100644 --- a/UserService.Infrastructure/NodeExtensions.cs +++ b/UserService.Infrastructure/NodeExtensions.cs @@ -3,20 +3,20 @@ using System.Collections.Generic; using System.Linq; using UserService.Infrastructure.DataModels; -namespace UserService.Infrastructure +namespace UserService.Infrastructure.DataModels { public static class NodeExtensions { - public static void MapFields(this User user, Dictionary values) + public static void MapFields(this Member member, Dictionary values) { - if (user == null) throw new ArgumentNullException(nameof(user)); + if (member == null) throw new ArgumentNullException(nameof(member)); if (values == null) throw new ArgumentNullException(nameof(values)); - var properties = user.GetType().GetProperties(); + var properties = member.GetType().GetProperties(); foreach (var keyValuePair in values) { var propertyInfo = properties.FirstOrDefault(x => x.Name == keyValuePair.Key); if (propertyInfo == null) continue; - propertyInfo.SetValue(user, keyValuePair.Value); + propertyInfo.SetValue(member, keyValuePair.Value); } } } diff --git a/UserService.db b/UserService.db index ca2980f..8f92d56 100644 Binary files a/UserService.db and b/UserService.db differ diff --git a/UserService/Pages/MembersBase.cs b/UserService/Pages/MembersBase.cs index 6b52754..d213c91 100644 --- a/UserService/Pages/MembersBase.cs +++ b/UserService/Pages/MembersBase.cs @@ -11,22 +11,24 @@ using UserService.Infrastructure.DataModels; namespace UserService.Pages { - public abstract class MembersBase : ComponentBase where T : Member + public abstract class MembersBase : ComponentBase where TMember : Member { [Inject] protected IJSRuntime JsRuntime { get; set; } = null!; protected IReadOnlyList? OrganizationUnits { get; set; } - protected IReadOnlyList? Members { get; set; } + protected IReadOnlyList? Members { get; set; } protected string? CustomFilterValue { get; set; } - protected abstract Task RowInsertingCallback(CancellableRowChange> arg); + protected abstract Task RowInsertingCallback(CancellableRowChange> arg); - protected abstract Task RowInsertedCallback(SavedRowItem> arg); - protected abstract Task RowDeletingCallback(CancellableRowChange arg); - protected abstract Task RowUpdatingCallback(CancellableRowChange> arg); - protected abstract bool OnCustomFilter(T model); + protected abstract Task RowInsertedCallback(SavedRowItem> arg); + protected abstract Task RowDeletingCallback(CancellableRowChange arg); + protected abstract Task RowDeletedCallback(TMember user); + + protected abstract Task RowUpdatingCallback(CancellableRowChange> arg); + protected abstract bool OnCustomFilter(TMember model); protected void ValidateCommonName(ValidatorEventArgs e) { diff --git a/UserService/Pages/SecurityGroups.razor.cs b/UserService/Pages/SecurityGroups.razor.cs index 34e6a3b..cfc3036 100644 --- a/UserService/Pages/SecurityGroups.razor.cs +++ b/UserService/Pages/SecurityGroups.razor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Blazorise.DataGrid; using Microsoft.AspNetCore.Components; @@ -36,19 +37,18 @@ namespace UserService.Pages if (arg == null) throw new ArgumentNullException(nameof(arg)); var confirmed = await JsRuntime.InvokeAsync("confirm", $"You are about to delete the security group {arg.Item.CommonName}. Are you sure?").ConfigureAwait(false); - if (confirmed) - { - await SecurityGroupsRepository.DeleteAsync(arg.Item).ConfigureAwait(false); - return; - } - - arg.Cancel = true; - + arg.Cancel = !confirmed; } /// protected override async Task RowUpdatingCallback(CancellableRowChange> arg) { + if (arg == null) throw new ArgumentNullException(nameof(arg)); + var securityGroup = arg.Item; + securityGroup.MapFields(arg.Values); + securityGroup.Parent = OrganizationUnits?.FirstOrDefault(x => x.Id == (int?)arg.Values[nameof(Node.ParentId)]); + var result = await SecurityGroupsRepository.UpdateAsync(securityGroup).ConfigureAwait(false); + arg.Cancel = !result; } protected async void OnButtonClicked(SecurityGroup securityGroup) @@ -67,5 +67,7 @@ namespace UserService.Pages return model.CommonName.Contains(CustomFilterValue, StringComparison.OrdinalIgnoreCase); } + + protected override Task RowDeletedCallback(SecurityGroup item) => SecurityGroupsRepository.DeleteAsync(item); } } \ No newline at end of file diff --git a/UserService/Pages/Users.razor b/UserService/Pages/Users.razor index 625b638..5553922 100644 --- a/UserService/Pages/Users.razor +++ b/UserService/Pages/Users.razor @@ -22,6 +22,7 @@ else Editable="true" EditMode="DataGridEditMode.Inline" RowRemoving="RowDeletingCallback" + RowRemoved="RowDeletedCallback" Data="@Members" RowInserted="RowInsertedCallback" RowInserting="RowInsertingCallback" @@ -54,7 +55,6 @@ else - @@ -98,6 +98,35 @@ else - + + + @{ + if(((User) context ).IsActive){ + + + + } else { + + + + } + } + + + + @{ + if((bool)(context.CellValue)){ + + + + } else { + + + + } + } + + + } \ No newline at end of file diff --git a/UserService/Pages/Users.razor.cs b/UserService/Pages/Users.razor.cs index 72ab410..10a634b 100644 --- a/UserService/Pages/Users.razor.cs +++ b/UserService/Pages/Users.razor.cs @@ -7,8 +7,8 @@ using Blazorise; using Blazorise.DataGrid; using Microsoft.JSInterop; using UserService.DatabaseLayer.Repository; -using UserService.Infrastructure; using UserService.Infrastructure.DataModels; +using UserService.Infrastructure; namespace UserService.Pages { @@ -48,15 +48,12 @@ namespace UserService.Pages if (arg == null) throw new ArgumentNullException(nameof(arg)); var confirmed = await JsRuntime.InvokeAsync("confirm", $"You are about to delete the user {arg.Item.FullName}. Are you sure?").ConfigureAwait(false); - if (confirmed) - { - await UsersRepository.DeleteAsync(arg.Item).ConfigureAwait(false); - return; - } - - arg.Cancel = true; + arg.Cancel = !confirmed; } + protected override Task RowDeletedCallback(User user) => UsersRepository.DeleteAsync(user); + + protected static void ValidateEmail(ValidatorEventArgs e) { if (e == null) throw new ArgumentNullException(nameof(e));