From f203512650f15e8d511bbcb64ae94dae467ca5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Thu, 17 Sep 2026 11:09:34 +0200 Subject: [PATCH] feat(user): add the Users.IsActive column so a login can be disabled (#956) Step 2 of refusing login to resigned accounts. Bumps BasePn to 10.0.35 (which carries EformUser.IsActive), maps it with HasDefaultValue(true), and adds the column as tinyint(1) NOT NULL DEFAULT 1. defaultValue: true is load-bearing in two directions. It backfills every existing account as enabled -- a false default would lock out the entire user base on migrate -- and it keeps a rolling deploy safe: pods still on BasePn 10.0.34 have no IsActive in their model, so their INSERTs omit the column and the store default catches them. The migration is hand-written rather than scaffolded. "dotnet ef migrations add" sweeps in four unrelated InsertData operations for the CMS menu seed, which lives in HasData but was applied to databases by raw SQL in 20260319062110_AddCmsMenuItem instead. Shipping those would fail with duplicate primary keys on every tenant. The snapshot and designer therefore carry only the new property; verified with EF's own model differ that designer -> snapshot is zero operations, so the next scaffold sees no spurious IsActive diff. Tests cover the mapping and the three round trips that matter: a new account is created enabled (which is what proves the "= true" initializer and the column default agree), an explicitly disabled account stays disabled, and disabling an existing one persists. Observed failing before the mapping and migration existed. Co-Authored-By: Claude Opus 5 --- .../UserIsActiveTests.cs | 106 + .../Infrastructure/Data/BaseDbContext.cs | 8 + .../Microting.EformAngularFrontendBase.csproj | 2 +- ...260917085145_AddIsActiveToUser.Designer.cs | 4640 +++++++++++++++++ .../20260917085145_AddIsActiveToUser.cs | 31 + .../Migrations/BaseDbContextModelSnapshot.cs | 5 + 6 files changed, 4791 insertions(+), 1 deletion(-) create mode 100644 Microting.EformAngularFrontendBase.Tests/UserIsActiveTests.cs create mode 100644 Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.Designer.cs create mode 100644 Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.cs diff --git a/Microting.EformAngularFrontendBase.Tests/UserIsActiveTests.cs b/Microting.EformAngularFrontendBase.Tests/UserIsActiveTests.cs new file mode 100644 index 0000000..f051ccc --- /dev/null +++ b/Microting.EformAngularFrontendBase.Tests/UserIsActiveTests.cs @@ -0,0 +1,106 @@ +/* +The MIT License (MIT) + +Copyright (c) 2007 - 2026 Microting A/S + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +using System; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Microting.eFormApi.BasePn.Infrastructure.Database.Entities; +using NUnit.Framework; + +namespace Microting.EformAngularFrontendBase.Tests; + +/// +/// The round-trip tests here exist because the mapping's HasDefaultValue(true) and the +/// "= true" initializer on EformUser.IsActive only behave correctly together, and getting +/// it wrong creates every new account disabled with nothing else to catch it. The remarks +/// on EformUser.IsActive explain why. +/// +[Parallelizable(ParallelScope.Fixtures)] +[TestFixture] +public class UserIsActiveTests : DbTestFixture +{ + private static EformUser NewUser() => new() + { + UserName = Guid.NewGuid().ToString(), + Email = $"{Guid.NewGuid()}@example.com", + FirstName = "Test", + LastName = "User" + }; + + [Test] + public void EformUser_IsActive_IsMappedWithADefaultOfTrue() + { + var property = DbContext.Model + .FindEntityType(typeof(EformUser)) + ?.FindProperty(nameof(EformUser.IsActive)); + + Assert.That(property, Is.Not.Null, "IsActive should be mapped on EformUser"); + Assert.That(property.IsNullable, Is.False, "IsActive should be non-nullable"); + Assert.That(property.GetDefaultValue(), Is.True, + "IsActive should default to true, so existing and new accounts stay enabled"); + } + + [Test] + public async Task EformUser_Create_IsActiveByDefault() + { + var user = NewUser(); + + DbContext.Users.Add(user); + await DbContext.SaveChangesAsync(); + + var stored = await DbContext.Users.AsNoTracking().FirstAsync(x => x.Id == user.Id); + + Assert.That(stored.IsActive, Is.True, "a new account must be created enabled"); + } + + [Test] + public async Task EformUser_CreatedDisabled_StaysDisabled() + { + var user = NewUser(); + user.IsActive = false; + + DbContext.Users.Add(user); + await DbContext.SaveChangesAsync(); + + var stored = await DbContext.Users.AsNoTracking().FirstAsync(x => x.Id == user.Id); + + Assert.That(stored.IsActive, Is.False, + "an explicitly disabled account must not be re-enabled by the column default"); + } + + [Test] + public async Task EformUser_Disable_DoesDisable() + { + var user = NewUser(); + DbContext.Users.Add(user); + await DbContext.SaveChangesAsync(); + + user.IsActive = false; + await DbContext.SaveChangesAsync(); + + var stored = await DbContext.Users.AsNoTracking().FirstAsync(x => x.Id == user.Id); + + Assert.That(stored.IsActive, Is.False); + } +} diff --git a/Microting.EformAngularFrontendBase/Infrastructure/Data/BaseDbContext.cs b/Microting.EformAngularFrontendBase/Infrastructure/Data/BaseDbContext.cs index 600d85c..1fb1b8f 100644 --- a/Microting.EformAngularFrontendBase/Infrastructure/Data/BaseDbContext.cs +++ b/Microting.EformAngularFrontendBase/Infrastructure/Data/BaseDbContext.cs @@ -303,6 +303,14 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .HasColumnType("tinyint(1)") .HasDefaultValue(true); + // The default backfills existing rows as enabled, and it is also what makes + // true the sentinel for EformUser.IsActive — read the remarks on that property + // before changing either. + modelBuilder.Entity() + .Property(x => x.IsActive) + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + modelBuilder.Entity() .Property("PreferredLoginProvider") .HasMaxLength(50) diff --git a/Microting.EformAngularFrontendBase/Microting.EformAngularFrontendBase.csproj b/Microting.EformAngularFrontendBase/Microting.EformAngularFrontendBase.csproj index 273f3a2..fea527e 100644 --- a/Microting.EformAngularFrontendBase/Microting.EformAngularFrontendBase.csproj +++ b/Microting.EformAngularFrontendBase/Microting.EformAngularFrontendBase.csproj @@ -11,7 +11,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.Designer.cs b/Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.Designer.cs new file mode 100644 index 0000000..11d54cd --- /dev/null +++ b/Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.Designer.cs @@ -0,0 +1,4640 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Microting.EformAngularFrontendBase.Infrastructure.Data; + +#nullable disable + +namespace Microting.EformAngularFrontendBase.Migrations +{ + [DbContext(typeof(BaseDbContext))] + [Migration("20260917085145_AddIsActiveToUser")] + partial class AddIsActiveToUser + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "10.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("ProviderKey") + .HasColumnType("varchar(255)"); + + b.Property("ProviderDisplayName") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("UserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("Name") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("UserTokens", (string)null); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenu", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.ToTable("CmsMenus"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CmsMenuId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("ExternalUrl") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("Target") + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("CmsMenuId"); + + b.HasIndex("PageId"); + + b.HasIndex("ParentId"); + + b.ToTable("CmsMenuItems"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Body") + .HasColumnType("longtext"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("IsLandingPage") + .HasColumnType("tinyint(1)"); + + b.Property("IsPublished") + .HasColumnType("tinyint(1)"); + + b.Property("Slug") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("Slug") + .IsUnique(); + + b.ToTable("CmsPages"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ActiveMenuId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("IsCmsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("IsMenuSticky") + .HasColumnType("tinyint(1)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("ActiveMenuId"); + + b.ToTable("CmsSettings"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.EformConfigurationValue", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("ConfigurationValues"); + + b.HasData( + new + { + Id = "ConnectionStringsSdk:SdkConnection", + Value = "" + }, + new + { + Id = "ApplicationSettings:DefaultLocale", + Value = "en-US" + }, + new + { + Id = "ApplicationSettings:SiteLink", + Value = "" + }, + new + { + Id = "ApplicationSettings:SecurityCode", + Value = "code" + }, + new + { + Id = "ApplicationSettings:DefaultPassword", + Value = "Qq1234567$" + }, + new + { + Id = "ApplicationSettings:IsTwoFactorForced", + Value = "false" + }, + new + { + Id = "ApplicationSettings:IsUserbackWidgetEnabled", + Value = "false" + }, + new + { + Id = "ApplicationSettings:UserbackToken", + Value = "33542|62605|dEaGb7GN0RoGEOMwEEWGh1pnh" + }, + new + { + Id = "EmailSettings:SmtpHost", + Value = "" + }, + new + { + Id = "EmailSettings:SmtpPort", + Value = "25" + }, + new + { + Id = "EmailSettings:Login", + Value = "" + }, + new + { + Id = "EmailSettings:Password", + Value = "" + }, + new + { + Id = "EmailSettings:SendGridKey", + Value = "" + }, + new + { + Id = "LoginPageSettings:MainText", + Value = "eForm Backend" + }, + new + { + Id = "LoginPageSettings:MainTextVisible", + Value = "true" + }, + new + { + Id = "LoginPageSettings:SecondaryText", + Value = "No more paper-forms and back-office data entry" + }, + new + { + Id = "LoginPageSettings:SecondaryTextVisible", + Value = "true" + }, + new + { + Id = "LoginPageSettings:ImageLink", + Value = "" + }, + new + { + Id = "LoginPageSettings:ImageLinkVisible", + Value = "true" + }, + new + { + Id = "HeaderSettings:MainText", + Value = "eForm Backend" + }, + new + { + Id = "HeaderSettings:MainTextVisible", + Value = "true" + }, + new + { + Id = "HeaderSettings:SecondaryText", + Value = "No more paper-forms and back-office data entry" + }, + new + { + Id = "HeaderSettings:SecondaryTextVisible", + Value = "true" + }, + new + { + Id = "HeaderSettings:ImageLink", + Value = "" + }, + new + { + Id = "HeaderSettings:ImageLinkVisible", + Value = "true" + }, + new + { + Id = "Logging:IncludeScopes", + Value = "false" + }, + new + { + Id = "Logging:IncludeScopes:LogLevel:Default", + Value = "Debug" + }, + new + { + Id = "Logging:IncludeScopes:LogLevel:System", + Value = "Information" + }, + new + { + Id = "Logging:IncludeScopes:LogLevel:Microsoft", + Value = "Information" + }, + new + { + Id = "EformTokenOptions:Issuer", + Value = "eForm API" + }, + new + { + Id = "EformTokenOptions:Audience", + Value = "eForm Angular" + }, + new + { + Id = "EformTokenOptions:Expiration", + Value = "12:00:00" + }, + new + { + Id = "EformTokenOptions:SigningKey", + Value = "lTBBR6Wt7RTvcI0jwRvXVPTOmcFV6NnAUA+rIWn/5bs=" + }, + new + { + Id = "EformTokenOptions:CookieName", + Value = "Authorization" + }, + new + { + Id = "PluginStoreSettings:PluginListLink", + Value = "https://raw.githubusercontent.com/microting/eform-angular-frontend/master/plugins.json" + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.EformPlugin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ConnectionString") + .HasColumnType("longtext"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("PluginId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("PluginId") + .IsUnique(); + + b.ToTable("EformPlugins"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePost", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AttachPdf") + .HasColumnType("tinyint(1)"); + + b.Property("CaseId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("LinkToCase") + .HasColumnType("tinyint(1)"); + + b.Property("PostDate") + .HasColumnType("datetime(6)"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Text") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("CaseId"); + + b.ToTable("CasePosts"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePostEmailRecipient", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CasePostId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("EmailRecipientId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("CasePostId"); + + b.HasIndex("EmailRecipientId"); + + b.ToTable("CasePostEmailRecipients"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePostEmailTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CasePostId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("EmailTagId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("CasePostId"); + + b.HasIndex("EmailTagId"); + + b.ToTable("CasePostEmailTags"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailRecipient", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("Name"); + + b.ToTable("EmailRecipients"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("EmailTags"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailTagRecipient", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("EmailRecipientId") + .HasColumnType("int"); + + b.Property("EmailTagId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("EmailRecipientId"); + + b.HasIndex("EmailTagId"); + + b.ToTable("EmailTagRecipients"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("E2EId") + .HasColumnType("longtext"); + + b.Property("IconName") + .HasColumnType("longtext"); + + b.Property("IsInternalLink") + .HasColumnType("tinyint(1)"); + + b.Property("Link") + .HasColumnType("longtext"); + + b.Property("MenuTemplateId") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("MenuTemplateId"); + + b.HasIndex("ParentId"); + + b.ToTable("MenuItems"); + + b.HasData( + new + { + Id = 1, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "my-eforms", + IsInternalLink = true, + Link = "/", + MenuTemplateId = 1, + Name = "My Eforms", + Position = 0, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 2, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "device-users", + IsInternalLink = true, + Link = "/device-users", + MenuTemplateId = 2, + Name = "Device Users", + Position = 1, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 3, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "advanced", + IsInternalLink = true, + Link = "", + MenuTemplateId = 3, + Name = "Dropdown", + Position = 2, + Type = 3, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 4, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "sites", + IsInternalLink = true, + Link = "/advanced/sites", + MenuTemplateId = 4, + Name = "Sites", + ParentId = 3, + Position = 0, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 5, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "workers", + IsInternalLink = true, + Link = "/advanced/workers", + MenuTemplateId = 5, + Name = "Workers", + ParentId = 3, + Position = 1, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 6, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "units", + IsInternalLink = true, + Link = "/advanced/units", + MenuTemplateId = 6, + Name = "Units", + ParentId = 3, + Position = 2, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 7, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "search", + IsInternalLink = true, + Link = "/advanced/entity-search", + MenuTemplateId = 7, + Name = "Searchable list", + ParentId = 3, + Position = 3, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 8, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "selectable-list", + IsInternalLink = true, + Link = "/advanced/entity-select", + MenuTemplateId = 8, + Name = "Selectable List", + ParentId = 3, + Position = 4, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 9, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "application-settings", + IsInternalLink = true, + Link = "/application-settings", + MenuTemplateId = 9, + Name = "Application settings", + ParentId = 3, + Position = 6, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 10, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "plugins-settings", + IsInternalLink = true, + Link = "/plugins-settings", + MenuTemplateId = 10, + Name = "Plugin Settings", + ParentId = 3, + Position = 8, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 11, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "folders", + IsInternalLink = true, + Link = "/advanced/folders", + MenuTemplateId = 11, + Name = "Folders", + ParentId = 3, + Position = 5, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 12, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + E2EId = "email-recipients", + IsInternalLink = true, + Link = "/email-recipients", + MenuTemplateId = 12, + Name = "Email recipients", + ParentId = 3, + Position = 7, + Type = 1, + UpdatedByUserId = 0, + Version = 0 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItemSecurityGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("MenuItemId") + .HasColumnType("int"); + + b.Property("SecurityGroupId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("SecurityGroupId"); + + b.HasIndex("MenuItemId", "SecurityGroupId") + .IsUnique(); + + b.ToTable("MenuItemSecurityGroups"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItemTranslation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("Language") + .HasColumnType("longtext"); + + b.Property("LocaleName") + .HasMaxLength(7) + .HasColumnType("varchar(7)"); + + b.Property("MenuItemId") + .HasColumnType("int"); + + b.Property("Name") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("LocaleName"); + + b.HasIndex("MenuItemId"); + + b.ToTable("MenuItemTranslations"); + + b.HasData( + new + { + Id = 1, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 1, + Name = "My eForms", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 14, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 1, + Name = "Mine eForms", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 27, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 1, + Name = "Meine eForms", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 39, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 1, + Name = "Мої ЕФорми", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 2, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 2, + Name = "Device Users", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 15, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 2, + Name = "Mobilbrugere", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 28, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 2, + Name = "Gerätebenutzer", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 40, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 2, + Name = "Користувачі пристроїв", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 3, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 3, + Name = "Advanced", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 16, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 3, + Name = "Admin", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 29, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 3, + Name = "Fortgeschritten", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 41, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 3, + Name = "Додатково", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 4, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 4, + Name = "Sites", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 17, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 4, + Name = "Lokationer", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 30, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 4, + Name = "Standorte", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 42, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 4, + Name = "Місця", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 5, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 5, + Name = "Workers", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 18, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 5, + Name = "Medarbejder", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 31, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 5, + Name = "Mitarbeiter", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 43, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 5, + Name = "Працівники", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 6, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 6, + Name = "Units", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 19, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 6, + Name = "Enheder", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 32, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 6, + Name = "Einheiten", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 44, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 6, + Name = "Юніти", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 7, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 7, + Name = "Searchable list", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 20, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 7, + Name = "Søgbar Lister", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 33, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 7, + Name = "Durchsuchbare Listen", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 45, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 7, + Name = "Пошуковий список", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 8, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 8, + Name = "Selectable list", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 21, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 8, + Name = "Valgbar Liste", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 34, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 8, + Name = "Auswählbare Liste", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 46, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 8, + Name = "Вибірковий список", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 9, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 9, + Name = "Application settings", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 22, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 9, + Name = "Applikationsindstillinger", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 35, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 9, + Name = "Anwendungseinstellungen", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 47, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 9, + Name = "Налаштування застосунку", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 10, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 10, + Name = "Plugins", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 23, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 10, + Name = "Plugins", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 36, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 10, + Name = "Plugins", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 48, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 10, + Name = "Налаштування плагінів", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 11, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 11, + Name = "Folders", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 24, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 11, + Name = "Folders", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 37, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 11, + Name = "Folders", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 49, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 11, + Name = "Папки", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 12, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "English", + LocaleName = "en-US", + MenuItemId = 12, + Name = "Email recipients", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 25, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Danish", + LocaleName = "da", + MenuItemId = 12, + Name = "E-mail-modtagere", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 38, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "German", + LocaleName = "de-DE", + MenuItemId = 12, + Name = "E-Mail-Empfänger", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 50, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Language = "Ukrainian", + LocaleName = "uk-UA", + MenuItemId = 12, + Name = "Email одержувачі", + UpdatedByUserId = 0, + Version = 0 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("DefaultLink") + .HasColumnType("longtext"); + + b.Property("E2EId") + .HasColumnType("longtext"); + + b.Property("EformPluginId") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("EformPluginId"); + + b.ToTable("MenuTemplates"); + + b.HasData( + new + { + Id = 1, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/", + E2EId = "my-eforms", + Name = "My Eforms", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 2, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/device-users", + E2EId = "device-users", + Name = "Device Users", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 3, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "", + E2EId = "advanced", + Name = "Advanced", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 4, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/advanced/sites", + E2EId = "sites", + Name = "Sites", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 5, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/advanced/workers", + E2EId = "workers", + Name = "Workers", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 6, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/advanced/units", + E2EId = "units", + Name = "Units", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 7, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/advanced/entity-search", + E2EId = "search", + Name = "Searchable list", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 8, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/advanced/entity-select", + E2EId = "selectable-list", + Name = "Selectable List", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 9, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/application-settings", + E2EId = "application-settings", + Name = "Application settings", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 10, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/plugins-settings", + E2EId = "plugins-settings", + Name = "Plugins", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 11, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/advanced/folders", + E2EId = "folders", + Name = "Folders", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 12, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + DefaultLink = "/email-recipients", + E2EId = "email-recipients", + Name = "Email recipients", + UpdatedByUserId = 0, + Version = 0 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplatePermission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("MenuTemplateId") + .HasColumnType("int"); + + b.Property("PermissionId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("PermissionId"); + + b.HasIndex("MenuTemplateId", "PermissionId") + .IsUnique(); + + b.ToTable("MenuTemplatePermissions"); + + b.HasData( + new + { + Id = 1, + MenuTemplateId = 5, + PermissionId = 2 + }, + new + { + Id = 2, + MenuTemplateId = 5, + PermissionId = 1 + }, + new + { + Id = 3, + MenuTemplateId = 5, + PermissionId = 4 + }, + new + { + Id = 4, + MenuTemplateId = 5, + PermissionId = 3 + }, + new + { + Id = 5, + MenuTemplateId = 4, + PermissionId = 6 + }, + new + { + Id = 6, + MenuTemplateId = 4, + PermissionId = 8 + }, + new + { + Id = 7, + MenuTemplateId = 4, + PermissionId = 7 + }, + new + { + Id = 8, + MenuTemplateId = 7, + PermissionId = 10 + }, + new + { + Id = 9, + MenuTemplateId = 7, + PermissionId = 9 + }, + new + { + Id = 10, + MenuTemplateId = 7, + PermissionId = 12 + }, + new + { + Id = 11, + MenuTemplateId = 7, + PermissionId = 11 + }, + new + { + Id = 12, + MenuTemplateId = 7, + PermissionId = 14 + }, + new + { + Id = 13, + MenuTemplateId = 7, + PermissionId = 13 + }, + new + { + Id = 14, + MenuTemplateId = 7, + PermissionId = 16 + }, + new + { + Id = 15, + MenuTemplateId = 7, + PermissionId = 15 + }, + new + { + Id = 16, + MenuTemplateId = 6, + PermissionId = 21 + }, + new + { + Id = 17, + MenuTemplateId = 6, + PermissionId = 22 + }, + new + { + Id = 18, + MenuTemplateId = 2, + PermissionId = 24 + }, + new + { + Id = 19, + MenuTemplateId = 2, + PermissionId = 23 + }, + new + { + Id = 20, + MenuTemplateId = 2, + PermissionId = 26 + }, + new + { + Id = 21, + MenuTemplateId = 2, + PermissionId = 25 + }, + new + { + Id = 22, + MenuTemplateId = 1, + PermissionId = 27 + }, + new + { + Id = 23, + MenuTemplateId = 1, + PermissionId = 28 + }, + new + { + Id = 24, + MenuTemplateId = 1, + PermissionId = 29 + }, + new + { + Id = 25, + MenuTemplateId = 1, + PermissionId = 30 + }, + new + { + Id = 26, + MenuTemplateId = 1, + PermissionId = 31 + }, + new + { + Id = 27, + MenuTemplateId = 1, + PermissionId = 32 + }, + new + { + Id = 28, + MenuTemplateId = 1, + PermissionId = 38 + }, + new + { + Id = 29, + MenuTemplateId = 1, + PermissionId = 39 + }, + new + { + Id = 30, + MenuTemplateId = 1, + PermissionId = 40 + }, + new + { + Id = 31, + MenuTemplateId = 1, + PermissionId = 41 + }, + new + { + Id = 32, + MenuTemplateId = 1, + PermissionId = 42 + }, + new + { + Id = 33, + MenuTemplateId = 1, + PermissionId = 43 + }, + new + { + Id = 34, + MenuTemplateId = 1, + PermissionId = 44 + }, + new + { + Id = 35, + MenuTemplateId = 1, + PermissionId = 47 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplateTranslation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("Language") + .HasColumnType("longtext"); + + b.Property("LocaleName") + .HasMaxLength(7) + .HasColumnType("varchar(7)"); + + b.Property("MenuTemplateId") + .HasColumnType("int"); + + b.Property("Name") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("LocaleName"); + + b.HasIndex("MenuTemplateId"); + + b.ToTable("MenuTemplateTranslations"); + + b.HasData( + new + { + Id = 1, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 1, + Name = "My eForms" + }, + new + { + Id = 2, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 2, + Name = "Device Users" + }, + new + { + Id = 3, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 3, + Name = "Advanced" + }, + new + { + Id = 4, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 4, + Name = "Sites" + }, + new + { + Id = 5, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 5, + Name = "Workers" + }, + new + { + Id = 6, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 6, + Name = "Units" + }, + new + { + Id = 7, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 7, + Name = "Searchable list" + }, + new + { + Id = 8, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 8, + Name = "Selectable list" + }, + new + { + Id = 9, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 9, + Name = "Application settings" + }, + new + { + Id = 10, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 10, + Name = "Plugins" + }, + new + { + Id = 11, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 11, + Name = "Folders" + }, + new + { + Id = 12, + Language = "English", + LocaleName = "en-US", + MenuTemplateId = 12, + Name = "Email recipients" + }, + new + { + Id = 13, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 1, + Name = "Mine eForms" + }, + new + { + Id = 14, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 2, + Name = "Mobilbrugere" + }, + new + { + Id = 15, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 3, + Name = "Admin" + }, + new + { + Id = 16, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 4, + Name = "Lokationer" + }, + new + { + Id = 17, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 5, + Name = "Medarbejder" + }, + new + { + Id = 18, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 6, + Name = "Enheder" + }, + new + { + Id = 19, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 7, + Name = "Søgbar Lister" + }, + new + { + Id = 20, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 8, + Name = "Valgbar Liste" + }, + new + { + Id = 21, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 9, + Name = "Applikationsindstillinger" + }, + new + { + Id = 22, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 10, + Name = "Plugins" + }, + new + { + Id = 23, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 11, + Name = "Folders" + }, + new + { + Id = 24, + Language = "Danish", + LocaleName = "da", + MenuTemplateId = 12, + Name = "E-mail-modtagere" + }, + new + { + Id = 25, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 1, + Name = "Meine eForms" + }, + new + { + Id = 26, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 2, + Name = "Gerätebenutzer " + }, + new + { + Id = 27, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 3, + Name = "Fortgeschritten" + }, + new + { + Id = 28, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 4, + Name = "Standorte" + }, + new + { + Id = 29, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 5, + Name = "Mitarbeiter" + }, + new + { + Id = 30, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 6, + Name = "Einheiten" + }, + new + { + Id = 31, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 7, + Name = "Durchsuchbare Listen" + }, + new + { + Id = 32, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 8, + Name = "Auswählbare Liste" + }, + new + { + Id = 33, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 9, + Name = "Anwendungseinstellungen" + }, + new + { + Id = 34, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 10, + Name = "Plugins" + }, + new + { + Id = 35, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 11, + Name = "Folders" + }, + new + { + Id = 36, + Language = "German", + LocaleName = "de-DE", + MenuTemplateId = 12, + Name = "E-Mail-Empfänger" + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.EformInGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("SecurityGroupId") + .HasColumnType("int"); + + b.Property("TemplateId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("SecurityGroupId"); + + b.HasIndex("TemplateId"); + + b.HasIndex("TemplateId", "SecurityGroupId") + .IsUnique(); + + b.ToTable("EformInGroups"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.EformPermission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("EformInGroupId") + .HasColumnType("int"); + + b.Property("PermissionId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("EformInGroupId"); + + b.HasIndex("PermissionId", "EformInGroupId") + .IsUnique(); + + b.ToTable("EformPermissions"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.GroupPermission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("PermissionId") + .HasColumnType("int"); + + b.Property("SecurityGroupId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("SecurityGroupId"); + + b.HasIndex("PermissionId", "SecurityGroupId") + .IsUnique(); + + b.ToTable("GroupPermissions"); + + b.HasData( + new + { + Id = 1, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 29, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 2, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 27, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 3, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 28, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 4, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 30, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 5, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 31, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 6, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 32, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 7, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 34, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 8, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 33, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 9, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 35, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 10, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 36, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 11, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 42, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 12, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 37, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 25, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 45, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 26, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 46, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 13, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 38, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 14, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 39, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 15, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 41, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 16, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 40, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 17, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 29, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 18, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 42, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 19, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 34, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 20, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 33, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 21, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 35, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 22, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 37, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 28, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 49, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 29, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 50, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 30, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 51, + SecurityGroupId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 23, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 43, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 24, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 44, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 27, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 47, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 31, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionId = 52, + SecurityGroupId = 1, + UpdatedByUserId = 0, + Version = 0 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimName") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("PermissionName") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("PermissionTypeId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("ClaimName") + .IsUnique(); + + b.HasIndex("PermissionTypeId"); + + b.ToTable("Permissions"); + + b.HasData( + new + { + Id = 2, + ClaimName = "workers_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 1, + ClaimName = "workers_create", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Create", + PermissionTypeId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 4, + ClaimName = "workers_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete", + PermissionTypeId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 3, + ClaimName = "workers_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update", + PermissionTypeId = 1, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 6, + ClaimName = "sites_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 8, + ClaimName = "sites_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete", + PermissionTypeId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 7, + ClaimName = "sites_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update", + PermissionTypeId = 2, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 10, + ClaimName = "entity_search_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 3, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 9, + ClaimName = "entity_search_create", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Create", + PermissionTypeId = 3, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 12, + ClaimName = "entity_search_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete", + PermissionTypeId = 3, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 11, + ClaimName = "entity_search_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update", + PermissionTypeId = 3, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 14, + ClaimName = "entity_select_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 4, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 13, + ClaimName = "entity_select_create", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Create", + PermissionTypeId = 4, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 16, + ClaimName = "entity_select_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete", + PermissionTypeId = 4, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 15, + ClaimName = "entity_select_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update", + PermissionTypeId = 4, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 18, + ClaimName = "users_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 5, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 17, + ClaimName = "users_create", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Create", + PermissionTypeId = 5, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 20, + ClaimName = "users_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete", + PermissionTypeId = 5, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 19, + ClaimName = "users_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update", + PermissionTypeId = 5, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 21, + ClaimName = "units_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 6, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 22, + ClaimName = "units_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update", + PermissionTypeId = 6, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 24, + ClaimName = "device_users_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 7, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 23, + ClaimName = "device_users_create", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Create", + PermissionTypeId = 7, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 26, + ClaimName = "device_users_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete", + PermissionTypeId = 7, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 25, + ClaimName = "device_users_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update", + PermissionTypeId = 7, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 27, + ClaimName = "eforms_create", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Create", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 28, + ClaimName = "eforms_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 29, + ClaimName = "eforms_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 30, + ClaimName = "eforms_update_columns", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update columns", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 31, + ClaimName = "eforms_download_xml", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Download XML", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 32, + ClaimName = "eforms_upload_zip", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Upload ZIP", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 33, + ClaimName = "cases_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Cases read", + PermissionTypeId = 8, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 34, + ClaimName = "case_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Case read", + PermissionTypeId = 8, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 35, + ClaimName = "case_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Case update", + PermissionTypeId = 8, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 36, + ClaimName = "case_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Case delete", + PermissionTypeId = 8, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 37, + ClaimName = "case_get_pdf", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Get PDF", + PermissionTypeId = 8, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 45, + ClaimName = "case_get_docx", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Get DOCX", + PermissionTypeId = 8, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 46, + ClaimName = "case_get_pptx", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Get PPTX", + PermissionTypeId = 8, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 38, + ClaimName = "eforms_pairing_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Pairing read", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 39, + ClaimName = "eforms_pairing_update", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Pairing update", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 40, + ClaimName = "eforms_read_tags", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read tags", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 41, + ClaimName = "eforms_update_tags", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update tags", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 42, + ClaimName = "eforms_get_csv", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Get CSV", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 43, + ClaimName = "eforms_read_jasper_report", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read Jasper Report", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 44, + ClaimName = "eforms_update_jasper_report", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Update Jasper Report", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 47, + ClaimName = "eform_export_eform_excel", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Export eForm excel", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 49, + ClaimName = "email_recipient_create", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Create e-mail recipients", + PermissionTypeId = 10, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 50, + ClaimName = "email_recipient_delete", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Delete e-mail recipients", + PermissionTypeId = 10, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 51, + ClaimName = "email_recipient_read", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Read e-mail recipients", + PermissionTypeId = 10, + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 52, + ClaimName = "eform_allow_managing_eform_tags", + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + PermissionName = "Allow managing eform tags", + PermissionTypeId = 9, + UpdatedByUserId = 0, + Version = 0 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.PermissionType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("Name") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("PermissionTypes"); + + b.HasData( + new + { + Id = 1, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Workers", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 2, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Sites", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 3, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Entity search", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 4, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Entity select", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 5, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "User management", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 6, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Units", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 7, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Device users", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 8, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Cases", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 9, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "Eforms", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 10, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "EmailRecipients", + UpdatedByUserId = 0, + Version = 0 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("Name") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("RedirectLink") + .HasColumnType("longtext"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.ToTable("SecurityGroups"); + + b.HasData( + new + { + Id = 1, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "eForm admins", + UpdatedByUserId = 0, + Version = 0 + }, + new + { + Id = 2, + CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + CreatedByUserId = 0, + Name = "eForm users", + UpdatedByUserId = 0, + Version = 0 + }); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroupUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("EformUserId") + .HasColumnType("int"); + + b.Property("SecurityGroupId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("SecurityGroupId"); + + b.HasIndex("EformUserId", "SecurityGroupId") + .IsUnique(); + + b.ToTable("SecurityGroupUsers"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("HeaderImage") + .HasColumnType("longblob"); + + b.Property("HeaderVisibility") + .HasColumnType("longtext"); + + b.Property("IsDateVisible") + .HasColumnType("tinyint(1)"); + + b.Property("IsWorkerNameVisible") + .HasColumnType("tinyint(1)"); + + b.Property("TemplateId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("TemplateId") + .IsUnique(); + + b.ToTable("EformReports"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportDataItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("DataItemId") + .HasColumnType("int"); + + b.Property("EformReportElementId") + .HasColumnType("int"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("Visibility") + .HasColumnType("tinyint(1)"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("DataItemId"); + + b.HasIndex("EformReportElementId"); + + b.HasIndex("ParentId"); + + b.ToTable("EformReportDataItems"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportElement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("EformReportId") + .HasColumnType("int"); + + b.Property("ElementId") + .HasColumnType("int"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("EformReportId"); + + b.HasIndex("ElementId"); + + b.HasIndex("ParentId"); + + b.ToTable("EformReportElements"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.SavedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedByUserId") + .HasColumnType("int"); + + b.Property("EformUserId") + .HasColumnType("int"); + + b.Property("TagId") + .HasColumnType("int"); + + b.Property("TagName") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedByUserId") + .HasColumnType("int"); + + b.Property("Version") + .HasColumnType("int"); + + b.Property("WorkflowState") + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("EformUserId", "TagId") + .IsUnique(); + + b.ToTable("SavedTags"); + }); + + modelBuilder.Entity("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("Roles", (string)null); + }); + + modelBuilder.Entity("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ArchiveLastIp") + .HasColumnType("longtext"); + + b.Property("ArchiveLastKnownLocation") + .HasColumnType("longtext"); + + b.Property("ArchiveLookedUpIp") + .HasColumnType("longtext"); + + b.Property("ArchiveManufacturer") + .HasColumnType("longtext"); + + b.Property("ArchiveModel") + .HasColumnType("longtext"); + + b.Property("ArchiveOsVersion") + .HasColumnType("longtext"); + + b.Property("ArchiveSoftwareVersion") + .HasColumnType("longtext"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("DarkTheme") + .HasColumnType("tinyint(1)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("EmailSha256") + .HasColumnType("longtext"); + + b.Property("ExternalLoginEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("FacebookEmail") + .HasColumnType("longtext"); + + b.Property("FacebookId") + .HasColumnType("longtext"); + + b.Property("FirstName") + .HasColumnType("longtext"); + + b.Property("Formats") + .HasColumnType("longtext"); + + b.Property("GoogleAuthenticatorSecretKey") + .HasColumnType("longtext"); + + b.Property("GoogleEmail") + .HasColumnType("longtext"); + + b.Property("GoogleId") + .HasColumnType("longtext"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("IsGoogleAuthenticatorEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LastName") + .HasColumnType("longtext"); + + b.Property("Locale") + .HasColumnType("longtext"); + + b.Property("LockoutEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("longtext"); + + b.Property("PhoneNumber") + .HasColumnType("longtext"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("PreferredLoginProvider") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ProfilePicture") + .HasColumnType("longtext"); + + b.Property("ProfilePictureSnapshot") + .HasColumnType("longtext"); + + b.Property("SecurityStamp") + .HasColumnType("longtext"); + + b.Property("ThemeVariant") + .HasColumnType("longtext"); + + b.Property("TimeRegistrationLastIp") + .HasColumnType("longtext"); + + b.Property("TimeRegistrationLastKnownLocation") + .HasColumnType("longtext"); + + b.Property("TimeRegistrationLookedUpIp") + .HasColumnType("longtext"); + + b.Property("TimeRegistrationManufacturer") + .HasColumnType("longtext"); + + b.Property("TimeRegistrationModel") + .HasColumnType("longtext"); + + b.Property("TimeRegistrationOsVersion") + .HasColumnType("longtext"); + + b.Property("TimeRegistrationSoftwareVersion") + .HasColumnType("longtext"); + + b.Property("TimeZone") + .HasColumnType("longtext"); + + b.Property("TwoFactorEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("Users", (string)null); + }); + + modelBuilder.Entity("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("UserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenuItem", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenu", "Menu") + .WithMany("Items") + .HasForeignKey("CmsMenuId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsPage", "Page") + .WithMany() + .HasForeignKey("PageId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenuItem", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Menu"); + + b.Navigation("Page"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsSettings", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenu", "ActiveMenu") + .WithMany() + .HasForeignKey("ActiveMenuId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("ActiveMenu"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePostEmailRecipient", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePost", "CasePost") + .WithMany("Recipients") + .HasForeignKey("CasePostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailRecipient", "EmailRecipient") + .WithMany() + .HasForeignKey("EmailRecipientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CasePost"); + + b.Navigation("EmailRecipient"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePostEmailTag", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePost", "CasePost") + .WithMany("Tags") + .HasForeignKey("CasePostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailTag", "EmailTag") + .WithMany() + .HasForeignKey("EmailTagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CasePost"); + + b.Navigation("EmailTag"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailTagRecipient", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailRecipient", "EmailRecipient") + .WithMany("TagRecipients") + .HasForeignKey("EmailRecipientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailTag", "EmailTag") + .WithMany() + .HasForeignKey("EmailTagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EmailRecipient"); + + b.Navigation("EmailTag"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItem", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplate", "MenuTemplate") + .WithMany("MenuItems") + .HasForeignKey("MenuTemplateId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItem", "Parent") + .WithMany("ChildItems") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("MenuTemplate"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItemSecurityGroup", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItem", "MenuItem") + .WithMany("MenuItemSecurityGroups") + .HasForeignKey("MenuItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroup", "SecurityGroup") + .WithMany("MenuItemSecurityGroups") + .HasForeignKey("SecurityGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MenuItem"); + + b.Navigation("SecurityGroup"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItemTranslation", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItem", "MenuItem") + .WithMany("Translations") + .HasForeignKey("MenuItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MenuItem"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplate", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.EformPlugin", "EformPlugin") + .WithMany("MenuTemplates") + .HasForeignKey("EformPluginId"); + + b.Navigation("EformPlugin"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplatePermission", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplate", "MenuTemplate") + .WithMany("MenuTemplatePermissions") + .HasForeignKey("MenuTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.Permission", "Permission") + .WithMany("MenuTemplatePermissions") + .HasForeignKey("PermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MenuTemplate"); + + b.Navigation("Permission"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplateTranslation", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplate", "MenuTemplate") + .WithMany("Translations") + .HasForeignKey("MenuTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MenuTemplate"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.EformInGroup", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroup", "SecurityGroup") + .WithMany("EformsInGroup") + .HasForeignKey("SecurityGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SecurityGroup"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.EformPermission", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.EformInGroup", "EformInGroup") + .WithMany("EformPermissions") + .HasForeignKey("EformInGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.Permission", "Permission") + .WithMany() + .HasForeignKey("PermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EformInGroup"); + + b.Navigation("Permission"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.GroupPermission", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.Permission", "Permission") + .WithMany() + .HasForeignKey("PermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroup", "SecurityGroup") + .WithMany() + .HasForeignKey("SecurityGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("SecurityGroup"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.Permission", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.PermissionType", "PermissionType") + .WithMany() + .HasForeignKey("PermissionTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PermissionType"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroupUser", b => + { + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", "EformUser") + .WithMany() + .HasForeignKey("EformUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroup", "SecurityGroup") + .WithMany("SecurityGroupUsers") + .HasForeignKey("SecurityGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EformUser"); + + b.Navigation("SecurityGroup"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportDataItem", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportElement", "EformReportElement") + .WithMany("DataItems") + .HasForeignKey("EformReportElementId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportDataItem", "Parent") + .WithMany("NestedDataItems") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("EformReportElement"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportElement", b => + { + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReport", "EformReport") + .WithMany("ReportElements") + .HasForeignKey("EformReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportElement", "Parent") + .WithMany("NestedElements") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("EformReport"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.SavedTag", b => + { + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", "EformUser") + .WithMany() + .HasForeignKey("EformUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EformUser"); + }); + + modelBuilder.Entity("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUserRole", b => + { + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformRole", "Role") + .WithMany("UserRoles") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", "User") + .WithMany("UserRoles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenu", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Cms.CmsMenuItem", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.EformPlugin", b => + { + b.Navigation("MenuTemplates"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.CasePost", b => + { + b.Navigation("Recipients"); + + b.Navigation("Tags"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Mailing.EmailRecipient", b => + { + b.Navigation("TagRecipients"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuItem", b => + { + b.Navigation("ChildItems"); + + b.Navigation("MenuItemSecurityGroups"); + + b.Navigation("Translations"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Menu.MenuTemplate", b => + { + b.Navigation("MenuItems"); + + b.Navigation("MenuTemplatePermissions"); + + b.Navigation("Translations"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.EformInGroup", b => + { + b.Navigation("EformPermissions"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.Permission", b => + { + b.Navigation("MenuTemplatePermissions"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Permissions.SecurityGroup", b => + { + b.Navigation("EformsInGroup"); + + b.Navigation("MenuItemSecurityGroups"); + + b.Navigation("SecurityGroupUsers"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReport", b => + { + b.Navigation("ReportElements"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportDataItem", b => + { + b.Navigation("NestedDataItems"); + }); + + modelBuilder.Entity("Microting.EformAngularFrontendBase.Infrastructure.Data.Entities.Reports.EformReportElement", b => + { + b.Navigation("DataItems"); + + b.Navigation("NestedElements"); + }); + + modelBuilder.Entity("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformRole", b => + { + b.Navigation("UserRoles"); + }); + + modelBuilder.Entity("Microting.eFormApi.BasePn.Infrastructure.Database.Entities.EformUser", b => + { + b.Navigation("UserRoles"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.cs b/Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.cs new file mode 100644 index 0000000..56abd6e --- /dev/null +++ b/Microting.EformAngularFrontendBase/Migrations/20260917085145_AddIsActiveToUser.cs @@ -0,0 +1,31 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Microting.EformAngularFrontendBase.Migrations +{ + /// + public partial class AddIsActiveToUser : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + // defaultValue: true backfills every existing account as enabled - a false + // default here would lock out the entire user base on migrate. + migrationBuilder.AddColumn( + name: "IsActive", + table: "Users", + type: "tinyint(1)", + nullable: false, + defaultValue: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "IsActive", + table: "Users"); + } + } +} diff --git a/Microting.EformAngularFrontendBase/Migrations/BaseDbContextModelSnapshot.cs b/Microting.EformAngularFrontendBase/Migrations/BaseDbContextModelSnapshot.cs index 5b22d77..87e1795 100644 --- a/Microting.EformAngularFrontendBase/Migrations/BaseDbContextModelSnapshot.cs +++ b/Microting.EformAngularFrontendBase/Migrations/BaseDbContextModelSnapshot.cs @@ -4071,6 +4071,11 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("GoogleId") .HasColumnType("longtext"); + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + b.Property("IsGoogleAuthenticatorEnabled") .HasColumnType("tinyint(1)");