From 31ef9bf45bffc3ad1a86119cb44b428b30e873c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20B=C3=B6rchers?= Date: Tue, 8 Sep 2020 20:10:56 +0200 Subject: [PATCH] Moved from int id to guid --- .../DataModels/ModelBuilderExtensions.cs | 38 +++--- .../DataModels/UserServiceDbContext.cs | 2 +- ... 20200906191545_InitialCreate.Designer.cs} | 122 +++++++++--------- ...ate.cs => 20200906191545_InitialCreate.cs} | 52 ++++---- .../UserServiceDbContextModelSnapshot.cs | 120 ++++++++--------- .../DataModels/Member.cs | 4 +- .../DataModels/MembersMember.cs | 13 ++ UserService.Infrastructure/DataModels/Node.cs | 4 +- UserService.Infrastructure/DataModels/User.cs | 2 - .../DataModels/UserMember.cs | 12 -- UserService.Test/UnitTest1.cs | 2 +- UserService.db | Bin 40960 -> 40960 bytes UserService/Pages/SecurityGroups.razor | 46 ++++--- UserService/Pages/SecurityGroups.razor.cs | 14 +- UserService/Pages/Users.razor | 4 +- UserService/Pages/Users.razor.cs | 2 +- 16 files changed, 221 insertions(+), 216 deletions(-) rename UserService.DatabaseLayer/Migrations/{20200821193933_InitialCreate.Designer.cs => 20200906191545_InitialCreate.Designer.cs} (72%) rename UserService.DatabaseLayer/Migrations/{20200821193933_InitialCreate.cs => 20200906191545_InitialCreate.cs} (66%) create mode 100644 UserService.Infrastructure/DataModels/MembersMember.cs delete mode 100644 UserService.Infrastructure/DataModels/UserMember.cs diff --git a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs index 242eebd..d1583a5 100644 --- a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs +++ b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs @@ -10,32 +10,32 @@ namespace UserService.DatabaseLayer.DataModels public static void Seed(this ModelBuilder modelBuilder) { if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder)); - var groups = new OrganizationUnit { CommonName = "Groups", Id = -1 }; - var users = new OrganizationUnit { CommonName = "Users", Id = -2 }; - var germany = new OrganizationUnit{CommonName = "Germany", Id = -6, ParentId = -2}; - var usa = new OrganizationUnit{CommonName = "USA", Id = -5, ParentId = -2}; - var arizona = new OrganizationUnit{CommonName = "Arizona" , Id = -4, ParentId = -5 }; - var france = new OrganizationUnit{CommonName = "France" , Id = -3, ParentId = -2 }; + var groups = new OrganizationUnit { CommonName = "Groups", Id = Guid.NewGuid() }; + var users = new OrganizationUnit { CommonName = "Users", Id = Guid.NewGuid() }; + var germany = new OrganizationUnit { CommonName = "Germany", Id = Guid.NewGuid(), ParentId = users.Id }; + var usa = new OrganizationUnit { CommonName = "USA", Id = Guid.NewGuid(), ParentId = users.Id }; + var arizona = new OrganizationUnit { CommonName = "Arizona", Id = Guid.NewGuid(), ParentId = usa.Id }; + var france = new OrganizationUnit { CommonName = "France", Id = Guid.NewGuid(), ParentId = users.Id }; modelBuilder.Entity().HasData(users, groups, germany, usa, arizona, france); - var user = new User { CommonName = Environment.UserName, IsActive = true, Id = -7, ParentId = users.Id }; + var user = new User { CommonName = Environment.UserName, IsActive = true, Id = Guid.NewGuid(), ParentId = users.Id }; modelBuilder.Entity().HasData(user); - var secGroup = new SecurityGroup { CommonName = "Global Admin", Id = -8, ParentId = groups.Id }; + var secGroup = new SecurityGroup { CommonName = "Global Admin", Id = Guid.NewGuid(), ParentId = groups.Id }; modelBuilder.Entity().HasData(secGroup); - modelBuilder.Entity() - .HasData(new UserMember { MemberId = secGroup.Id, UserId = user.Id }); + modelBuilder.Entity() + .HasData(new MembersMember { MemberId = secGroup.Id, AttachedMemberId = user.Id }); } public static void CreateRelations(this ModelBuilder modelBuilder) { if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder)); - modelBuilder.Entity() - .HasKey(bc => new { bc.MemberId, bc.UserId }); - modelBuilder.Entity() - .HasOne(bc => bc.User) + modelBuilder.Entity() + .HasKey(bc => new { bc.MemberId, AttachedMemberId = bc.AttachedMemberId }); + modelBuilder.Entity() + .HasOne(bc => bc.AttachedMember) .WithMany(b => b!.MemberOf) - .HasForeignKey(bc => bc.UserId); - modelBuilder.Entity() + .HasForeignKey(bc => bc.AttachedMemberId); + modelBuilder.Entity() .HasOne(bc => bc.Member) .WithMany(c => c!.Members) .HasForeignKey(bc => bc.MemberId); @@ -64,13 +64,13 @@ namespace UserService.DatabaseLayer.DataModels public static class SecurityGroupExtensions { - public static IEnumerable GetUsers(this SecurityGroup securityGroup) + public static IEnumerable GetAttachedMembers(this SecurityGroup securityGroup) { if (securityGroup == null) throw new ArgumentNullException(nameof(securityGroup)); foreach (var userMember in securityGroup.Members) { - if (userMember.User is null) continue; - yield return userMember.User; + if (userMember.AttachedMember is null) continue; + yield return userMember.AttachedMember; } } diff --git a/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs b/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs index cd9e5d8..6d0cf38 100644 --- a/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs +++ b/UserService.DatabaseLayer/DataModels/UserServiceDbContext.cs @@ -7,7 +7,7 @@ namespace UserService.DatabaseLayer.DataModels { public DbSet Users { get; set; } = null!; public DbSet SecurityGroups { get; set; } = null!; - public DbSet UserMembers { get; set; } = null!; + public DbSet UserMembers { get; set; } = null!; public DbSet OrganizationUnits { get; set; } = null!; protected override void OnConfiguring(DbContextOptionsBuilder options) diff --git a/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.Designer.cs b/UserService.DatabaseLayer/Migrations/20200906191545_InitialCreate.Designer.cs similarity index 72% rename from UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.Designer.cs rename to UserService.DatabaseLayer/Migrations/20200906191545_InitialCreate.Designer.cs index 315dc82..0bf84dd 100644 --- a/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.Designer.cs +++ b/UserService.DatabaseLayer/Migrations/20200906191545_InitialCreate.Designer.cs @@ -9,7 +9,7 @@ using UserService.DatabaseLayer.DataModels; namespace UserService.DatabaseLayer.Migrations { [DbContext(typeof(UserServiceDbContext))] - [Migration("20200821193933_InitialCreate")] + [Migration("20200906191545_InitialCreate")] partial class InitialCreate { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -18,11 +18,33 @@ namespace UserService.DatabaseLayer.Migrations modelBuilder .HasAnnotation("ProductVersion", "3.1.7"); + modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b => + { + b.Property("MemberId") + .HasColumnType("TEXT"); + + b.Property("AttachedMemberId") + .HasColumnType("TEXT"); + + b.HasKey("MemberId", "AttachedMemberId"); + + b.HasIndex("AttachedMemberId"); + + b.ToTable("UserMembers"); + + b.HasData( + new + { + MemberId = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), + AttachedMemberId = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269") + }); + }); + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + .HasColumnType("TEXT"); b.Property("CommonName") .IsRequired() @@ -35,8 +57,8 @@ namespace UserService.DatabaseLayer.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("ParentId") - .HasColumnType("INTEGER"); + b.Property("ParentId") + .HasColumnType("TEXT"); b.HasKey("Id"); @@ -47,35 +69,10 @@ namespace UserService.DatabaseLayer.Migrations b.HasDiscriminator("Discriminator").HasValue("Node"); }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => - { - b.Property("MemberId") - .HasColumnType("INTEGER"); - - b.Property("UserId") - .HasColumnType("INTEGER"); - - b.HasKey("MemberId", "UserId"); - - b.HasIndex("UserId"); - - b.ToTable("UserMembers"); - - b.HasData( - new - { - MemberId = -8, - UserId = -7 - }); - }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.Member", b => { b.HasBaseType("UserService.Infrastructure.DataModels.Node"); - b.Property("EMail") - .HasColumnType("TEXT"); - b.HasDiscriminator().HasValue("Member"); }); @@ -83,8 +80,8 @@ namespace UserService.DatabaseLayer.Migrations { b.HasBaseType("UserService.Infrastructure.DataModels.Node"); - b.Property("ManagerId") - .HasColumnType("INTEGER"); + b.Property("ManagerId") + .HasColumnType("TEXT"); b.HasIndex("ManagerId"); @@ -93,37 +90,37 @@ namespace UserService.DatabaseLayer.Migrations b.HasData( new { - Id = -2, + Id = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), CommonName = "Users" }, new { - Id = -1, + Id = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913"), CommonName = "Groups" }, new { - Id = -6, + Id = new Guid("c743fff4-9bdf-45a4-b4c9-391f6fc46433"), CommonName = "Germany", - ParentId = -2 + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551") }, new { - Id = -5, + Id = new Guid("cecbf557-59cc-475c-b136-02da39aa4911"), CommonName = "USA", - ParentId = -2 + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551") }, new { - Id = -4, + Id = new Guid("89e1d70e-da3d-4cc9-81f1-a2fa76a6d33b"), CommonName = "Arizona", - ParentId = -5 + ParentId = new Guid("cecbf557-59cc-475c-b136-02da39aa4911") }, new { - Id = -3, + Id = new Guid("97ad8c82-c5ea-4de1-a474-bf25418a9533"), CommonName = "France", - ParentId = -2 + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551") }); }); @@ -136,9 +133,9 @@ namespace UserService.DatabaseLayer.Migrations b.HasData( new { - Id = -8, + Id = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), CommonName = "Global Admin", - ParentId = -1 + ParentId = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913") }); }); @@ -146,6 +143,9 @@ namespace UserService.DatabaseLayer.Migrations { b.HasBaseType("UserService.Infrastructure.DataModels.Member"); + b.Property("EMail") + .HasColumnType("TEXT"); + b.Property("FirstName") .HasColumnType("TEXT"); @@ -160,13 +160,28 @@ namespace UserService.DatabaseLayer.Migrations b.HasData( new { - Id = -7, + Id = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269"), CommonName = "holger", - ParentId = -2, + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), IsActive = true }); }); + modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b => + { + b.HasOne("UserService.Infrastructure.DataModels.Member", "AttachedMember") + .WithMany("MemberOf") + .HasForeignKey("AttachedMemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("UserService.Infrastructure.DataModels.Member", "Member") + .WithMany("Members") + .HasForeignKey("MemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { b.HasOne("UserService.Infrastructure.DataModels.Node", "Parent") @@ -174,21 +189,6 @@ namespace UserService.DatabaseLayer.Migrations .HasForeignKey("ParentId"); }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => - { - b.HasOne("UserService.Infrastructure.DataModels.Member", "Member") - .WithMany("Members") - .HasForeignKey("MemberId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("UserService.Infrastructure.DataModels.User", "User") - .WithMany("MemberOf") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b => { b.HasOne("UserService.Infrastructure.DataModels.Member", "Manager") diff --git a/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.cs b/UserService.DatabaseLayer/Migrations/20200906191545_InitialCreate.cs similarity index 66% rename from UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.cs rename to UserService.DatabaseLayer/Migrations/20200906191545_InitialCreate.cs index 47c7b27..7c248c1 100644 --- a/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.cs +++ b/UserService.DatabaseLayer/Migrations/20200906191545_InitialCreate.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; namespace UserService.DatabaseLayer.Migrations { @@ -10,17 +11,16 @@ namespace UserService.DatabaseLayer.Migrations name: "Node", columns: table => new { - Id = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), + Id = table.Column(nullable: false), CommonName = table.Column(nullable: false), Description = table.Column(nullable: true), - ParentId = table.Column(nullable: true), + ParentId = table.Column(nullable: true), Discriminator = table.Column(nullable: false), - EMail = table.Column(nullable: true), FirstName = table.Column(nullable: true), LastName = table.Column(nullable: true), IsActive = table.Column(nullable: true), - ManagerId = table.Column(nullable: true) + EMail = table.Column(nullable: true), + ManagerId = table.Column(nullable: true) }, constraints: table => { @@ -43,21 +43,21 @@ namespace UserService.DatabaseLayer.Migrations name: "UserMembers", columns: table => new { - MemberId = table.Column(nullable: false), - UserId = table.Column(nullable: false) + MemberId = table.Column(nullable: false), + AttachedMemberId = table.Column(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_UserMembers", x => new { x.MemberId, x.UserId }); + table.PrimaryKey("PK_UserMembers", x => new { x.MemberId, x.AttachedMemberId }); table.ForeignKey( - name: "FK_UserMembers_Node_MemberId", - column: x => x.MemberId, + name: "FK_UserMembers_Node_AttachedMemberId", + column: x => x.AttachedMemberId, principalTable: "Node", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_UserMembers_Node_UserId", - column: x => x.UserId, + name: "FK_UserMembers_Node_MemberId", + column: x => x.MemberId, principalTable: "Node", principalColumn: "Id", onDelete: ReferentialAction.Cascade); @@ -66,47 +66,47 @@ namespace UserService.DatabaseLayer.Migrations migrationBuilder.InsertData( table: "Node", columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" }, - values: new object[] { -2, "Users", null, "OrganizationUnit", null, null }); + values: new object[] { new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), "Users", null, "OrganizationUnit", null, null }); migrationBuilder.InsertData( table: "Node", columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" }, - values: new object[] { -1, "Groups", null, "OrganizationUnit", null, null }); + values: new object[] { new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913"), "Groups", null, "OrganizationUnit", null, null }); migrationBuilder.InsertData( table: "Node", columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" }, - values: new object[] { -6, "Germany", null, "OrganizationUnit", -2, null }); + values: new object[] { new Guid("c743fff4-9bdf-45a4-b4c9-391f6fc46433"), "Germany", null, "OrganizationUnit", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null }); migrationBuilder.InsertData( table: "Node", columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" }, - values: new object[] { -5, "USA", null, "OrganizationUnit", -2, null }); + values: new object[] { new Guid("cecbf557-59cc-475c-b136-02da39aa4911"), "USA", null, "OrganizationUnit", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null }); migrationBuilder.InsertData( table: "Node", columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" }, - values: new object[] { -3, "France", null, "OrganizationUnit", -2, null }); + values: new object[] { new Guid("97ad8c82-c5ea-4de1-a474-bf25418a9533"), "France", null, "OrganizationUnit", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null }); migrationBuilder.InsertData( table: "Node", columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail", "FirstName", "IsActive", "LastName" }, - values: new object[] { -7, "holger", null, "User", -2, null, null, true, null }); + values: new object[] { new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269"), "holger", null, "User", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null, null, true, null }); migrationBuilder.InsertData( table: "Node", - columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail" }, - values: new object[] { -8, "Global Admin", null, "SecurityGroup", -1, null }); + columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId" }, + values: new object[] { new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), "Global Admin", null, "SecurityGroup", new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913") }); migrationBuilder.InsertData( table: "Node", columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" }, - values: new object[] { -4, "Arizona", null, "OrganizationUnit", -5, null }); + values: new object[] { new Guid("89e1d70e-da3d-4cc9-81f1-a2fa76a6d33b"), "Arizona", null, "OrganizationUnit", new Guid("cecbf557-59cc-475c-b136-02da39aa4911"), null }); migrationBuilder.InsertData( table: "UserMembers", - columns: new[] { "MemberId", "UserId" }, - values: new object[] { -8, -7 }); + columns: new[] { "MemberId", "AttachedMemberId" }, + values: new object[] { new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269") }); migrationBuilder.CreateIndex( name: "IX_Node_ParentId", @@ -119,9 +119,9 @@ namespace UserService.DatabaseLayer.Migrations column: "ManagerId"); migrationBuilder.CreateIndex( - name: "IX_UserMembers_UserId", + name: "IX_UserMembers_AttachedMemberId", table: "UserMembers", - column: "UserId"); + column: "AttachedMemberId"); } protected override void Down(MigrationBuilder migrationBuilder) diff --git a/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs b/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs index 6bd5c44..6819060 100644 --- a/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs +++ b/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs @@ -16,11 +16,33 @@ namespace UserService.DatabaseLayer.Migrations modelBuilder .HasAnnotation("ProductVersion", "3.1.7"); + modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b => + { + b.Property("MemberId") + .HasColumnType("TEXT"); + + b.Property("AttachedMemberId") + .HasColumnType("TEXT"); + + b.HasKey("MemberId", "AttachedMemberId"); + + b.HasIndex("AttachedMemberId"); + + b.ToTable("UserMembers"); + + b.HasData( + new + { + MemberId = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), + AttachedMemberId = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269") + }); + }); + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + .HasColumnType("TEXT"); b.Property("CommonName") .IsRequired() @@ -33,8 +55,8 @@ namespace UserService.DatabaseLayer.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("ParentId") - .HasColumnType("INTEGER"); + b.Property("ParentId") + .HasColumnType("TEXT"); b.HasKey("Id"); @@ -45,35 +67,10 @@ namespace UserService.DatabaseLayer.Migrations b.HasDiscriminator("Discriminator").HasValue("Node"); }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => - { - b.Property("MemberId") - .HasColumnType("INTEGER"); - - b.Property("UserId") - .HasColumnType("INTEGER"); - - b.HasKey("MemberId", "UserId"); - - b.HasIndex("UserId"); - - b.ToTable("UserMembers"); - - b.HasData( - new - { - MemberId = -8, - UserId = -7 - }); - }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.Member", b => { b.HasBaseType("UserService.Infrastructure.DataModels.Node"); - b.Property("EMail") - .HasColumnType("TEXT"); - b.HasDiscriminator().HasValue("Member"); }); @@ -81,8 +78,8 @@ namespace UserService.DatabaseLayer.Migrations { b.HasBaseType("UserService.Infrastructure.DataModels.Node"); - b.Property("ManagerId") - .HasColumnType("INTEGER"); + b.Property("ManagerId") + .HasColumnType("TEXT"); b.HasIndex("ManagerId"); @@ -91,37 +88,37 @@ namespace UserService.DatabaseLayer.Migrations b.HasData( new { - Id = -2, + Id = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), CommonName = "Users" }, new { - Id = -1, + Id = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913"), CommonName = "Groups" }, new { - Id = -6, + Id = new Guid("c743fff4-9bdf-45a4-b4c9-391f6fc46433"), CommonName = "Germany", - ParentId = -2 + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551") }, new { - Id = -5, + Id = new Guid("cecbf557-59cc-475c-b136-02da39aa4911"), CommonName = "USA", - ParentId = -2 + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551") }, new { - Id = -4, + Id = new Guid("89e1d70e-da3d-4cc9-81f1-a2fa76a6d33b"), CommonName = "Arizona", - ParentId = -5 + ParentId = new Guid("cecbf557-59cc-475c-b136-02da39aa4911") }, new { - Id = -3, + Id = new Guid("97ad8c82-c5ea-4de1-a474-bf25418a9533"), CommonName = "France", - ParentId = -2 + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551") }); }); @@ -134,9 +131,9 @@ namespace UserService.DatabaseLayer.Migrations b.HasData( new { - Id = -8, + Id = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), CommonName = "Global Admin", - ParentId = -1 + ParentId = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913") }); }); @@ -144,6 +141,9 @@ namespace UserService.DatabaseLayer.Migrations { b.HasBaseType("UserService.Infrastructure.DataModels.Member"); + b.Property("EMail") + .HasColumnType("TEXT"); + b.Property("FirstName") .HasColumnType("TEXT"); @@ -158,13 +158,28 @@ namespace UserService.DatabaseLayer.Migrations b.HasData( new { - Id = -7, + Id = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269"), CommonName = "holger", - ParentId = -2, + ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), IsActive = true }); }); + modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b => + { + b.HasOne("UserService.Infrastructure.DataModels.Member", "AttachedMember") + .WithMany("MemberOf") + .HasForeignKey("AttachedMemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("UserService.Infrastructure.DataModels.Member", "Member") + .WithMany("Members") + .HasForeignKey("MemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { b.HasOne("UserService.Infrastructure.DataModels.Node", "Parent") @@ -172,21 +187,6 @@ namespace UserService.DatabaseLayer.Migrations .HasForeignKey("ParentId"); }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => - { - b.HasOne("UserService.Infrastructure.DataModels.Member", "Member") - .WithMany("Members") - .HasForeignKey("MemberId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("UserService.Infrastructure.DataModels.User", "User") - .WithMany("MemberOf") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b => { b.HasOne("UserService.Infrastructure.DataModels.Member", "Manager") diff --git a/UserService.Infrastructure/DataModels/Member.cs b/UserService.Infrastructure/DataModels/Member.cs index 836ff5e..b77cfef 100644 --- a/UserService.Infrastructure/DataModels/Member.cs +++ b/UserService.Infrastructure/DataModels/Member.cs @@ -4,6 +4,8 @@ namespace UserService.Infrastructure.DataModels { public abstract class Member : Node { - public ICollection Members { get; set; } = new List(); + public ICollection Members { get; set; } = new List(); + + public ICollection MemberOf { get; set; } = null!; } } \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/MembersMember.cs b/UserService.Infrastructure/DataModels/MembersMember.cs new file mode 100644 index 0000000..3770113 --- /dev/null +++ b/UserService.Infrastructure/DataModels/MembersMember.cs @@ -0,0 +1,13 @@ +using System; +namespace UserService.Infrastructure.DataModels +{ + public class MembersMember + { + public Guid MemberId { get; set; } + public Member? Member { get; set; } + + public Guid AttachedMemberId { get; set; } + + public Member? AttachedMember { get; set; } + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/Node.cs b/UserService.Infrastructure/DataModels/Node.cs index 6bbb3c0..a671290 100644 --- a/UserService.Infrastructure/DataModels/Node.cs +++ b/UserService.Infrastructure/DataModels/Node.cs @@ -7,12 +7,12 @@ namespace UserService.Infrastructure.DataModels { public abstract class Node : ICloneable { - public int Id { get; set; } + public Guid 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 Guid? ParentId { get; set; } public override string ToString() => CommonName; diff --git a/UserService.Infrastructure/DataModels/User.cs b/UserService.Infrastructure/DataModels/User.cs index 29307e0..dbc2eb9 100644 --- a/UserService.Infrastructure/DataModels/User.cs +++ b/UserService.Infrastructure/DataModels/User.cs @@ -14,7 +14,5 @@ namespace UserService.Infrastructure.DataModels public string? EMail { 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 deleted file mode 100644 index 91d4f69..0000000 --- a/UserService.Infrastructure/DataModels/UserMember.cs +++ /dev/null @@ -1,12 +0,0 @@ -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.Test/UnitTest1.cs b/UserService.Test/UnitTest1.cs index 8fc8774..a1e0c96 100644 --- a/UserService.Test/UnitTest1.cs +++ b/UserService.Test/UnitTest1.cs @@ -26,7 +26,7 @@ namespace UserService.Test var mo = await db.UserMembers.ToListAsync().ConfigureAwait(false); var securityGroupsOfUser = user.GetSecurityGroups(); - var usersOfSecurityGroup = secGroup.GetUsers(); + var usersOfSecurityGroup = secGroup.GetAttachedMembers(); //var testGroup = new SecurityGroup {CommonName = "Test", Parent = ous.Last()}; //await db.SecurityGroups.AddAsync(testGroup); //var testgroup = await db.SecurityGroups.FindAsync(1); diff --git a/UserService.db b/UserService.db index c3831e10c3e6cbb3cd66dd87a199d351fb1d45a7..f147691327abeda3ea8d63e17af70db9e7c12509 100644 GIT binary patch literal 40960 zcmeI*&2QUe90zc_X_LAyF=DEsi33(Pv=z-Gj_ueMmpOhZQQNen_0$PXk=J;er#2Z* zhUf%`0h+k6{{Su=I3Nz3;E&*dKq?#%f(sWeTtFHJp2ulgr%joMnCQgUirvJ1{Jeag zUsCyTo_6ikrLY$W*E`X+-xFl!8D?yZxg-b-!(_-hMb^QRB~Qi&FUU_e@%*@_8RnuQ z%<_LQ9QQ1f|C;}F=C%AMQ)@G4xrf|GWEU0)KmY;|fB*y_Z~_GGO>?=z;u-dy8n#=( zo3)Lm*A1fOVEbASb(?0d=WpH&TK(6xR^r%{)o{#pN2t|pXG17H;>4n`QWuJe(~H9S z;^Ewj^H(Obg_q{ow+D5pcUnPn*>C$df~eM_uec+{4yWlCMEB7W_D?O&U(RI<;vBm( zl=Z3~1?^rx=gHAI50VULyuWw;-TFkXaOMnqf3xRb+X@m*Ogzo*<-KlJmz={6vr__D ziUZ@KumiaiDZx-y#6TeQ1Hl;)l z=iXb)2=&FYL4jDH6f7AHI7hCl1*mJ#jm1`@K#yIQ390x?$AqB@0iSzvLf#sMa+% zd*K_T$|OFW1*b6-;LfriZVd`dWO(o%K2q7F770(P)!!VnZ#X9Q_os@9hC|*~dcSi0U8xG8oX~;+D;KON<=OaV*n2bim@M_d)-P!D2CckJBQMwmu#Gp2oEnL-( zGZtD} zDjB7UWJs!_Hf!y$7y4UP6!^VBz9?PP=na0B|B)dNED(SI1Rwwb2tWV=5P$##AOHaf zJf#B9XB_VD1_9{(e{SXjhX0c9^11wnd1dz7*&8zt$u2AqfB*y_009U<00Izz00f?- zz%6dtD=^+%;S_h8(aVZm)g)DvWy2H|yHXN$y<&@+rdw*+*6gyT-wt{~WNC`*x~?J` zRofL6)l|f)Vi}@rNN&Zol!_wDbY{XTO}y&2rAy_Dt>D(=wD%n2iE(>$!;x&QLgTE(o`vRpNz@NTE=TaHzARaFyJ!?Hw0Q!TM7$rZ6wCg&QasTh*9 z65a6I;obO4=N`G~x|N&uUSPa)aapD=mrPaBMZId2Ma48!(KK~Ov^2?dbV;!)ro6D# zx#n*PW{b=_NK@ciuz4p6dpiqJ=g#e`*=g@IQ6!gk4CC5{tJvN!7Bd#uGfki8%W{oS~Vv zZs}#wQXSe!4lz?S(gAK+RV1A>PL|!sZ*K-^vOny0eSF$GHRz)>4&IviPs+KKNyI{$ za9Rk+g!%T)KPk%@qkK%C&oUI3a2aA%vow)_*`jVqC9!HLWmUG6sv*g7pLP$^*erdk z46;etbw_fc_y4*411A3<{{^q)f8uxf`}}A8Ret(OzRi(01Rwwb2tWV=5P$##AOHaf z{NDx6XFN8|xDOX6OfhIPNfV|SammqyX$DKOG+~-yj|rME&7j42oG`^8RwhoEV#r|Z zT*l+l3{KGd|1AGGLmpTl009U<00Izz00bZa0SG_<0uVSk0*h?M^U{oHq#4ZU&;Q5u z|HrIl7son;hL_>1Kj%#_4AG`k&>={r}w)+#pm90uX=z1Rwwb Y2tWV=5P$##AOL}p0`%|yrJ4W#7l$0#8~^|S delta 1174 zcmZWn-%C?b96x72)VsUg)6_LZWY?KY(+P8g3L#FJYo&Lk8zdBRw_Wtw?p@wZNFUN7 zg5Hcv1kryGz9azsQxGd-{m=iJYa@ArGome&o->xPxt z`Z~aDp;fD7ZL(aVcc~rfAyv0#KliN0B~jJR-d6a)Cdx_SUijuzEF&mmf)p2&4Bo4k zDQ`3R6i&L?2*mWz#!cG)Z} zUYeKWlzH`|Wu&H@-J!11S^V=fREmv6#)IJy$6gCg>UH+$JGZWzs+^sja5BrsQ$l7g zC1!=Gj4(GZ$cfWO^YC~u5Dl`?z|d%rJ*91zc}eKP&W=ZMW3|)afKNQCVC}B1wD#P3 zkzoU|Xe7+xoUtGmRo`209Mk7*KJ}%oK@HhrwPU=@PwN*{ac|hZuWd24cB-$(=j-?P z`~7RbT?OPjK2C*YF)Q+^VMXAxf(=oCVg>;7g&9EiQH)td9q1E!#Vq4Dy1*>;mC7qe zgGK-y{zexCX3{BKwMec@-^Tm=gVPc(rn(bp>59euaFV0l9QiFz93spj??`?Ph3%@E~W=Y$utPDieg1&QNF* zpgh_~duS8=M7!uK`i!>lzveaK%-CNr5G)-KEFNi?*YHro9Kn3SWCXB8ph&7wXj{+x xgMOhO=o{L>ncFz?E$SsA!#_FM9TCtX@?>{NAV=UpZ#|F0%0s!$CL^SBe*rxLkVgOj diff --git a/UserService/Pages/SecurityGroups.razor b/UserService/Pages/SecurityGroups.razor index 38f59e7..617bded 100644 --- a/UserService/Pages/SecurityGroups.razor +++ b/UserService/Pages/SecurityGroups.razor @@ -74,10 +74,10 @@ else } - @foreach (var item in OrganizationUnits ?? Enumerable.Empty()) { - @item.CommonName + @item.CommonName } @@ -128,25 +128,29 @@ else - - - 1 - Mark - - - - - - 2 - Jacob - - - - 3 - Larry - - - + + @foreach (var member in SelectedSecurityGroup?.Members ?? Enumerable.Empty()) + { + + @member.MemberId + Mark + + + + + } + + + 2 + Jacob + + + + 3 + Larry + + + diff --git a/UserService/Pages/SecurityGroups.razor.cs b/UserService/Pages/SecurityGroups.razor.cs index 4ec761c..282915c 100644 --- a/UserService/Pages/SecurityGroups.razor.cs +++ b/UserService/Pages/SecurityGroups.razor.cs @@ -15,7 +15,7 @@ namespace UserService.Pages [Inject] private ISecurityGroupsRepository SecurityGroupsRepository { get; set; } = null!; [Inject] private IUsersRepository UsersRepository { get; set; } = null!; - + [Inject] private IOrganizationUnitsRepository OrganizationUnitsRepository { get; set; } = null!; // reference to the modal component @@ -57,7 +57,7 @@ namespace UserService.Pages var securityGroup = arg.Item; securityGroup.MapFields(arg.Values); securityGroup.Parent = - OrganizationUnits?.FirstOrDefault(x => x.Id == (int?) arg.Values[nameof(Node.ParentId)]); + OrganizationUnits?.FirstOrDefault(x => x.Id == (Guid?)arg.Values[nameof(Node.ParentId)]); var result = await SecurityGroupsRepository.UpdateAsync(securityGroup).ConfigureAwait(false); arg.Cancel = !result; } @@ -89,14 +89,14 @@ namespace UserService.Pages } - protected async Task AddToListAsync() - { - //SelectedSecurityGroup.Members.Add(new UserMember()); - } + protected async Task AddToListAsync() + { + //SelectedSecurityGroup.Members.Add(new UserMember()); + } - protected void OnButtonClicked(SecurityGroup securityGroup) + protected void OnButtonClicked(SecurityGroup securityGroup) { SelectedSecurityGroup = securityGroup; ModalRef.Show(); diff --git a/UserService/Pages/Users.razor b/UserService/Pages/Users.razor index 750e751..219f163 100644 --- a/UserService/Pages/Users.razor +++ b/UserService/Pages/Users.razor @@ -90,10 +90,10 @@ else } - @foreach (var item in OrganizationUnits ?? Enumerable.Empty()) { - @item.CommonName + @item.CommonName } diff --git a/UserService/Pages/Users.razor.cs b/UserService/Pages/Users.razor.cs index 8b42244..fd6cd46 100644 --- a/UserService/Pages/Users.razor.cs +++ b/UserService/Pages/Users.razor.cs @@ -71,7 +71,7 @@ namespace UserService.Pages if (arg == null) throw new ArgumentNullException(nameof(arg)); var user = arg.Item; user.MapFields(arg.Values); - user.Parent = OrganizationUnits?.FirstOrDefault(x => x.Id == (int?)arg.Values[nameof(Node.ParentId)]); + user.Parent = OrganizationUnits?.FirstOrDefault(x => x.Id == (Guid?)arg.Values[nameof(Node.ParentId)]); var result = await UsersRepository.UpdateAsync(user).ConfigureAwait(false); arg.Cancel = !result; }