From 37fa39402744df2066230828fe9f21f89ceaf399 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Janis=20Daniel=20Da=CC=88hne?=
 <janis.daehne2@student.uni-halle.de>
Date: Fri, 30 Aug 2019 16:13:38 +0200
Subject: [PATCH] - step 3

---
 src/ClientServer/Controllers/Core/Init.cs     |   11 +-
 ...90801154937_addFakeFksToOtherSidesStep2.cs |    1 +
 ...55_addFakeFksToOtherSidesStep2.Designer.cs | 2163 -----------------
 ...90801163155_addFakeFksToOtherSidesStep2.cs |  354 ---
 .../Migrations/YapexDbContextModelSnapshot.cs |    1 -
 5 files changed, 7 insertions(+), 2523 deletions(-)
 delete mode 100755 src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.Designer.cs
 delete mode 100755 src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.cs

diff --git a/src/ClientServer/Controllers/Core/Init.cs b/src/ClientServer/Controllers/Core/Init.cs
index ef8f762..ee6fe3b 100644
--- a/src/ClientServer/Controllers/Core/Init.cs
+++ b/src/ClientServer/Controllers/Core/Init.cs
@@ -453,17 +453,18 @@ namespace ClientServer.Controllers.Core
             
             _context.TestCaseSettingses.RemoveRange(allTestSettings);
 
-            var notDeletedAssessments = _context.SolutionAssessment
-                .Where(p => p.UserId == 0 && p.ExerciseReleaseId == 0 && p.PLangId == 0)
-                .ToList();
-            
             
-            _context.SolutionAssessment.RemoveRange(notDeletedAssessments);
             
 
             int rows;
             try
             {
+                var notDeletedAssessments = _context.SolutionAssessment
+                    .Where(p => p.UserId == 0 && p.ExerciseReleaseId == 0 && p.PLangId == 0)
+                    .ToList();
+            
+            
+                _context.SolutionAssessment.RemoveRange(notDeletedAssessments);
                 rows = _context.SaveChanges();
             }
             catch (Exception e)
