From 8fcd1c4c44ed0be5b5ace5f2dbdbf1dc894854e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20B=C3=B6rchers?= Date: Tue, 18 Aug 2020 21:59:10 +0200 Subject: [PATCH] Working on users view, added infrastructure lib --- .../DataModels/ModelBuilderExtensions.cs | 1 + UserService.DatabaseLayer/DataModels/Node.cs | 62 ------------------ .../DataModels/UserServiceDbContext.cs | 1 + .../UserServiceDbContextModelSnapshot.cs | 3 +- .../Repository/BaseRepository.cs | 1 + .../Repository/IRepository.cs | 2 +- .../Repository/OrganizationUnitsRepository.cs | 1 + .../Repository/SecurityGroupsRepository.cs | 2 +- .../Repository/UsersRepository.cs | 2 +- .../UserService.DatabaseLayer.csproj | 6 +- .../DataModels/Member.cs | 13 ++++ UserService.Infrastructure/DataModels/Node.cs | 24 +++++++ .../DataModels/OrganizationUnit.cs | 7 ++ .../DataModels/SecurityGroup.cs | 6 ++ UserService.Infrastructure/DataModels/User.cs | 15 +++++ .../DataModels/UserMember.cs | 12 ++++ .../UserService.Infrastructure.csproj | 12 ++++ UserService.Infrastructure/Validators.cs | 22 +++++++ UserService.Test/UnitTest1.cs | 1 + UserService.Test/UserService.Test.csproj | 2 + UserService.db | Bin 40960 -> 40960 bytes UserService.sln | 6 ++ UserService/Pages/Directory.razor.cs | 2 +- UserService/Pages/SecurityGroups.razor | 2 +- UserService/Pages/SecurityGroups.razor.cs | 2 +- UserService/Pages/Users.razor | 13 ++-- UserService/Pages/Users.razor.cs | 61 +++++++++++------ UserService/UserService.csproj | 2 + 28 files changed, 184 insertions(+), 99 deletions(-) delete mode 100644 UserService.DatabaseLayer/DataModels/Node.cs create mode 100644 UserService.Infrastructure/DataModels/Member.cs create mode 100644 UserService.Infrastructure/DataModels/Node.cs create mode 100644 UserService.Infrastructure/DataModels/OrganizationUnit.cs create mode 100644 UserService.Infrastructure/DataModels/SecurityGroup.cs create mode 100644 UserService.Infrastructure/DataModels/User.cs create mode 100644 UserService.Infrastructure/DataModels/UserMember.cs create mode 100644 UserService.Infrastructure/UserService.Infrastructure.csproj create mode 100644 UserService.Infrastructure/Validators.cs diff --git a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs index 68710ae..e2be228 100644 --- a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs +++ b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs @@ -1,6 +1,7 @@ using System; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; +using UserService.Infrastructure.DataModels; namespace UserService.DatabaseLayer.DataModels { diff --git a/UserService.DatabaseLayer/DataModels/Node.cs b/UserService.DatabaseLayer/DataModels/Node.cs deleted file mode 100644 index ed5c873..0000000 --- a/UserService.DatabaseLayer/DataModels/Node.cs +++ /dev/null @@ -1,62 +0,0 @@ -#nullable enable -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; - -namespace UserService.DatabaseLayer.DataModels -{ - public class OrganizationUnit : Node - { - public Member? Manager { get; set; } - } - - public class SecurityGroup : Member - { - } - - public class User : Member - { - public string? FirstName { get; set; } - public string? LastName { get; set; } - public bool IsActive { get; set; } - - public string FullName => $"{FirstName} {LastName}"; - - public IEnumerable MemberOf { get; set; } = new List(); - } - - public class UserMember - { - public int MemberId { get; set; } - public Member? Member { get; set; } - - public int UserId { get; set; } - - public User? User { get; set; } - } - - public abstract class Member : Node - { - [EmailAddress] - public string? EMail { get; set; } - - public ICollection Members { get; set; } = new List(); - } - - public abstract class Node : ICloneable - { - public int Id { get; set; } - [Required] public string CommonName { get; set; } = null!; - public string? Description { get; set; } - public ICollection Children { get; set; } = new List(); - public Node? Parent { get; set; } //Parent - public int? ParentId { get; set; } - - public override string ToString() => CommonName; - - public int Level => Parent?.Level + 1 ?? 0; - - /// - public virtual object Clone() => MemberwiseClone(); - } -} \ No newline at end of file diff --git a/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs b/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs index 68c5567..cd9e5d8 100644 --- a/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs +++ b/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using UserService.Infrastructure.DataModels; namespace UserService.DatabaseLayer.DataModels { diff --git a/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs b/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs index 4d03a6e..c9aa074 100644 --- a/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs +++ b/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs @@ -1,8 +1,7 @@ // -using System; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using UserService.DatabaseLayer.DataModels; namespace UserService.DatabaseLayer.Migrations diff --git a/UserService.DatabaseLayer/Repository/BaseRepository.cs b/UserService.DatabaseLayer/Repository/BaseRepository.cs index b50f2ee..61db729 100644 --- a/UserService.DatabaseLayer/Repository/BaseRepository.cs +++ b/UserService.DatabaseLayer/Repository/BaseRepository.cs @@ -7,6 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using UserService.DatabaseLayer.DataModels; +using UserService.Infrastructure.DataModels; namespace UserService.DatabaseLayer.Repository { diff --git a/UserService.DatabaseLayer/Repository/IRepository.cs b/UserService.DatabaseLayer/Repository/IRepository.cs index 5a95ac4..74058e5 100644 --- a/UserService.DatabaseLayer/Repository/IRepository.cs +++ b/UserService.DatabaseLayer/Repository/IRepository.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; -using UserService.DatabaseLayer.DataModels; +using UserService.Infrastructure.DataModels; namespace UserService.DatabaseLayer.Repository { diff --git a/UserService.DatabaseLayer/Repository/OrganizationUnitsRepository.cs b/UserService.DatabaseLayer/Repository/OrganizationUnitsRepository.cs index 7a1fa41..fa44e7c 100644 --- a/UserService.DatabaseLayer/Repository/OrganizationUnitsRepository.cs +++ b/UserService.DatabaseLayer/Repository/OrganizationUnitsRepository.cs @@ -6,6 +6,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using UserService.DatabaseLayer.DataModels; +using UserService.Infrastructure.DataModels; namespace UserService.DatabaseLayer.Repository { diff --git a/UserService.DatabaseLayer/Repository/SecurityGroupsRepository.cs b/UserService.DatabaseLayer/Repository/SecurityGroupsRepository.cs index 0f4ce54..6948ce7 100644 --- a/UserService.DatabaseLayer/Repository/SecurityGroupsRepository.cs +++ b/UserService.DatabaseLayer/Repository/SecurityGroupsRepository.cs @@ -1,4 +1,4 @@ -using UserService.DatabaseLayer.DataModels; +using UserService.Infrastructure.DataModels; namespace UserService.DatabaseLayer.Repository { diff --git a/UserService.DatabaseLayer/Repository/UsersRepository.cs b/UserService.DatabaseLayer/Repository/UsersRepository.cs index 95421ca..cb60251 100644 --- a/UserService.DatabaseLayer/Repository/UsersRepository.cs +++ b/UserService.DatabaseLayer/Repository/UsersRepository.cs @@ -1,4 +1,4 @@ -using UserService.DatabaseLayer.DataModels; +using UserService.Infrastructure.DataModels; namespace UserService.DatabaseLayer.Repository { diff --git a/UserService.DatabaseLayer/UserService.DatabaseLayer.csproj b/UserService.DatabaseLayer/UserService.DatabaseLayer.csproj index fc60665..6bd1a27 100644 --- a/UserService.DatabaseLayer/UserService.DatabaseLayer.csproj +++ b/UserService.DatabaseLayer/UserService.DatabaseLayer.csproj @@ -2,7 +2,7 @@ netcoreapp3.1 - 8 + latest enable @@ -18,4 +18,8 @@ + + + + diff --git a/UserService.Infrastructure/DataModels/Member.cs b/UserService.Infrastructure/DataModels/Member.cs new file mode 100644 index 0000000..ee4a4cc --- /dev/null +++ b/UserService.Infrastructure/DataModels/Member.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace UserService.Infrastructure.DataModels +{ + public abstract class Member : Node + { + [EmailAddress] + public string? EMail { get; set; } + + public ICollection Members { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/Node.cs b/UserService.Infrastructure/DataModels/Node.cs new file mode 100644 index 0000000..6bbb3c0 --- /dev/null +++ b/UserService.Infrastructure/DataModels/Node.cs @@ -0,0 +1,24 @@ +#nullable enable +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace UserService.Infrastructure.DataModels +{ + public abstract class Node : ICloneable + { + public int Id { get; set; } + [Required] public string CommonName { get; set; } = null!; + public string? Description { get; set; } + public ICollection Children { get; set; } = new List(); + public Node? Parent { get; set; } //Parent + public int? ParentId { get; set; } + + public override string ToString() => CommonName; + + public int Level => Parent?.Level + 1 ?? 0; + + /// + public virtual object Clone() => MemberwiseClone(); + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/OrganizationUnit.cs b/UserService.Infrastructure/DataModels/OrganizationUnit.cs new file mode 100644 index 0000000..405278a --- /dev/null +++ b/UserService.Infrastructure/DataModels/OrganizationUnit.cs @@ -0,0 +1,7 @@ +namespace UserService.Infrastructure.DataModels +{ + public class OrganizationUnit : Node + { + public Member? Manager { get; set; } + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/SecurityGroup.cs b/UserService.Infrastructure/DataModels/SecurityGroup.cs new file mode 100644 index 0000000..78d3a91 --- /dev/null +++ b/UserService.Infrastructure/DataModels/SecurityGroup.cs @@ -0,0 +1,6 @@ +namespace UserService.Infrastructure.DataModels +{ + public class SecurityGroup : Member + { + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/User.cs b/UserService.Infrastructure/DataModels/User.cs new file mode 100644 index 0000000..a7f458e --- /dev/null +++ b/UserService.Infrastructure/DataModels/User.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; + +namespace UserService.Infrastructure.DataModels +{ + public class User : Member + { + public string? FirstName { get; set; } + public string? LastName { get; set; } + public bool IsActive { get; set; } + + public string FullName => $"{FirstName} {LastName}"; + + public IEnumerable MemberOf { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/UserMember.cs b/UserService.Infrastructure/DataModels/UserMember.cs new file mode 100644 index 0000000..91d4f69 --- /dev/null +++ b/UserService.Infrastructure/DataModels/UserMember.cs @@ -0,0 +1,12 @@ +namespace UserService.Infrastructure.DataModels +{ + public class UserMember + { + public int MemberId { get; set; } + public Member? Member { get; set; } + + public int UserId { get; set; } + + public User? User { get; set; } + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/UserService.Infrastructure.csproj b/UserService.Infrastructure/UserService.Infrastructure.csproj new file mode 100644 index 0000000..551862b --- /dev/null +++ b/UserService.Infrastructure/UserService.Infrastructure.csproj @@ -0,0 +1,12 @@ + + + + netstandard2.0 + latest + + + + + + + diff --git a/UserService.Infrastructure/Validators.cs b/UserService.Infrastructure/Validators.cs new file mode 100644 index 0000000..5eabcf6 --- /dev/null +++ b/UserService.Infrastructure/Validators.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using UserService.Infrastructure.DataModels; + +namespace UserService.Infrastructure +{ + public static class Validators + { + public static bool? ValidateEmail(string mailAddress) + { + if (string.IsNullOrEmpty(mailAddress)) return null; + return new EmailAddressAttribute().IsValid(mailAddress); + } + + public static bool? ValidateCommonName(string commonName, IReadOnlyList users) + { + if (string.IsNullOrEmpty(commonName)) return false; + return users.All(x => x.CommonName != commonName); + } + } +} diff --git a/UserService.Test/UnitTest1.cs b/UserService.Test/UnitTest1.cs index 0b70fc3..8fc8774 100644 --- a/UserService.Test/UnitTest1.cs +++ b/UserService.Test/UnitTest1.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using UserService.DatabaseLayer.DataModels; +using UserService.Infrastructure.DataModels; namespace UserService.Test { diff --git a/UserService.Test/UserService.Test.csproj b/UserService.Test/UserService.Test.csproj index 48b2f52..c20cbd9 100644 --- a/UserService.Test/UserService.Test.csproj +++ b/UserService.Test/UserService.Test.csproj @@ -4,6 +4,8 @@ netcoreapp3.1 false + + latest diff --git a/UserService.db b/UserService.db index 11403be6291cbe783e4caabbba18c425a201ee63..adc6bf48576a35c914c5bf477dd3fb9dc74b6429 100644 GIT binary patch delta 273 zcmZoTz|?SnX#=AH8_!Dy0iM;9*$os}SMz-4nY>w0Af2ZkC@LYzz$nVVz`((fm6(^A zm-sKVIJL-zo0~xzC~ht-&&iOLpOKiCm&gv1fU+Hu@>7eFGg6C+_413-y&wvl4sU~q z@u@Qyr~-9MN~-We%#oDj=VZvp&q+@$G6Gv*=wPImlFIG@7INAwY5Powk#|!7lLF6N z1_A!*jQltGzwxi1EKnf9#y=edf$mM^7vi7G!1j-am6?%|otytRkj*=JaeW*c{|2BY lpywKZp5x!ZzYM6jik}}S%F4sS%)rPE^d2kk=B@qS0s#82OUnQN delta 159 zcmZoTz|?SnX#=AH8=pFZ0ME;?*qFE*PKNBn zw6xSzx6GW9)S_RZ#i>Px4n}$@soqG!nTable of all security groups diff --git a/UserService/Pages/SecurityGroups.razor.cs b/UserService/Pages/SecurityGroups.razor.cs index 1c65bfd..c1fcb06 100644 --- a/UserService/Pages/SecurityGroups.razor.cs +++ b/UserService/Pages/SecurityGroups.razor.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Components; -using UserService.DatabaseLayer.DataModels; using UserService.DatabaseLayer.Repository; +using UserService.Infrastructure.DataModels; namespace UserService.Pages { diff --git a/UserService/Pages/Users.razor b/UserService/Pages/Users.razor index 82bbe63..33c4612 100644 --- a/UserService/Pages/Users.razor +++ b/UserService/Pages/Users.razor @@ -1,5 +1,5 @@ @page "/users" -@using UserService.DatabaseLayer.DataModels +@using UserService.Infrastructure.DataModels @inherits UsersBase

List of all users

@@ -12,7 +12,9 @@ } else { - + + +