diff --git a/src/ClientServer/Migrations/20190801154937_addFakeFksToOtherSidesStep2.cs b/src/ClientServer/Migrations/20190801154937_addFakeFksToOtherSidesStep2.cs
index 50fcdf0..caa0077 100755
--- a/src/ClientServer/Migrations/20190801154937_addFakeFksToOtherSidesStep2.cs
+++ b/src/ClientServer/Migrations/20190801154937_addFakeFksToOtherSidesStep2.cs
@@ -8,6 +8,7 @@ namespace ClientServer.Migrations
     {
         protected override void Up(MigrationBuilder migrationBuilder)
         {
+            //this might got here because we manually dropped this fk
             migrationBuilder.DropForeignKey(
                 name: "FK_CustomProjectTests_TestCaseSettingses_TestSettingsId",
                 table: "CustomProjectTests");
diff --git a/src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.Designer.cs b/src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.Designer.cs
deleted file mode 100755
index f8d1fa6..0000000
--- a/src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.Designer.cs
+++ /dev/null
@@ -1,2163 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-using ClientServer.Models.Exercises.Release;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20190801163155_addFakeFksToOtherSidesStep2")]
-    partial class addFakeFksToOtherSidesStep2
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.3");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<int>("LastEditorPLangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("CustomProjects");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(50000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId")
-                        .IsUnique();
-
-                    b.ToTable("CustomProjectDescriptions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b =>
-                {
-                    b.Property<int>("CustomProjectDescriptionId");
-
-                    b.Property<int>("FileReferenceUserFileAssetId");
-
-                    b.HasKey("CustomProjectDescriptionId", "FileReferenceUserFileAssetId");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("FileReferenceUserFileAssetId");
-
-                    b.ToTable("CustomProjectDescriptionWithFileAsAssetReferences");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<int>("PLangId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("CustomProjectSolutions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(70000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.ToTable("CustomProjectSolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(80000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("CustomProjectTests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(2000);
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<string>("CompilerOptions")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId")
-                        .IsUnique();
-
-                    b.ToTable("CustomProjectTestSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b =>
-                {
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<int>("FileReferenceUserFileAssetId");
-
-                    b.HasKey("CustomProjectTestId", "FileReferenceUserFileAssetId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.HasIndex("FileReferenceUserFileAssetId");
-
-                    b.ToTable("CustomProjectTestWithFileAsAssetReferences");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<bool>("CharacterLimitExceeded");
-
-                    b.Property<int?>("CharacterLimitUsed");
-
-                    b.Property<int?>("CompileTimeoutInMsUsed");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(160100);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    b.Property<int?>("TimeoutInMsUsed");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<int>("SolutionExerciseReleaseId");
-
-                    b.Property<int>("SolutionPLangId");
-
-                    b.Property<int>("SolutionUserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .IsUnique();
-
-                    b.ToTable("AfterSolutions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("AfterSolutionId");
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(70000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("AfterSolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("AfterSolutionId");
-
-                    b.Property<bool>("CharacterLimitExceeded");
-
-                    b.Property<int?>("CharacterLimitUsed");
-
-                    b.Property<int?>("CompileTimeoutInMsUsed");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(160100);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    b.Property<int?>("TimeoutInMsUsed");
-
-                    b.HasKey("CustomTestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("AfterSolutionId");
-
-                    b.Property<bool>("CharacterLimitExceeded");
-
-                    b.Property<int?>("CharacterLimitUsed");
-
-                    b.Property<int?>("CompileTimeoutInMsUsed");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(160100);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    b.Property<int?>("TimeoutInMsUsed");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<int>("PLangId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("Templates");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("FileReferenceUserFileAssetId");
-
-                    b.HasKey("CustomTestId", "FileReferenceUserFileAssetId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("FileReferenceUserFileAssetId");
-
-                    b.ToTable("CustomTestWithFileAsAssetReferences");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(10000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(2000);
-
-                    b.Property<int>("UserGroupId");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserGroupId");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Exercises");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(50000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.ToTable("ExerciseDescriptions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b =>
-                {
-                    b.Property<int>("ExerciseDescriptionId");
-
-                    b.Property<int>("FileReferenceMarkdownAssetId");
-
-                    b.HasKey("ExerciseDescriptionId", "FileReferenceMarkdownAssetId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.HasIndex("FileReferenceMarkdownAssetId");
-
-                    b.ToTable("ExerciseDescriptionWithFileAsAssetReferences");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.ToTable("MetaDatas");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime?>("AutomaticEndAt");
-
-                    b.Property<DateTime?>("AutomaticStartAt");
-
-                    b.Property<int>("AvailableWorkingTimeInMinutes");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<string>("GeneratedCode")
-                        .IsRequired()
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideExerciseLeaveActions");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HidePrintOptions");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MaxManualPoint");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(10000);
-
-                    b.Property<int>("PLangId");
-
-                    b.Property<int>("ReleaseDurationType");
-
-                    b.Property<int>("ReleaseStartType");
-
-                    b.Property<DateTime?>("ReleasedAt");
-
-                    b.Property<bool>("RunAlsoNormalTests");
-
-                    b.Property<bool>("ShouldAutomaticAssessSubmissions");
-
-                    b.Property<bool>("ShouldClearClipboard");
-
-                    b.Property<bool>("ShowAdditionalLogButton");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionUserId");
-
-                    b.Property<int>("SolutionExerciseReleaseId");
-
-                    b.Property<int>("SolutionPLangId");
-
-                    b.Property<bool>("CharacterLimitExceeded");
-
-                    b.Property<int?>("CharacterLimitUsed");
-
-                    b.Property<int?>("CompileTimeoutInMsUsed");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(160100);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    b.Property<int?>("TimeoutInMsUsed");
-
-                    b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("CustomTestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b =>
-                {
-                    b.Property<int>("UserId");
-
-                    b.Property<int>("ExerciseReleaseId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LastEditedPLangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("LockSolutionsFlag");
-
-                    b.Property<bool>("ShouldNotCount");
-
-                    b.HasKey("UserId", "ExerciseReleaseId");
-
-                    b.HasIndex("ExerciseReleaseId");
-
-                    b.HasIndex("LastEditedPLangId");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("ExerciseReleaseWithUserAsParticipations");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b =>
-                {
-                    b.Property<int>("UserId");
-
-                    b.Property<int>("ExerciseReleaseId");
-
-                    b.Property<int>("PLangId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(10000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("PLangId");
-
-                    b.HasIndex("UserId", "ExerciseReleaseId");
-
-                    b.ToTable("Solutions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseReleaseId");
-
-                    b.Property<string>("FeedbackForStudent")
-                        .HasMaxLength(10000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(80000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(10000);
-
-                    b.Property<int>("PLangId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.Property<int>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ExerciseReleaseId", "PLangId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(70000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SolutionExerciseReleaseId");
-
-                    b.Property<int>("SolutionPLangId");
-
-                    b.Property<int>("SolutionUserId");
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionUserId");
-
-                    b.Property<int>("SolutionExerciseReleaseId");
-
-                    b.Property<int>("SolutionPLangId");
-
-                    b.Property<bool>("CharacterLimitExceeded");
-
-                    b.Property<int?>("CharacterLimitUsed");
-
-                    b.Property<int?>("CompileTimeoutInMsUsed");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(160100);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    b.Property<int?>("TimeoutInMsUsed");
-
-                    b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("TestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("TestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DisplayName")
-                        .HasName("Unique_Tag");
-
-                    b.ToTable("Tags");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b =>
-                {
-                    b.Property<int>("TagId");
-
-                    b.Property<int>("MetaDataId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("TagId", "MetaDataId");
-
-                    b.HasIndex("MetaDataId");
-
-                    b.HasIndex("TagId");
-
-                    b.ToTable("TagWithMetaDatas");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int?>("CodeTemplateId")
-                        .IsRequired();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(70000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("IsContentVisibleForUser");
-
-                    b.Property<bool>("IsEditableByUser");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeTemplateId");
-
-                    b.ToTable("TemplateFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(80000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<int>("ExerciseReleaseId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestTypeId");
-
-                    b.HasIndex("UserId", "ExerciseReleaseId");
-
-                    b.ToTable("CustomTest");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<string>("CompilerOptions")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.ToTable("DefaultCustomTestSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(80000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<string>("CompilerOptions")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId")
-                        .IsUnique();
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("FileReferenceTestAssetId");
-
-                    b.HasKey("TestId", "FileReferenceTestAssetId");
-
-                    b.HasIndex("FileReferenceTestAssetId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithFileAsAssetReferences");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Files.FileReferenceMarkdownAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(2000);
-
-                    b.Property<long>("SizeInBytes");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("FileReferenceMarkdownAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Files.FileReferenceTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(2000);
-
-                    b.Property<long>("SizeInBytes");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("FileReferenceTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Files.FileReferenceUserFileAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(2000);
-
-                    b.Property<long>("SizeInBytes");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("FileReferenceUserFileAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Langs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.PLang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b =>
-                {
-                    b.Property<int>("UserId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CsrfToken")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(2000);
-
-                    b.HasKey("UserId");
-
-                    b.HasIndex("UserAuthToken")
-                        .IsUnique();
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("AuthTokens");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(2000);
-
-                    b.Property<int>("UserId");
-
-                    b.HasKey("ExternalId");
-
-                    b.HasAlternateKey("Token")
-                        .HasName("Unique_ExternalToken");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("ExternalUsers");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("GroupRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanAddUserToGroup");
-
-                    b.Property<bool>("CanAssessExercises");
-
-                    b.Property<bool>("CanChangeExercises");
-
-                    b.Property<bool>("CanChangeGroupData");
-
-                    b.Property<bool>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanLockExercisesPermanently");
-
-                    b.Property<bool>("CanManageExerciseReleases");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("GroupRoleId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRoleId")
-                        .IsUnique();
-
-                    b.ToTable("GroupRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("FontSize");
-
-                    b.Property<bool>("HighlightCurrentLine");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("ShowInvisibles");
-
-                    b.Property<bool>("ShowLineIndentions");
-
-                    b.Property<bool>("ShowLineNumbers");
-
-                    b.Property<int>("TabSize");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.Property<int>("UserSettingId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserSettingId")
-                        .IsUnique();
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("LangId");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("UserSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeOtherUsersSystemRole");
-
-                    b.Property<bool>("CanChangeRoles");
-
-                    b.Property<bool>("CanChangeSystemSettings");
-
-                    b.Property<bool>("CanChangeUserData");
-
-                    b.Property<bool>("CanCreateGroups");
-
-                    b.Property<bool>("CanCreateRoles");
-
-                    b.Property<bool>("CanDeleteActivatedUsers");
-
-                    b.Property<bool>("CanDeleteGroups");
-
-                    b.Property<bool>("CanDeleteRoles");
-
-                    b.Property<bool>("CanManageNewUsers");
-
-                    b.Property<bool>("CanManageTags");
-
-                    b.Property<bool>("CanViewDashboard");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRoleId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRoleId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(10000);
-
-                    b.Property<int>("CustomProjectTestCompileTimeoutInMs");
-
-                    b.Property<int>("CustomProjectTestMaxDiskSpaceInKb");
-
-                    b.Property<int>("CustomProjectTestMemoryLimitInKb");
-
-                    b.Property<int>("CustomProjectTestTimeoutInMs");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<int>("JustRunProgramCompileTimeoutInMs");
-
-                    b.Property<int>("JustRunProgramMaxDiskSpaceInKb");
-
-                    b.Property<int>("JustRunProgramMemoryLimitInKb");
-
-                    b.Property<int>("JustRunProgramTimeoutInMs");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    b.Property<int>("MaxNumberOfTestsWithOneRequest");
-
-                    b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer");
-
-                    b.Property<int>("SubmitTestServerTimeoutInMs");
-
-                    b.Property<string>("SubmitTestServerUrl")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(2000);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(2000);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DefaultGroupCreatorGroupRoleId")
-                        .IsUnique();
-
-                    b.HasIndex("DefaultGroupRoleId")
-                        .IsUnique();
-
-                    b.HasIndex("DefaultUserGroupId")
-                        .IsUnique();
-
-                    b.ToTable("SystemSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.User", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(2000);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(2000);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(2000);
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("Token")
-                        .HasName("Unique_Token");
-
-                    b.HasIndex("SystemRoleId");
-
-                    b.ToTable("Users");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(2000);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(2000);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("UserGroups");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b =>
-                {
-                    b.Property<int>("UserId");
-
-                    b.Property<int>("UserGroupId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("GroupRoleId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("UserId", "UserGroupId");
-
-                    b.HasIndex("GroupRoleId");
-
-                    b.HasIndex("UserGroupId");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("UserWithUserGroups");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.User", "User")
-                        .WithMany("CustomProjects")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject")
-                        .WithOne("Description")
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectDescription")
-                        .WithMany("AssetReferences")
-                        .HasForeignKey("CustomProjectDescriptionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset")
-                        .WithMany("CustomProjectDescriptionWithFileAsAssetReferences")
-                        .HasForeignKey("FileReferenceUserFileAssetId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject")
-                        .WithMany("Solutions")
-                        .HasForeignKey("CustomProjectId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("CustomProjectSolutionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject")
-                        .WithMany("Tests")
-                        .HasForeignKey("CustomProjectId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestSettings", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest")
-                        .WithOne("CustomProjectTestSettings")
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTestSettings", "CustomProjectTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest")
-                        .WithMany("AssetReferences")
-                        .HasForeignKey("CustomProjectTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset")
-                        .WithMany("CustomProjectTestWithFileAsAssetReferences")
-                        .HasForeignKey("FileReferenceUserFileAssetId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomProjectSolutionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomProjectTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithOne("AfterSolution")
-                        .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("AfterSolutionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany()
-                        .HasForeignKey("TemplateFileId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("AfterSolutionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("AfterTestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution")
-                        .WithMany("TestResults")
-                        .HasForeignKey("AfterSolutionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("AfterTestResults")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany("CodeTemplates")
-                        .HasForeignKey("ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("AssetReferences")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset")
-                        .WithMany("CustomTestWithFileAsAssetReferences")
-                        .HasForeignKey("FileReferenceUserFileAssetId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup")
-                        .WithMany("Exercises")
-                        .HasForeignKey("UserGroupId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Users.User", "User")
-                        .WithMany("Exercises")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithOne("Description")
-                        .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseDescription")
-                        .WithMany("AssetReferences")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Files.FileReferenceMarkdownAsset", "FileReferenceMarkdownAsset")
-                        .WithMany("AssetReferences")
-                        .HasForeignKey("FileReferenceMarkdownAssetId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany("Releases")
-                        .HasForeignKey("ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResultsNew")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease")
-                        .WithMany("ExerciseReleaseWithUserAsParticipations")
-                        .HasForeignKey("ExerciseReleaseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "LastEditedPLang")
-                        .WithMany()
-                        .HasForeignKey("LastEditedPLangId");
-
-                    b.HasOne("ClientServer.Models.Users.User", "User")
-                        .WithMany("ExerciseReleaseWithUserAsParticipations")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId");
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithOne("Assessment")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "UserId", "ExerciseReleaseId", "PLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResultsNew")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData")
-                        .WithMany("TagWithMetaDatas")
-                        .HasForeignKey("MetaDataId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tag", "Tag")
-                        .WithMany()
-                        .HasForeignKey("TagId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.CodeTemplate")
-                        .WithMany("TemplateFiles")
-                        .HasForeignKey("CodeTemplateId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("CustomTests")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithOne("DefaultCustomTestSettings")
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany("Tests")
-                        .HasForeignKey("ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithOne("TestSettings")
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.TestSettings", "TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b =>
-                {
-                    b.HasOne("ClientServer.Models.Files.FileReferenceTestAsset", "FileReferenceTestAsset")
-                        .WithMany("AssetReferences")
-                        .HasForeignKey("FileReferenceTestAssetId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("AssetReferences")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.User", "User")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.User", "User")
-                        .WithOne("ExternalUser")
-                        .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole")
-                        .WithOne("GroupRolePermission")
-                        .HasForeignKey("ClientServer.Models.Users.GroupRolePermission", "GroupRoleId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.UserSetting", "UserSetting")
-                        .WithOne("CodeEditorSetting")
-                        .HasForeignKey("ClientServer.Models.Users.Settings.CodeEditorSetting", "UserSettingId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Lang", "Lang")
-                        .WithMany()
-                        .HasForeignKey("LangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.User", "User")
-                        .WithOne("UserSettings")
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole")
-                        .WithOne("SystemRolePermission")
-                        .HasForeignKey("ClientServer.Models.Users.SystemRolePermission", "SystemRoleId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId");
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId");
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.User", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole")
-                        .WithMany()
-                        .HasForeignKey("SystemRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole")
-                        .WithMany("UserUserGroups")
-                        .HasForeignKey("GroupRoleId");
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup")
-                        .WithMany("UserWithUserGroups")
-                        .HasForeignKey("UserGroupId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Users.User", "User")
-                        .WithMany("UserWithUserGroups")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.cs b/src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.cs
deleted file mode 100755
index bd7fd88..0000000
--- a/src/ClientServer/Migrations/20190801163155_addFakeFksToOtherSidesStep2.cs
+++ /dev/null
@@ -1,354 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class addFakeFksToOtherSidesStep2 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_Solutions_SolutionAssessment_AssessmentId",
-                table: "Solutions");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_Tests_TestCaseSettingses_TestSettingsId",
-                table: "Tests");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_GroupRoles_GroupRolePermissions_GroupRolePermissionId",
-                table: "GroupRoles");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_UserSettingses_CodeEditorSettings_CodeEditorSettingsId",
-                table: "UserSettingses");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemRoles_SystemRolePermissions_SystemRolePermissionId",
-                table: "SystemRoles");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SystemRoles_SystemRolePermissionId",
-                table: "SystemRoles");
-
-            migrationBuilder.DropIndex(
-                name: "IX_UserSettingses_CodeEditorSettingsId",
-                table: "UserSettingses");
-
-            migrationBuilder.DropIndex(
-                name: "IX_GroupRoles_GroupRolePermissionId",
-                table: "GroupRoles");
-
-            migrationBuilder.DropIndex(
-                name: "IX_Tests_TestSettingsId",
-                table: "Tests");
-
-            migrationBuilder.DropIndex(
-                name: "IX_Solutions_AssessmentId",
-                table: "Solutions");
-
-            migrationBuilder.DropIndex(
-                name: "IX_CustomProjectTests_TestSettingsId",
-                table: "CustomProjectTests");
-
-            migrationBuilder.DropColumn(
-                name: "SystemRolePermissionId",
-                table: "SystemRoles");
-
-            migrationBuilder.DropColumn(
-                name: "CodeEditorSettingsId",
-                table: "UserSettingses");
-
-            migrationBuilder.DropColumn(
-                name: "GroupRolePermissionId",
-                table: "GroupRoles");
-
-            migrationBuilder.DropColumn(
-                name: "TestSettingsId",
-                table: "Tests");
-
-            migrationBuilder.DropColumn(
-                name: "AssessmentId",
-                table: "Solutions");
-
-            migrationBuilder.DropColumn(
-                name: "TestSettingsId",
-                table: "CustomProjectTests");
-
-            migrationBuilder.AddColumn<DateTime>(
-                name: "CreatedAt",
-                table: "SolutionAssessment",
-                nullable: false,
-                defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
-
-            migrationBuilder.AddColumn<DateTime>(
-                name: "LastUpdatedAt",
-                table: "SolutionAssessment",
-                nullable: false,
-                defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SystemRolePermissions_SystemRoleId",
-                table: "SystemRolePermissions",
-                column: "SystemRoleId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CodeEditorSettings_UserSettingId",
-                table: "CodeEditorSettings",
-                column: "UserSettingId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_GroupRolePermissions_GroupRoleId",
-                table: "GroupRolePermissions",
-                column: "GroupRoleId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestCaseSettingses_TestId",
-                table: "TestCaseSettingses",
-                column: "TestId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionAssessment_UserId_ExerciseReleaseId_PLangId",
-                table: "SolutionAssessment",
-                columns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTestSettings_CustomProjectTestId",
-                table: "CustomProjectTestSettings",
-                column: "CustomProjectTestId",
-                unique: true);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_CustomProjectTestSettings_CustomProjectTests_CustomProjectTestId",
-                table: "CustomProjectTestSettings",
-                column: "CustomProjectTestId",
-                principalTable: "CustomProjectTests",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SolutionAssessment_Solutions_UserId_ExerciseReleaseId_PLangId",
-                table: "SolutionAssessment",
-                columns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                principalTable: "Solutions",
-                principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_TestCaseSettingses_Tests_TestId",
-                table: "TestCaseSettingses",
-                column: "TestId",
-                principalTable: "Tests",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_GroupRolePermissions_GroupRoles_GroupRoleId",
-                table: "GroupRolePermissions",
-                column: "GroupRoleId",
-                principalTable: "GroupRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_CodeEditorSettings_UserSettingses_UserSettingId",
-                table: "CodeEditorSettings",
-                column: "UserSettingId",
-                principalTable: "UserSettingses",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemRolePermissions_SystemRoles_SystemRoleId",
-                table: "SystemRolePermissions",
-                column: "SystemRoleId",
-                principalTable: "SystemRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_CustomProjectTestSettings_CustomProjectTests_CustomProjectTestId",
-                table: "CustomProjectTestSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SolutionAssessment_Solutions_UserId_ExerciseReleaseId_PLangId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_TestCaseSettingses_Tests_TestId",
-                table: "TestCaseSettingses");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_GroupRolePermissions_GroupRoles_GroupRoleId",
-                table: "GroupRolePermissions");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_CodeEditorSettings_UserSettingses_UserSettingId",
-                table: "CodeEditorSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemRolePermissions_SystemRoles_SystemRoleId",
-                table: "SystemRolePermissions");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SystemRolePermissions_SystemRoleId",
-                table: "SystemRolePermissions");
-
-            migrationBuilder.DropIndex(
-                name: "IX_CodeEditorSettings_UserSettingId",
-                table: "CodeEditorSettings");
-
-            migrationBuilder.DropIndex(
-                name: "IX_GroupRolePermissions_GroupRoleId",
-                table: "GroupRolePermissions");
-
-            migrationBuilder.DropIndex(
-                name: "IX_TestCaseSettingses_TestId",
-                table: "TestCaseSettingses");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SolutionAssessment_UserId_ExerciseReleaseId_PLangId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropIndex(
-                name: "IX_CustomProjectTestSettings_CustomProjectTestId",
-                table: "CustomProjectTestSettings");
-
-            migrationBuilder.DropColumn(
-                name: "CreatedAt",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropColumn(
-                name: "LastUpdatedAt",
-                table: "SolutionAssessment");
-
-            migrationBuilder.AddColumn<int>(
-                name: "SystemRolePermissionId",
-                table: "SystemRoles",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "CodeEditorSettingsId",
-                table: "UserSettingses",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "GroupRolePermissionId",
-                table: "GroupRoles",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TestSettingsId",
-                table: "Tests",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "AssessmentId",
-                table: "Solutions",
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TestSettingsId",
-                table: "CustomProjectTests",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SystemRoles_SystemRolePermissionId",
-                table: "SystemRoles",
-                column: "SystemRolePermissionId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_UserSettingses_CodeEditorSettingsId",
-                table: "UserSettingses",
-                column: "CodeEditorSettingsId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_GroupRoles_GroupRolePermissionId",
-                table: "GroupRoles",
-                column: "GroupRolePermissionId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Tests_TestSettingsId",
-                table: "Tests",
-                column: "TestSettingsId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Solutions_AssessmentId",
-                table: "Solutions",
-                column: "AssessmentId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTests_TestSettingsId",
-                table: "CustomProjectTests",
-                column: "TestSettingsId",
-                unique: true);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_CustomProjectTests_TestCaseSettingses_TestSettingsId",
-                table: "CustomProjectTests",
-                column: "TestSettingsId",
-                principalTable: "TestCaseSettingses",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Solutions_SolutionAssessment_AssessmentId",
-                table: "Solutions",
-                column: "AssessmentId",
-                principalTable: "SolutionAssessment",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Tests_TestCaseSettingses_TestSettingsId",
-                table: "Tests",
-                column: "TestSettingsId",
-                principalTable: "TestCaseSettingses",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_GroupRoles_GroupRolePermissions_GroupRolePermissionId",
-                table: "GroupRoles",
-                column: "GroupRolePermissionId",
-                principalTable: "GroupRolePermissions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_UserSettingses_CodeEditorSettings_CodeEditorSettingsId",
-                table: "UserSettingses",
-                column: "CodeEditorSettingsId",
-                principalTable: "CodeEditorSettings",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemRoles_SystemRolePermissions_SystemRolePermissionId",
-                table: "SystemRoles",
-                column: "SystemRolePermissionId",
-                principalTable: "SystemRolePermissions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs b/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs
index 52b95a5..ba905ac 100755
--- a/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs
+++ b/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs
@@ -4,7 +4,6 @@ using Microsoft.EntityFrameworkCore.Infrastructure;
 using Microsoft.EntityFrameworkCore.Metadata;
 using Microsoft.EntityFrameworkCore.Migrations;
 using ClientServer.Db;
-using ClientServer.Models.Exercises.Release;
 
 namespace ClientServer.Migrations
 {
-- 
GitLab