diff --git a/src/ClientServer/ClientServer.csproj b/src/ClientServer/ClientServer.csproj
index 0ef607e0cb0ff7f66b56b4d3a0a109d7c48507a4..97a69137cc2ae18fcfbd4887bc803e51baac8d7d 100755
--- a/src/ClientServer/ClientServer.csproj
+++ b/src/ClientServer/ClientServer.csproj
@@ -55,4 +55,7 @@
   <ItemGroup>
     <None Remove="wwwroot\**" />
   </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Migrations" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/ClientServer/Config/Constants.cs b/src/ClientServer/Config/Constants.cs
index 7a314f3a7c7310bbd0379e7176666da4f3ee328d..e39f09735e2c4898e6f78967a32b5a99e173bb19 100644
--- a/src/ClientServer/Config/Constants.cs
+++ b/src/ClientServer/Config/Constants.cs
@@ -13,7 +13,7 @@ namespace ClientServer.Helpers
     /// </summary>
     public static class Constants
     {
-        public static string VersionString = "2.4.1";
+        public static string VersionString = "2.4.2";
 
         /// <summary>
         /// this is only set once at program.cs!!
@@ -60,6 +60,10 @@ namespace ClientServer.Helpers
         
         /// <summary>
         /// the string to split lines in the test protocol
+        /// do not change this after we have data in the db!
+        /// because all test results are stored as string that we split with this...
+        /// a bad design decision... why haven'T we used just \r\n ??
+        /// now every new line counts as 4 characters...
         /// </summary>
         public const string TestProtocolSplitString = "\\r\\n";
 
diff --git a/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs b/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs
index fb5a46151e9ec4b1a2c315a0eb3f22dca7a35ef8..182002ab4209886ea5d00f8e50bca3242fffe3f9 100644
--- a/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs
+++ b/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs
@@ -206,7 +206,15 @@ namespace ClientServer.Controllers.Core.customProjects
                     Protocol =
                         p.Protocol.Split(new string[] {Constants.TestProtocolSplitString},
                             StringSplitOptions.RemoveEmptyEntries).ToList(),
-                    HasCompiled = p.HasCompiled
+                    HasCompiled = p.HasCompiled,
+                    CharacterLimitExceeded = p.CharacterLimitExceeded,
+                    CharacterLimitUsed = p.CharacterLimitUsed,
+                    TimeoutInMsUsed = p.TimeoutInMsUsed,
+                    CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed,
+                    RunnerVersion = p.RunnerVersion,
+                    TimeForCompiling = p.TimeForCompiling,
+                    TimeForUserProgram = p.TimeForUserProgram,
+                    TestServerVersion = p.TestServerVersion
                 }).ToList()
                 ;
 
diff --git a/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs b/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs
index c36d5a0af307d68893cb2cee5f1a8da257475d20..608902fa4d623399afe82537ef3fa6fe02116f3d 100644
--- a/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs
+++ b/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs
@@ -695,6 +695,8 @@ namespace ClientServer.Controllers.Core.Exercises.DoExerciseAfterSolution
                     TimeForUserProgram = p.TimeForUserProgram,
                     TimeoutInMsUsed = p.TimeoutInMsUsed,
                     CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed,
+                    CharacterLimitExceeded = p.CharacterLimitExceeded,
+                    CharacterLimitUsed = p.CharacterLimitUsed,
                 }).ToList(),
                 CustomTestResults = new List<StoredTestResultFromBackend>()
             };
@@ -736,6 +738,8 @@ namespace ClientServer.Controllers.Core.Exercises.DoExerciseAfterSolution
                         TimeForUserProgram = p.TimeForUserProgram,
                         TimeoutInMsUsed = p.TimeoutInMsUsed,
                         CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed,
+                        CharacterLimitExceeded = p.CharacterLimitExceeded,
+                        CharacterLimitUsed = p.CharacterLimitUsed,
                     }).ToList()
                     ;
             }
@@ -929,6 +933,8 @@ namespace ClientServer.Controllers.Core.Exercises.DoExerciseAfterSolution
                             TimeForUserProgram = p.Result.TimeForUserProgram,
                             TimeoutInMsUsed = p.Result.TimeoutInMsUsed,
                             CompileTimeoutInMsUsed = p.Result.CompileTimeoutInMsUsed,
+                            CharacterLimitExceeded = p.Result.CharacterLimitExceeded,
+                            CharacterLimitUsed = p.Result.CharacterLimitUsed,
                         }
                 }).ToList();
 
diff --git a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs
index 3617f45f8b48649e6d242a08c39c120ab851dfe1..907d0e375ad05d23dce9531736c5d6a93c25ee62 100644
--- a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs
+++ b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs
@@ -1032,6 +1032,8 @@ namespace ClientServer.Controllers.Core.Exercises
                     TimeForUserProgram = p.TimeForUserProgram,
                     TimeoutInMsUsed = p.TimeoutInMsUsed,
                     CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed,
+                    CharacterLimitExceeded = p.CharacterLimitExceeded,
+                    CharacterLimitUsed = p.CharacterLimitUsed,
                 }).ToList(),
                 CustomTestResults = new List<StoredTestResultFromBackend>()
             };
@@ -1074,6 +1076,8 @@ namespace ClientServer.Controllers.Core.Exercises
                         TimeForUserProgram = p.TimeForUserProgram,
                         TimeoutInMsUsed = p.TimeoutInMsUsed,
                         CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed,
+                        CharacterLimitExceeded = p.CharacterLimitExceeded,
+                        CharacterLimitUsed = p.CharacterLimitUsed,
                     }).ToList()
                     ;
             }
@@ -1324,6 +1328,8 @@ namespace ClientServer.Controllers.Core.Exercises
                             TimeForUserProgram = p.Result.TimeForUserProgram,
                             TimeoutInMsUsed = p.Result.TimeoutInMsUsed,
                             CompileTimeoutInMsUsed = p.Result.CompileTimeoutInMsUsed,
+                            CharacterLimitExceeded = p.Result.CharacterLimitExceeded,
+                            CharacterLimitUsed = p.Result.CharacterLimitUsed,
                         }
                 }).ToList();
 
@@ -3826,6 +3832,17 @@ namespace ClientServer.Controllers.Core.Exercises
         /// can be null
         /// </summary>
         public string TestServerVersion { get; set; }
+        
+        /// <summary>
+        /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and
+        /// the <see cref="Protocol"/> was cut
+        /// </summary>
+        public bool CharacterLimitExceeded { get; set; }
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// can be null for old results
+        /// </summary>
+        public int? CharacterLimitUsed { get; set; }
     }
 
     #endregion
diff --git a/src/ClientServer/Controllers/Core/SystemSettingsController.cs b/src/ClientServer/Controllers/Core/SystemSettingsController.cs
index 4eb45f9ec1aafc0c15b697402fc2b882c790c3b6..e8d199d5135a3893fc465e378f7c5067d0300a13 100644
--- a/src/ClientServer/Controllers/Core/SystemSettingsController.cs
+++ b/src/ClientServer/Controllers/Core/SystemSettingsController.cs
@@ -25,10 +25,7 @@ namespace ClientServer.Controllers.Core
         /// </summary>
         private static TestServerPublicSettings InvalidTestServerPublicSettings = new TestServerPublicSettings()
         {
-            MaxLinesToRead = -1,
-            MaxLinesToWrite = -1,
             HardTimeoutInMs = -1,
-            MaxErrLinesToRead = -1,
             MaxNumberOfTestsWithOneRequest = -1,
             HardMemoryLimitInKb = -1,
             HardDiskSpaceLimitInKb = -1,
@@ -530,8 +527,5 @@ namespace ClientServer.Controllers.Core
         public int HardDiskSpaceLimitInKb { get; set; }
 
         public int MaxNumberOfTestsWithOneRequest { get; set; }
-        public int MaxLinesToRead { get; set; }
-        public int MaxErrLinesToRead { get; set; }
-        public int MaxLinesToWrite { get; set; }
     }
 }
diff --git a/src/ClientServer/Controllers/Core/Testing/TestingController.cs b/src/ClientServer/Controllers/Core/Testing/TestingController.cs
index a71f5c5e3da3fd8b248be0fdfc19b5d1d0d21e9b..bcd0941c8249cd9a8d184e1368fd8d163118675c 100644
--- a/src/ClientServer/Controllers/Core/Testing/TestingController.cs
+++ b/src/ClientServer/Controllers/Core/Testing/TestingController.cs
@@ -607,11 +607,20 @@ namespace ClientServer.Controllers.Core.Testing
 
             AnswerTestFromTestServer testResult = testResults[0];
 
+            //in case the test-runner does not restrict this...
+            bool characterLimitExceeded = testResult.Protocol.Length > YapexDbContext.TestProtocolMaxStringLength;
+
+            if (characterLimitExceeded)
+            {
+                //cut last part
+                testResult.Protocol = testResult.Protocol.Substring(0, YapexDbContext.TestProtocolMaxStringLength);
+                testResult.CharacterLimitExceeded = true;
+            }
+                                           
             string[] protocol =
                 testResult.Protocol.Split(new string[] {Constants.TestProtocolSplitString},
                     StringSplitOptions.RemoveEmptyEntries);
 
-
             //and give user feedback
             var response = new TestAnswerFromBackend
             {
@@ -629,6 +638,8 @@ namespace ClientServer.Controllers.Core.Testing
                 TimeForUserProgram = testResult.TimeForUserProgram,
                 TimeoutInMsUsed = testResult.TimeoutInMsUsed,
                 CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed,
+                CharacterLimitExceeded = testResult.CharacterLimitExceeded,
+                CharacterLimitUsed = YapexDbContext.TestProtocolMaxStringLength
             };
 
 
@@ -1504,6 +1515,8 @@ namespace ClientServer.Controllers.Core.Testing
                         TimeForUserProgram = testResult.TimeForUserProgram,
                         TimeoutInMsUsed = testResult.TimeoutInMsUsed,
                         CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed,
+                        CharacterLimitExceeded = testResult.CharacterLimitExceeded,
+                        CharacterLimitUsed = testResult.CharacterLimitUsed,
                     };
 
                     _context.TestWithSingleSolutionAsTestResult.Add(oldResult);
@@ -1523,6 +1536,8 @@ namespace ClientServer.Controllers.Core.Testing
                     oldResult.TimeForUserProgram = testResult.TimeForUserProgram;
                     oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed;
                     oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed;
+                   oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded;
+                   oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed;
                 }
 
                 try
@@ -1839,6 +1854,8 @@ namespace ClientServer.Controllers.Core.Testing
                             TimeForUserProgram = testResult.TimeForUserProgram,
                             TimeoutInMsUsed = testResult.TimeoutInMsUsed,
                             CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed,
+                            CharacterLimitExceeded = testResult.CharacterLimitExceeded,
+                            CharacterLimitUsed = testResult.CharacterLimitUsed,
                         };
 
                         _context.TestWithAfterSolutionAsTestResults.Add(oldResult);
@@ -1858,6 +1875,8 @@ namespace ClientServer.Controllers.Core.Testing
                         oldResult.TimeForUserProgram = testResult.TimeForUserProgram;
                         oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed;
                         oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed;
+                       oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded;
+                       oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed;
                     }
 
                     try
@@ -2013,6 +2032,8 @@ namespace ClientServer.Controllers.Core.Testing
                             TimeForUserProgram = testResult.TimeForUserProgram,
                             TimeoutInMsUsed = testResult.TimeoutInMsUsed,
                             CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed,
+                            CharacterLimitExceeded = testResult.CharacterLimitExceeded,
+                            CharacterLimitUsed = testResult.CharacterLimitUsed,
                         };
 
                         _context.CustomTestWithAfterSolutionAsTestResults.Add(oldResult);
@@ -2032,6 +2053,8 @@ namespace ClientServer.Controllers.Core.Testing
                         oldResult.TimeForUserProgram = testResult.TimeForUserProgram;
                         oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed;
                         oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed;
+                        oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded;
+                        oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed;
                     }
 
                     try
@@ -2233,6 +2256,8 @@ namespace ClientServer.Controllers.Core.Testing
                         TimeForUserProgram = testResult.TimeForUserProgram,
                         TimeoutInMsUsed = testResult.TimeoutInMsUsed,
                         CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed,
+                        CharacterLimitExceeded = testResult.CharacterLimitExceeded,
+                        CharacterLimitUsed = testResult.CharacterLimitUsed,
                     };
 
                     _context.CustomTestWithSingleSolutionAsTestResult.Add(oldResult);
@@ -2252,6 +2277,8 @@ namespace ClientServer.Controllers.Core.Testing
                     oldResult.TimeForUserProgram = testResult.TimeForUserProgram;
                     oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed;
                     oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed;
+                    oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded;
+                    oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed;
                 }
 
                 try
@@ -2454,6 +2481,8 @@ namespace ClientServer.Controllers.Core.Testing
                         TimeForUserProgram = testResult.TimeForUserProgram,
                         TimeoutInMsUsed = testResult.TimeoutInMsUsed,
                         CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed,
+                        CharacterLimitExceeded = testResult.CharacterLimitExceeded,
+                        CharacterLimitUsed = testResult.CharacterLimitUsed
                     };
 
                     _context.CustomProjectTestWithSolutionAsTestResults.Add(oldResult);
@@ -2473,6 +2502,8 @@ namespace ClientServer.Controllers.Core.Testing
                     oldResult.TimeForUserProgram = testResult.TimeForUserProgram;
                     oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed;
                     oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed;
+                    oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded;
+                    oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed;
                 }
 
                 try
@@ -2975,6 +3006,16 @@ namespace ClientServer.Controllers.Core.Testing
                     return null;
                 }
 
+                //in case the test-runner does not restrict this...
+                bool characterLimitExceeded = testResult.Protocol.Length > YapexDbContext.TestProtocolMaxStringLength;
+
+                if (characterLimitExceeded)
+                {
+                    //cut last part
+                    testResult.Protocol = testResult.Protocol.Substring(0, YapexDbContext.TestProtocolMaxStringLength);
+                    testResult.CharacterLimitExceeded = true;
+                }
+                
                 string[] protocol =
                     testResult.Protocol.Split(new string[] {Constants.TestProtocolSplitString},
                         StringSplitOptions.RemoveEmptyEntries);
@@ -2996,6 +3037,8 @@ namespace ClientServer.Controllers.Core.Testing
                     TimeForUserProgram = testResult.TimeForUserProgram,
                     TimeoutInMsUsed = testResult.TimeoutInMsUsed,
                     CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed,
+                    CharacterLimitExceeded = testResult.CharacterLimitExceeded,
+                    CharacterLimitUsed = YapexDbContext.TestProtocolMaxStringLength
                 });
             }
 
@@ -3081,7 +3124,8 @@ namespace ClientServer.Controllers.Core.Testing
                         Hash = p.Hash
                     }).ToList(),
                 }).ToList(),
-                RequestDistinctionString = userId + "_" + nextSequentialNumber
+                RequestDistinctionString = userId + "_" + nextSequentialNumber,
+                CharacterLimitProtocol = YapexDbContext.TestProtocolMaxStringLength
             };
 
 
@@ -3440,6 +3484,13 @@ namespace ClientServer.Controllers.Core.Testing
         /// the tests to run
         /// </summary>
         public List<RunTestCommandDataForTestServer> Tests { get; set; }
+        
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// for the test result protocol
+        /// can be null for old results
+        /// </summary>
+        public int CharacterLimitProtocol { get; set; }
     }
 
     /// <summary>
@@ -3626,6 +3677,17 @@ namespace ClientServer.Controllers.Core.Testing
         /// can be null
         /// </summary>
         public string TestServerVersion { get; set; }
+        
+        /// <summary>
+        /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and
+        /// the <see cref="Protocol"/> was cut
+        /// </summary>
+        public bool CharacterLimitExceeded { get; set; }
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// can be null for old results
+        /// </summary>
+        public int? CharacterLimitUsed { get; set; }
     }
 
     public class AnswerTestFromTestServer : AnswerTestFromTestServerBase
@@ -3637,7 +3699,7 @@ namespace ClientServer.Controllers.Core.Testing
     }
 
     /// <summary>
-    /// the result from the test
+    /// the result from the test (what we send back to the frontend)
     /// </summary>
     public class TestAnswerFromBackend : AnswerTestFromTestServerBase
     {
diff --git a/src/ClientServer/Controllers/Core/Users/GroupController.cs b/src/ClientServer/Controllers/Core/Users/GroupController.cs
index f58fab2bab9500b4879cabf614bc725ebc968369..fb7537ccf8fb99c9879496e315a17de9e5655276 100644
--- a/src/ClientServer/Controllers/Core/Users/GroupController.cs
+++ b/src/ClientServer/Controllers/Core/Users/GroupController.cs
@@ -2,11 +2,9 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq.Expressions;
-using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using ClientServer.Db;
 using ClientServer.Helpers;
-using ClientServer.Migrations;
 using ClientServer.Models.Users;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
diff --git a/src/ClientServer/Controllers/Core/Users/UsersController.cs b/src/ClientServer/Controllers/Core/Users/UsersController.cs
index 04ab0e5b2a9d5de8f851303e6d5ad379cfff8174..2b1912099b3e5ad988d57e98fe75be497a0604cd 100644
--- a/src/ClientServer/Controllers/Core/Users/UsersController.cs
+++ b/src/ClientServer/Controllers/Core/Users/UsersController.cs
@@ -776,6 +776,17 @@ namespace ClientServer.Controllers.Core.Users
 
             //TODO MUST check if all custom tests and exercise solutions and group memberships gets deleted!!
 
+            var participationWhereExIsPermanentlyLockedCount = await _context.ExerciseReleaseWithUserAsParticipations
+                .CountAsync(p => p.UserId == userId && p.ExerciseRelease.Exercise.IsPermanentlyLocked)
+                ;
+
+            if (participationWhereExIsPermanentlyLockedCount > 0)
+            {
+                await
+                    Response.WriteAsync(Jc.Serialize(new BasicResponse(ResponseCode.InvalidRequest, "cannot delete user because he has participation(s) (solutions) für locked exercise(s)")));
+                return;
+            }
+
             
             //delete all exercises where the user is thw owner but the exercise is hidden... (because no one has access to this exercises)
 
diff --git a/src/ClientServer/Controllers/dashboard/DashboardController.cs b/src/ClientServer/Controllers/dashboard/DashboardController.cs
index 3827ce77609a19ec8df5c9268383072ef4633c56..94693f81bc8716eb8eb289c38b94afafff91bb6c 100644
--- a/src/ClientServer/Controllers/dashboard/DashboardController.cs
+++ b/src/ClientServer/Controllers/dashboard/DashboardController.cs
@@ -527,9 +527,6 @@ namespace ClientServer.Controllers
          */
         public int MaxParallelTests { get; set; }
         public int MaxNumberOfTestsWithOneRequest { get; set; }
-        public int MaxLinesToRead { get; set; }
-        public int MaxErrLinesToRead { get; set; }
-        public int MaxLinesToWrite { get; set; }
 
         public string DbServer { get; set; }
         public string DbName { get; set; }
diff --git a/src/ClientServer/Db/YapexDbContext.cs b/src/ClientServer/Db/YapexDbContext.cs
index 070af715497fad9906e6d2cde3b1cc5d86454fe9..01889b463adddaa840dcf273536003f4f23ab382 100644
--- a/src/ClientServer/Db/YapexDbContext.cs
+++ b/src/ClientServer/Db/YapexDbContext.cs
@@ -30,21 +30,23 @@ namespace ClientServer.Db
         ///
         /// this is not in constants because should not be changed...
         /// </summary>
-        public const int DefaultMaxStringLength = 500;
+        public const int DefaultMaxStringLength = 2000;
 
-        public const int DescriptionContentMaxStringLength = 10000;
+        public const int DescriptionContentMaxStringLength = 50000;
 
-        public const int FileContentMaxStringLength = 10000;
+        public const int FileContentMaxStringLength = 70000;
 
-        public const int TestContentMaxStringLength = 5000;
+        public const int TestContentMaxStringLength = 80000;
         
-        public const int TestProtocolMaxStringLength = TestContentMaxStringLength*2;
+        /// <summary>
+        /// add 100 bytes for some header stuff e.g. exit code, timeouts, ...
+        /// </summary>
+        public const int TestProtocolMaxStringLength = TestContentMaxStringLength*2 + 100;
 
-        public const int PathsMaxStringLength = 5000;
         /// <summary>
         /// also used for the server message
         /// </summary>
-        public const int NotesMaxStringLength = 1000;
+        public const int NotesMaxStringLength = 10000;
         
         
         /// <summary>
@@ -419,7 +421,7 @@ namespace ClientServer.Db
             //old fk ExerciseId1 --> delete...
             m.Entity<Exercise>()
                 .HasOne(p => p.MetaData)
-                .WithOne()
+                .WithOne(p => p.Exercise)
                 .HasForeignKey<MetaData>(p => p.ExerciseId)
                 .IsRequired()
                 .OnDelete(DeleteBehavior.Cascade)
diff --git a/src/ClientServer/Migrations/20160824181544_init.Designer.cs b/src/ClientServer/Migrations/20160824181544_init.Designer.cs
deleted file mode 100644
index 5d41f3e541ab86635425602bbf0f67c00d4c55fe..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160824181544_init.Designer.cs
+++ /dev/null
@@ -1,1324 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160824181544_init")]
-    partial class init
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("PLangId");
-
-                    b.Property<int>("ReleaseDurationType");
-
-                    b.Property<int>("ReleaseStartType");
-
-                    b.Property<DateTime?>("ReleasedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanExportExerciseResults");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("GroupRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("LdapUsers");
-                });
-
-            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");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    b.Property<bool>("CanChangeOtherUsersSystemRole");
-
-                    b.Property<bool>("CanChangeRoles");
-
-                    b.Property<bool>("CanChangeSystemSettings");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("LdapUserId");
-
-                    b.Property<string>("Password");
-
-                    b.Property<string>("StudentNumber");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("Token")
-                        .HasName("Unique_Token");
-
-                    b.HasIndex("LdapUserId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithMany()
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.User", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160827045350_init2.Designer.cs b/src/ClientServer/Migrations/20160827045350_init2.Designer.cs
deleted file mode 100644
index 510860bd0f932b2e040891395a497e60573d3084..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160827045350_init2.Designer.cs
+++ /dev/null
@@ -1,1326 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160827045350_init2")]
-    partial class init2
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("PLangId");
-
-                    b.Property<int>("ReleaseDurationType");
-
-                    b.Property<int>("ReleaseStartType");
-
-                    b.Property<DateTime?>("ReleasedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanExportExerciseResults");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("GroupRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("LdapUsers");
-                });
-
-            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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    b.Property<bool>("CanChangeOtherUsersSystemRole");
-
-                    b.Property<bool>("CanChangeRoles");
-
-                    b.Property<bool>("CanChangeSystemSettings");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("LdapUserId");
-
-                    b.Property<string>("Password");
-
-                    b.Property<string>("StudentNumber");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("Token")
-                        .HasName("Unique_Token");
-
-                    b.HasIndex("LdapUserId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithMany()
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.User", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160827045350_init2.cs b/src/ClientServer/Migrations/20160827045350_init2.cs
deleted file mode 100644
index 6628773fdc19dee61c12442595c3d9d699789fdf..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160827045350_init2.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class init2 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "UseWrapping",
-                table: "CodeEditorSettings",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "UseWrapping",
-                table: "CodeEditorSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20160831154002_userSettingsTheme.Designer.cs b/src/ClientServer/Migrations/20160831154002_userSettingsTheme.Designer.cs
deleted file mode 100644
index f736968c582d6aae015607d371add639ef9da10e..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160831154002_userSettingsTheme.Designer.cs
+++ /dev/null
@@ -1,1328 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160831154002_userSettingsTheme")]
-    partial class userSettingsTheme
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("PLangId");
-
-                    b.Property<int>("ReleaseDurationType");
-
-                    b.Property<int>("ReleaseStartType");
-
-                    b.Property<DateTime?>("ReleasedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanExportExerciseResults");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("GroupRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("LdapUsers");
-                });
-
-            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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    b.Property<bool>("CanChangeOtherUsersSystemRole");
-
-                    b.Property<bool>("CanChangeRoles");
-
-                    b.Property<bool>("CanChangeSystemSettings");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("LdapUserId");
-
-                    b.Property<string>("Password");
-
-                    b.Property<string>("StudentNumber");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("Token")
-                        .HasName("Unique_Token");
-
-                    b.HasIndex("LdapUserId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithMany()
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.User", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160831154002_userSettingsTheme.cs b/src/ClientServer/Migrations/20160831154002_userSettingsTheme.cs
deleted file mode 100644
index 435ea4da771ad38fd5ef80010ebf3dc31955a7b2..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160831154002_userSettingsTheme.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class userSettingsTheme : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "Theme",
-                table: "UserSettingses",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Theme",
-                table: "UserSettingses");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20160903141707_init4.Designer.cs b/src/ClientServer/Migrations/20160903141707_init4.Designer.cs
deleted file mode 100644
index c2eebf8b467f32d0f0d56926a7c6b87e8e42fb86..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160903141707_init4.Designer.cs
+++ /dev/null
@@ -1,1335 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160903141707_init4")]
-    partial class init4
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("PLangId");
-
-                    b.Property<int>("ReleaseDurationType");
-
-                    b.Property<int>("ReleaseStartType");
-
-                    b.Property<DateTime?>("ReleasedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanExportExerciseResults");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("GroupRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("LdapUsers");
-                });
-
-            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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    b.Property<bool>("CanChangeOtherUsersSystemRole");
-
-                    b.Property<bool>("CanChangeRoles");
-
-                    b.Property<bool>("CanChangeSystemSettings");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("LdapUserId");
-
-                    b.Property<string>("Password");
-
-                    b.Property<string>("StudentNumber");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("Token")
-                        .HasName("Unique_Token");
-
-                    b.HasIndex("LdapUserId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.User", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160903141707_init4.cs b/src/ClientServer/Migrations/20160903141707_init4.cs
deleted file mode 100644
index a5dbf2e57e4297d8753de05aa94fbbe9e69d87f0..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160903141707_init4.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class init4 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SolutionAssessment_SolutionVersionId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.AddColumn<bool>(
-                name: "HadAutomaticAssessmentErrors",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "HasAutomaticAssessmentFinished",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "HasAutomaticAssessmentStarted",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AlterColumn<int>(
-                name: "SolutionVersionId",
-                table: "SolutionAssessment",
-                nullable: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionAssessment_SolutionVersionId",
-                table: "SolutionAssessment",
-                column: "SolutionVersionId",
-                unique: true);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                table: "SolutionAssessment",
-                column: "SolutionVersionId",
-                principalTable: "SolutionVersions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SolutionAssessment_SolutionVersionId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropColumn(
-                name: "HadAutomaticAssessmentErrors",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropColumn(
-                name: "HasAutomaticAssessmentFinished",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropColumn(
-                name: "HasAutomaticAssessmentStarted",
-                table: "ExerciseReleases");
-
-            migrationBuilder.AlterColumn<int>(
-                name: "SolutionVersionId",
-                table: "SolutionAssessment",
-                nullable: false);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionAssessment_SolutionVersionId",
-                table: "SolutionAssessment",
-                column: "SolutionVersionId");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                table: "SolutionAssessment",
-                column: "SolutionVersionId",
-                principalTable: "SolutionVersions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20160906195429_init5.Designer.cs b/src/ClientServer/Migrations/20160906195429_init5.Designer.cs
deleted file mode 100644
index 780b52012245851559a4dd6b54af9ad92f8d1830..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160906195429_init5.Designer.cs
+++ /dev/null
@@ -1,1331 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160906195429_init5")]
-    partial class init5
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("PLangId");
-
-                    b.Property<int>("ReleaseDurationType");
-
-                    b.Property<int>("ReleaseStartType");
-
-                    b.Property<DateTime?>("ReleasedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("GroupRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("LdapUsers");
-                });
-
-            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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    b.Property<bool>("CanChangeOtherUsersSystemRole");
-
-                    b.Property<bool>("CanChangeRoles");
-
-                    b.Property<bool>("CanChangeSystemSettings");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("LdapUserId");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("Token")
-                        .HasName("Unique_Token");
-
-                    b.HasIndex("LdapUserId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.User", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160906195429_init5.cs b/src/ClientServer/Migrations/20160906195429_init5.cs
deleted file mode 100644
index 61c878e3a8b24a99eb793f057a3c6fe7cda01971..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160906195429_init5.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class init5 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "StudentNumber",
-                table: "Users");
-
-            migrationBuilder.DropColumn(
-                name: "CanExportExerciseResults",
-                table: "GroupRolePermissions");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "StudentNumber",
-                table: "Users",
-                nullable: true);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "CanExportExerciseResults",
-                table: "GroupRolePermissions",
-                nullable: false,
-                defaultValue: false);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20160921124646_final1.Designer.cs b/src/ClientServer/Migrations/20160921124646_final1.Designer.cs
deleted file mode 100644
index 77c1452f6b3d039357af8bc94df4768782dad437..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160921124646_final1.Designer.cs
+++ /dev/null
@@ -1,1358 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160921124646_final1")]
-    partial class final1
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .IsRequired();
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("ExternalId");
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160921124646_final1.cs b/src/ClientServer/Migrations/20160921124646_final1.cs
deleted file mode 100644
index 2eb749b5185c5c673e03f028e4b36885f4230b59..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160921124646_final1.cs
+++ /dev/null
@@ -1,165 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class final1 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_Users_LdapUsers_LdapUserId",
-                table: "Users");
-
-            migrationBuilder.DropIndex(
-                name: "IX_Users_LdapUserId",
-                table: "Users");
-
-            migrationBuilder.DropColumn(
-                name: "LdapUserId",
-                table: "Users");
-
-            migrationBuilder.DropTable(
-                name: "LdapUsers");
-
-            migrationBuilder.CreateTable(
-                name: "ExternalUsers",
-                columns: table => new
-                {
-                    ExternalId = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    Email = table.Column<string>(nullable: true),
-                    FirstName = table.Column<string>(nullable: true),
-                    LastName = table.Column<string>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    NeedToRefreshData = table.Column<bool>(nullable: false),
-                    Token = table.Column<string>(nullable: true),
-                    UserId = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_ExternalUsers", x => x.ExternalId);
-                    table.ForeignKey(
-                        name: "FK_ExternalUsers_Users_UserId",
-                        column: x => x.UserId,
-                        principalTable: "Users",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.AddColumn<bool>(
-                name: "CanChangeUserData",
-                table: "SystemRolePermissions",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<string>(
-                name: "HtmlColor",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "HtmlIcon",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "RunAlsoNormalTests",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "ShouldAutomaticAssessSubmissions",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tags",
-                nullable: false);
-
-            migrationBuilder.AddUniqueConstraint(
-                name: "Unique_Tag",
-                table: "Tags",
-                column: "DisplayName");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ExternalUsers_UserId",
-                table: "ExternalUsers",
-                column: "UserId",
-                unique: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropUniqueConstraint(
-                name: "Unique_Tag",
-                table: "Tags");
-
-            migrationBuilder.DropColumn(
-                name: "CanChangeUserData",
-                table: "SystemRolePermissions");
-
-            migrationBuilder.DropColumn(
-                name: "HtmlColor",
-                table: "Tags");
-
-            migrationBuilder.DropColumn(
-                name: "HtmlIcon",
-                table: "Tags");
-
-            migrationBuilder.DropColumn(
-                name: "RunAlsoNormalTests",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropColumn(
-                name: "ShouldAutomaticAssessSubmissions",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropTable(
-                name: "ExternalUsers");
-
-            migrationBuilder.CreateTable(
-                name: "LdapUsers",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_LdapUsers", x => x.Id);
-                });
-
-            migrationBuilder.AddColumn<int>(
-                name: "LdapUserId",
-                table: "Users",
-                nullable: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Users_LdapUserId",
-                table: "Users",
-                column: "LdapUserId",
-                unique: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Users_LdapUsers_LdapUserId",
-                table: "Users",
-                column: "LdapUserId",
-                principalTable: "LdapUsers",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20160921130105_final2.Designer.cs b/src/ClientServer/Migrations/20160921130105_final2.Designer.cs
deleted file mode 100644
index 014db0dc98e74e6c5b7593ec50f8e8fae7a1c80e..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160921130105_final2.Designer.cs
+++ /dev/null
@@ -1,1358 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160921130105_final2")]
-    partial class final2
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .IsRequired();
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("ExternalId");
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160921130105_final2.cs b/src/ClientServer/Migrations/20160921130105_final2.cs
deleted file mode 100644
index 70817d2f5b6ca6881b7a57c78c8bf413fe75ac0a..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160921130105_final2.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    
-    public partial class final2 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            //added SolutionVersion.Solution back property...
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20160921155214_final3.Designer.cs b/src/ClientServer/Migrations/20160921155214_final3.Designer.cs
deleted file mode 100644
index 246c6dbdb372b84ec03770dacc0d2707261a9644..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160921155214_final3.Designer.cs
+++ /dev/null
@@ -1,1358 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160921155214_final3")]
-    partial class final3
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .IsRequired();
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token");
-
-                    b.Property<int>("UserId");
-
-                    b.HasKey("ExternalId");
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160921155214_final3.cs b/src/ClientServer/Migrations/20160921155214_final3.cs
deleted file mode 100644
index d2f9564993b23dee3aed38fe2898cb9def6fc74d..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160921155214_final3.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class final3 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "UserId",
-                table: "ExternalUsers",
-                nullable: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "UserId",
-                table: "ExternalUsers",
-                nullable: true);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20160923095756_final4.Designer.cs b/src/ClientServer/Migrations/20160923095756_final4.Designer.cs
deleted file mode 100644
index ffa5752a05a2f414acc6db5666d55819e7833470..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160923095756_final4.Designer.cs
+++ /dev/null
@@ -1,1362 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20160923095756_final4")]
-    partial class final4
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .IsRequired();
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20160923095756_final4.cs b/src/ClientServer/Migrations/20160923095756_final4.cs
deleted file mode 100644
index 2279b2c2066408eaf00afdb9f19a2cc03506ad88..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20160923095756_final4.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class final4 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<string>(
-                name: "Token",
-                table: "ExternalUsers",
-                nullable: false);
-
-            migrationBuilder.AddUniqueConstraint(
-                name: "Unique_ExternalToken",
-                table: "ExternalUsers",
-                column: "Token");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropUniqueConstraint(
-                name: "Unique_ExternalToken",
-                table: "ExternalUsers");
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Token",
-                table: "ExternalUsers",
-                nullable: true);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20161001124636_tagPermission.Designer.cs b/src/ClientServer/Migrations/20161001124636_tagPermission.Designer.cs
deleted file mode 100644
index 6f478532e5d1e8c2d3c99033ecb1945dc5ec0d1a..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161001124636_tagPermission.Designer.cs
+++ /dev/null
@@ -1,1364 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20161001124636_tagPermission")]
-    partial class tagPermission
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .IsRequired();
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasAlternateKey("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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20161001124636_tagPermission.cs b/src/ClientServer/Migrations/20161001124636_tagPermission.cs
deleted file mode 100644
index 47a7dfb23817bc9f95c279ce15fe50125f88a3eb..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161001124636_tagPermission.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class tagPermission : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "CanManageTags",
-                table: "SystemRolePermissions",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CanManageTags",
-                table: "SystemRolePermissions");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20161001140957_tagDisplayName2.Designer.cs b/src/ClientServer/Migrations/20161001140957_tagDisplayName2.Designer.cs
deleted file mode 100644
index 6bc42092c633614c5d7a7b42504422615fb74212..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161001140957_tagDisplayName2.Designer.cs
+++ /dev/null
@@ -1,1363 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20161001140957_tagDisplayName2")]
-    partial class tagDisplayName2
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .HasForeignKey("TagId");
-                });
-
-            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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20161001140957_tagDisplayName2.cs b/src/ClientServer/Migrations/20161001140957_tagDisplayName2.cs
deleted file mode 100644
index 02bdb8631f718b0dca4c15185a3fbaf5c68ebc36..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161001140957_tagDisplayName2.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class tagDisplayName2 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropUniqueConstraint(
-                name: "Unique_Tag",
-                table: "Tags");
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.CreateIndex(
-                name: "Unique_Tag",
-                table: "Tags",
-                column: "DisplayName");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropIndex(
-                name: "Unique_Tag",
-                table: "Tags");
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tags",
-                nullable: false);
-
-            migrationBuilder.AddUniqueConstraint(
-                name: "Unique_Tag",
-                table: "Tags",
-                column: "DisplayName");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20161001142650_deleteTagCascade.Designer.cs b/src/ClientServer/Migrations/20161001142650_deleteTagCascade.Designer.cs
deleted file mode 100644
index 9f6ba7791ad283a90dccb1b735d282a5106a0a64..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161001142650_deleteTagCascade.Designer.cs
+++ /dev/null
@@ -1,1364 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20161001142650_deleteTagCascade")]
-    partial class deleteTagCascade
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20161001142650_deleteTagCascade.cs b/src/ClientServer/Migrations/20161001142650_deleteTagCascade.cs
deleted file mode 100644
index b95489f16539068ec1c6cdefd6c4dde60f5523aa..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161001142650_deleteTagCascade.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class deleteTagCascade : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_TagWithMetaDatas_Tags_TagId",
-                table: "TagWithMetaDatas");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_TagWithMetaDatas_Tags_TagId",
-                table: "TagWithMetaDatas",
-                column: "TagId",
-                principalTable: "Tags",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_TagWithMetaDatas_Tags_TagId",
-                table: "TagWithMetaDatas");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_TagWithMetaDatas_Tags_TagId",
-                table: "TagWithMetaDatas",
-                column: "TagId",
-                principalTable: "Tags",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.Designer.cs b/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.Designer.cs
deleted file mode 100644
index c1562370fa54590346eb79cc604a47b7604c5ecd..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.Designer.cs
+++ /dev/null
@@ -1,1366 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20161220124855_ExerciseAddedNote")]
-    partial class ExerciseAddedNote
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("PLangs");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b =>
-                {
-                    b.Property<int>("ExternalId")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Email");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20161220124855_ExerciseAddedNote.cs b/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.cs
deleted file mode 100644
index d66bf78cb13915447d6956ae8dff2c2450869711..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ExerciseAddedNote : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "Note",
-                table: "Exercises",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Note",
-                table: "Exercises");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20170112222129_authTokens.Designer.cs b/src/ClientServer/Migrations/20170112222129_authTokens.Designer.cs
deleted file mode 100644
index 231bf298fb058d1d428092ea905da47c6271cbe7..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20170112222129_authTokens.Designer.cs
+++ /dev/null
@@ -1,1396 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20170112222129_authTokens")]
-    partial class authTokens
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    b.HasKey("UserId");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20170112222129_authTokens.cs b/src/ClientServer/Migrations/20170112222129_authTokens.cs
deleted file mode 100644
index e6e0725fad87bd12fee2032fe968f168a5701d90..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20170112222129_authTokens.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class authTokens : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "AuthTokens",
-                columns: table => new
-                {
-                    UserId = table.Column<int>(nullable: false),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    ExpirationDateTime = table.Column<DateTime>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    RandomSecret = table.Column<string>(nullable: true),
-                    UserAuthToken = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AuthTokens", x => x.UserId);
-                    table.ForeignKey(
-                        name: "FK_AuthTokens_Users_UserId",
-                        column: x => x.UserId,
-                        principalTable: "Users",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AuthTokens_UserId",
-                table: "AuthTokens",
-                column: "UserId",
-                unique: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "AuthTokens");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20170307190625_lang.Designer.cs b/src/ClientServer/Migrations/20170307190625_lang.Designer.cs
deleted file mode 100644
index 5d11ad759fd4dcb1b3f474742490268095c18fa8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20170307190625_lang.Designer.cs
+++ /dev/null
@@ -1,1398 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20170307190625_lang")]
-    partial class lang
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    b.HasKey("UserId");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20170307190625_lang.cs b/src/ClientServer/Migrations/20170307190625_lang.cs
deleted file mode 100644
index 275187a9b0923ec622b1ff0dd3f3169f648d1aa0..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20170307190625_lang.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class lang : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "LangShortcut",
-                table: "Langs",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "LangShortcut",
-                table: "Langs");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.Designer.cs b/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.Designer.cs
deleted file mode 100755
index 653a853e42874998cda52cbe84e5c60b504e3265..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.Designer.cs
+++ /dev/null
@@ -1,1400 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20171009190359_tagBackgroundColor")]
-    partial class tagBackgroundColor
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    b.HasKey("UserId");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171009190359_tagBackgroundColor.cs b/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.cs
deleted file mode 100755
index acaa34906446b361b69b8d0a180fbb716beac375..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class tagBackgroundColor : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "HtmlBackgroundColor",
-                table: "Tags",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "HtmlBackgroundColor",
-                table: "Tags");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171009191709_tagDescription.Designer.cs b/src/ClientServer/Migrations/20171009191709_tagDescription.Designer.cs
deleted file mode 100755
index 7be5ef637c8ff1ac7c6e0b427cc27b9b0724fa63..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171009191709_tagDescription.Designer.cs
+++ /dev/null
@@ -1,1402 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20171009191709_tagDescription")]
-    partial class tagDescription
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    b.HasKey("UserId");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171009191709_tagDescription.cs b/src/ClientServer/Migrations/20171009191709_tagDescription.cs
deleted file mode 100755
index 74ee3974dcbfda225749c6a0e2ebe01d7b794349..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171009191709_tagDescription.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class tagDescription : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "Description",
-                table: "Tags",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Description",
-                table: "Tags");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171012120923_tutorFreedback.Designer.cs b/src/ClientServer/Migrations/20171012120923_tutorFreedback.Designer.cs
deleted file mode 100644
index 5a2a67911cc145ed982e583d50bdc4297012ae67..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171012120923_tutorFreedback.Designer.cs
+++ /dev/null
@@ -1,1404 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20171012120923_tutorFreedback")]
-    partial class tutorFreedback
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    b.HasKey("UserId");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171012120923_tutorFreedback.cs b/src/ClientServer/Migrations/20171012120923_tutorFreedback.cs
deleted file mode 100644
index 010087b3dd4800e780498b4acfd259a0910129f8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171012120923_tutorFreedback.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class tutorFreedback : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.RenameColumn(
-                name: "Note",
-                table: "SolutionAssessment",
-                newName:"NoteForOtherTutors");
-
-            migrationBuilder.AddColumn<string>(
-                name: "FeedbackForStudent",
-                table: "SolutionAssessment",
-                nullable: true);
-
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "FeedbackForStudent",
-                table: "SolutionAssessment");
-
-            migrationBuilder.RenameColumn(
-                name: "NoteForOtherTutors",
-                table: "SolutionAssessment",
-                newName: "Note");
-
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.Designer.cs b/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.Designer.cs
deleted file mode 100644
index b735cabc6df160bcba97c2e56d4d2e04fb67b08e..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.Designer.cs
+++ /dev/null
@@ -1,1404 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20171015132006_enabledNullableAssessmentPoints")]
-    partial class enabledNullableAssessmentPoints
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    b.HasKey("UserId");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171015132006_enabledNullableAssessmentPoints.cs b/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.cs
deleted file mode 100644
index 5d982fbac5a5cc26737d2bf970e00a0466071b7e..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class enabledNullableAssessmentPoints : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "SubmitTestPoints",
-                table: "SolutionAssessment",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<int>(
-                name: "NormalTestPoints",
-                table: "SolutionAssessment",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "SubmitTestPoints",
-                table: "SolutionAssessment",
-                nullable: false);
-
-            migrationBuilder.AlterColumn<int>(
-                name: "NormalTestPoints",
-                table: "SolutionAssessment",
-                nullable: false);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.Designer.cs b/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.Designer.cs
deleted file mode 100755
index c7da8f51bf5bc9708b0dbe48cfc43f0db61d4566..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.Designer.cs
+++ /dev/null
@@ -1,1407 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using ClientServer.Db;
-
-namespace ClientServer.Migrations
-{
-    [DbContext(typeof(YapexDbContext))]
-    [Migration("20171025160923_uniqueAuthToken")]
-    partial class uniqueAuthToken
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-            modelBuilder
-                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
-
-            modelBuilder.Entity("ClientServer.Models.AwaitDummy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.HasKey("Id");
-
-                    b.ToTable("AwaitDummies");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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.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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171025160923_uniqueAuthToken.cs b/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.cs
deleted file mode 100755
index e30ae1012f2a8850e22344282f982c11a6f8f9f8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class uniqueAuthToken : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateIndex(
-                name: "IX_AuthTokens_UserAuthToken",
-                table: "AuthTokens",
-                column: "UserAuthToken",
-                unique: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropIndex(
-                name: "IX_AuthTokens_UserAuthToken",
-                table: "AuthTokens");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.Designer.cs b/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.Designer.cs
deleted file mode 100755
index 86ecc3c5d79a8ead2221189d60c6fad91a9e2cc4..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.Designer.cs
+++ /dev/null
@@ -1,1410 +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("20171106184650_participationShouldNotCount")]
-    partial class participationShouldNotCount
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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("TagWithMetaDatas")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171106184650_participationShouldNotCount.cs b/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.cs
deleted file mode 100755
index da909c14bd8e5d656c01b5d53ea1938758222fcb..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class participationShouldNotCount : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "ShouldNotCount",
-                table: "ExerciseReleaseWithUserAsParticipations",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "ShouldNotCount",
-                table: "ExerciseReleaseWithUserAsParticipations");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171109144627_customProjects.Designer.cs b/src/ClientServer/Migrations/20171109144627_customProjects.Designer.cs
deleted file mode 100755
index 8d11c6d5f790ec29a0b91c6e2e3117e7e0b82a40..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171109144627_customProjects.Designer.cs
+++ /dev/null
@@ -1,1685 +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("20171109144627_customProjects")]
-    partial class customProjects
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171109144627_customProjects.cs b/src/ClientServer/Migrations/20171109144627_customProjects.cs
deleted file mode 100755
index 7c6f2d24b7821f32f8f4b84088754ae389511f87..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171109144627_customProjects.cs
+++ /dev/null
@@ -1,347 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class customProjects : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "CustomProjects",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    LastEditorPLangId = table.Column<int>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    UserId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjects", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_CustomProjects_Users_UserId",
-                        column: x => x.UserId,
-                        principalTable: "Users",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectDescriptions",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<string>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    CustomProjectId = table.Column<int>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectDescriptions", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectDescriptions_CustomProjects_CustomProjectId",
-                        column: x => x.CustomProjectId,
-                        principalTable: "CustomProjects",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectTests",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<string>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    CustomProjectId = table.Column<int>(nullable: false),
-                    DisplayIndex = table.Column<int>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    TestSettingsId = table.Column<int>(nullable: false),
-                    TestTypeId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectTests", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTests_CustomProjects_CustomProjectId",
-                        column: x => x.CustomProjectId,
-                        principalTable: "CustomProjects",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTests_TestCaseSettingses_TestSettingsId",
-                        column: x => x.TestSettingsId,
-                        principalTable: "TestCaseSettingses",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTests_TestTypes_TestTypeId",
-                        column: x => x.TestTypeId,
-                        principalTable: "TestTypes",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectTestAssets",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<byte[]>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    CustomProjectTestId = table.Column<int>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectTestAssets", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTestAssets_CustomProjectTests_CustomProjectTestId",
-                        column: x => x.CustomProjectTestId,
-                        principalTable: "CustomProjectTests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectSolutions",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    CustomProjectId = table.Column<int>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MainFileId = table.Column<int>(nullable: true),
-                    PLangId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectSolutions", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId",
-                        column: x => x.CustomProjectId,
-                        principalTable: "CustomProjects",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectSolutions_PLangs_PLangId",
-                        column: x => x.PLangId,
-                        principalTable: "PLangs",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectSolutionFiles",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<string>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    CustomProjectSolutionId = table.Column<int>(nullable: false),
-                    DisplayIndex = table.Column<int>(nullable: false),
-                    FileNameWithExtension = table.Column<string>(nullable: true),
-                    IsDisplayed = table.Column<bool>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectSolutionFiles", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectSolutionFiles_CustomProjectSolutions_CustomProjectSolutionId",
-                        column: x => x.CustomProjectSolutionId,
-                        principalTable: "CustomProjectSolutions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectTestWithSolutionAsTestResults",
-                columns: table => new
-                {
-                    CustomProjectSolutionId = table.Column<int>(nullable: false),
-                    CustomProjectTestId = table.Column<int>(nullable: false),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    HasCompiled = table.Column<bool>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Passed = table.Column<bool>(nullable: true),
-                    ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectTestWithSolutionAsTestResults", x => new { x.CustomProjectSolutionId, x.CustomProjectTestId });
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutions_CustomProjectSolutionId",
-                        column: x => x.CustomProjectSolutionId,
-                        principalTable: "CustomProjectSolutions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectTests_CustomProjectTestId",
-                        column: x => x.CustomProjectTestId,
-                        principalTable: "CustomProjectTests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.AddColumn<int>(
-                name: "MaxCustomProjectsPerUser",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 10);
-
-            migrationBuilder.AddColumn<int>(
-                name: "CustomProjectDescriptionId",
-                table: "Assets",
-                nullable: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Assets_CustomProjectDescriptionId",
-                table: "Assets",
-                column: "CustomProjectDescriptionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjects_UserId",
-                table: "CustomProjects",
-                column: "UserId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectDescriptions_CustomProjectId",
-                table: "CustomProjectDescriptions",
-                column: "CustomProjectId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectSolutions_CustomProjectId",
-                table: "CustomProjectSolutions",
-                column: "CustomProjectId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectSolutions_MainFileId",
-                table: "CustomProjectSolutions",
-                column: "MainFileId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectSolutions_PLangId",
-                table: "CustomProjectSolutions",
-                column: "PLangId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectSolutionFiles_CustomProjectSolutionId",
-                table: "CustomProjectSolutionFiles",
-                column: "CustomProjectSolutionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTests_CustomProjectId",
-                table: "CustomProjectTests",
-                column: "CustomProjectId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTests_TestSettingsId",
-                table: "CustomProjectTests",
-                column: "TestSettingsId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTests_TestTypeId",
-                table: "CustomProjectTests",
-                column: "TestTypeId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTestAssets_CustomProjectTestId",
-                table: "CustomProjectTestAssets",
-                column: "CustomProjectTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutionId",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                column: "CustomProjectSolutionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectTestId",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                column: "CustomProjectTestId");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Assets_CustomProjectDescriptions_CustomProjectDescriptionId",
-                table: "Assets",
-                column: "CustomProjectDescriptionId",
-                principalTable: "CustomProjectDescriptions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId",
-                table: "CustomProjectSolutions",
-                column: "MainFileId",
-                principalTable: "CustomProjectSolutionFiles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_Assets_CustomProjectDescriptions_CustomProjectDescriptionId",
-                table: "Assets");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId",
-                table: "CustomProjectSolutions");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId",
-                table: "CustomProjectSolutions");
-
-            migrationBuilder.DropIndex(
-                name: "IX_Assets_CustomProjectDescriptionId",
-                table: "Assets");
-
-            migrationBuilder.DropColumn(
-                name: "MaxCustomProjectsPerUser",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "CustomProjectDescriptionId",
-                table: "Assets");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjectDescriptions");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjectTestAssets");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjectTestWithSolutionAsTestResults");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjectTests");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjects");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjectSolutionFiles");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjectSolutions");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.Designer.cs b/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.Designer.cs
deleted file mode 100755
index 2123e897aa535372cd26bf8698990a74380b8a82..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.Designer.cs
+++ /dev/null
@@ -1,1687 +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("20171110153042_customProjectTestsWeights")]
-    partial class customProjectTestsWeights
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171110153042_customProjectTestsWeights.cs b/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.cs
deleted file mode 100755
index 3b0e7d201c51cb55d3307636b9f402bc68a0daf5..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class customProjectTestsWeights : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "Weight",
-                table: "CustomProjectTests",
-                nullable: false,
-                defaultValue: 0);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Weight",
-                table: "CustomProjectTests");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.Designer.cs b/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.Designer.cs
deleted file mode 100755
index 6a2a60bd39b78514c30f453df14ea09cf1c72889..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.Designer.cs
+++ /dev/null
@@ -1,1689 +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("20171229135558_dashboardSystemRolePermission")]
-    partial class dashboardSystemRolePermission
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20171229135558_dashboardSystemRolePermission.cs b/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.cs
deleted file mode 100755
index 60d459d1e1f5fe76c0f3eea3603a5066e7f620e6..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class dashboardSystemRolePermission : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "CanViewDashboard",
-                table: "SystemRolePermissions",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CanViewDashboard",
-                table: "SystemRolePermissions");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.Designer.cs b/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.Designer.cs
deleted file mode 100755
index 4e5dcc8c74cb1fc8cda258ca522854722551b557..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.Designer.cs
+++ /dev/null
@@ -1,1693 +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("20180214130057_ReleaseEExamOptions")]
-    partial class ReleaseEExamOptions
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180214130057_ReleaseEExamOptions.cs b/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.cs
deleted file mode 100755
index a43fdbfebd9aeb2792105c09b9b3d853b483aafe..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ReleaseEExamOptions : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "HideInOverviews",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "ShouldClearClipboard",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "HideInOverviews",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropColumn(
-                name: "ShouldClearClipboard",
-                table: "ExerciseReleases");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.Designer.cs b/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.Designer.cs
deleted file mode 100755
index 270ddcd9649fbd636d188351d89b59fddc7d2fe2..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.Designer.cs
+++ /dev/null
@@ -1,1695 +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("20180215112957_ReleaseHideSiteHeaderBar")]
-    partial class ReleaseHideSiteHeaderBar
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.HasKey("Id");
-
-                    b.HasAlternateKey("GeneratedCode")
-                        .HasName("Unique_GeneratedCode");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("PLangId");
-
-                    b.ToTable("ExerciseReleases");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180215112957_ReleaseHideSiteHeaderBar.cs b/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.cs
deleted file mode 100755
index 8b22758cd67ab0e0dc23067d5bbd22c2ee86845a..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ReleaseHideSiteHeaderBar : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "HideSiteHeaderBar",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "HideSiteHeaderBar",
-                table: "ExerciseReleases");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.Designer.cs b/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.Designer.cs
deleted file mode 100755
index 92d3d409a9201e64c5b9f3f766c735c022e56f85..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.Designer.cs
+++ /dev/null
@@ -1,1789 +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("20180912160339_removeSolutionVersion1")]
-    partial class removeSolutionVersion1
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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?>("HasCompiled");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("CustomTestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SolutionExerciseReleaseId");
-
-                    b.Property<int>("SolutionPLangId");
-
-                    b.Property<int>("SolutionUserId");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            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?>("HasCompiled");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("TestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("TestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.PLang", "PLang")
-                        .WithMany()
-                        .HasForeignKey("PLangId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile")
-                        .WithMany("SolutionParts")
-                        .HasForeignKey("TemplateFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .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.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180912160339_removeSolutionVersion1.cs b/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.cs
deleted file mode 100755
index 4da9dabaad53764658b2e185646fc1e3242021af..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class removeSolutionVersion1 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "CustomTestWithSingleSolutionAsTestResult",
-                columns: table => new
-                {
-                    CustomTestId = table.Column<int>(nullable: false),
-                    SolutionUserId = table.Column<int>(nullable: false),
-                    SolutionExerciseReleaseId = table.Column<int>(nullable: false),
-                    SolutionPLangId = table.Column<int>(nullable: false),
-                    HasCompiled = table.Column<bool>(nullable: true),
-                    Passed = table.Column<bool>(nullable: true),
-                    ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomTestWithSingleSolutionAsTestResult", x => new { x.CustomTestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId });
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithSingleSolutionAsTestResult_CustomTest_CustomTestId",
-                        column: x => x.CustomTestId,
-                        principalTable: "CustomTest",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
-                        principalTable: "Solutions",
-                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "TestWithSingleSolutionAsTestResult",
-                columns: table => new
-                {
-                    TestId = table.Column<int>(nullable: false),
-                    SolutionUserId = table.Column<int>(nullable: false),
-                    SolutionExerciseReleaseId = table.Column<int>(nullable: false),
-                    SolutionPLangId = table.Column<int>(nullable: false),
-                    HasCompiled = table.Column<bool>(nullable: true),
-                    Passed = table.Column<bool>(nullable: true),
-                    ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_TestWithSingleSolutionAsTestResult", x => new { x.TestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId });
-                    table.ForeignKey(
-                        name: "FK_TestWithSingleSolutionAsTestResult_Tests_TestId",
-                        column: x => x.TestId,
-                        principalTable: "Tests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_TestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
-                        principalTable: "Solutions",
-                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.AddColumn<int>(
-                name: "SolutionExerciseReleaseId",
-                table: "SolutionFiles",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "SolutionPLangId",
-                table: "SolutionFiles",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "SolutionUserId",
-                table: "SolutionFiles",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "MainFileId",
-                table: "Solutions",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "Note",
-                table: "Solutions",
-                nullable: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithSingleSolutionAsTestResult_CustomTestId",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                column: "CustomTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestWithSingleSolutionAsTestResult_TestId",
-                table: "TestWithSingleSolutionAsTestResult",
-                column: "TestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "TestWithSingleSolutionAsTestResult",
-                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "SolutionExerciseReleaseId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropColumn(
-                name: "SolutionPLangId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropColumn(
-                name: "SolutionUserId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropColumn(
-                name: "MainFileId",
-                table: "Solutions");
-
-            migrationBuilder.DropColumn(
-                name: "Note",
-                table: "Solutions");
-
-            migrationBuilder.DropTable(
-                name: "CustomTestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropTable(
-                name: "TestWithSingleSolutionAsTestResult");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.Designer.cs b/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.Designer.cs
deleted file mode 100755
index bcd52bea73390cb856e08960603b201fd21bf2b4..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.Designer.cs
+++ /dev/null
@@ -1,1804 +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("20180912171554_removeSolutionVersion2")]
-    partial class removeSolutionVersion2
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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?>("HasCompiled");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("CustomTestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SolutionExerciseReleaseId");
-
-                    b.Property<int>("SolutionPLangId");
-
-                    b.Property<int>("SolutionUserId");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            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?>("HasCompiled");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("TestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("TestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .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.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180912171554_removeSolutionVersion2.cs b/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.cs
deleted file mode 100755
index 044d01e8c20acd0ed253b230ffcabc4d9c75417d..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class removeSolutionVersion2 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionFiles_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "SolutionFiles",
-                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Solutions_MainFileId",
-                table: "Solutions",
-                column: "MainFileId",
-                unique: true);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Solutions_SolutionFiles_MainFileId",
-                table: "Solutions",
-                column: "MainFileId",
-                principalTable: "SolutionFiles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "SolutionFiles",
-                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" },
-                principalTable: "Solutions",
-                principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                onDelete: ReferentialAction.Cascade);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_Solutions_SolutionFiles_MainFileId",
-                table: "Solutions");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SolutionFiles_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropIndex(
-                name: "IX_Solutions_MainFileId",
-                table: "Solutions");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.Designer.cs b/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.Designer.cs
deleted file mode 100755
index 17ca2ddedf9f196e5cb2f8aa9905223b7181c1c6..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.Designer.cs
+++ /dev/null
@@ -1,1812 +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("20180912182512_removeSolutionVersion3")]
-    partial class removeSolutionVersion3
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("CustomTestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomTestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomTestId", "SolutionVersionId");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.ToTable("CustomTestWithSolutionAsTestResults");
-                });
-
-            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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<int>("MainSolutionVersionid");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SolutionVersionId");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId")
-                        .IsUnique();
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    b.Property<bool>("IsDisplayed");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SolutionExerciseReleaseId");
-
-                    b.Property<int>("SolutionPLangId");
-
-                    b.Property<int>("SolutionUserId");
-
-                    b.Property<int?>("SolutionVersionId")
-                        .IsRequired();
-
-                    b.Property<int?>("TemplateFileId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TemplateFileId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionFiles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.Property<int?>("SolutionExerciseReleaseId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionPLangId")
-                        .IsRequired();
-
-                    b.Property<int?>("SolutionUserId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("MainFileId")
-                        .IsUnique();
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("SolutionVersions");
-                });
-
-            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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.HasIndex("TestId");
-
-                    b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId");
-
-                    b.ToTable("TestWithSingleSolutionAsTestResult");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("TestId");
-
-                    b.Property<int>("SolutionVersionId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "SolutionVersionId");
-
-                    b.HasIndex("SolutionVersionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Description");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxSolutionVersionsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.CustomTestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest")
-                        .WithMany("TestResults")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("CustomTestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionVersion", "SolutionVersion")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion")
-                        .WithMany("SolutionFiles")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SolutionVersion", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution")
-                        .WithMany("SolutionVersions")
-                        .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.Solution.TestWithSolutionAsTestResult", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion")
-                        .WithMany("TestResults")
-                        .HasForeignKey("SolutionVersionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test")
-                        .WithMany("TestResults")
-                        .HasForeignKey("TestId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180912182512_removeSolutionVersion3.cs b/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.cs
deleted file mode 100755
index 3acde87fcd39b30d80b5a4021ee91d81b57b6509..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class removeSolutionVersion3 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<DateTime>(
-                name: "CreatedAt",
-                table: "TestWithSingleSolutionAsTestResult",
-                nullable: false,
-                defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
-
-            migrationBuilder.AddColumn<DateTime>(
-                name: "LastUpdatedAt",
-                table: "TestWithSingleSolutionAsTestResult",
-                nullable: false,
-                defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
-
-            migrationBuilder.AddColumn<DateTime>(
-                name: "CreatedAt",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                nullable: false,
-                defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
-
-            migrationBuilder.AddColumn<DateTime>(
-                name: "LastUpdatedAt",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                nullable: false,
-                defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CreatedAt",
-                table: "TestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "LastUpdatedAt",
-                table: "TestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "CreatedAt",
-                table: "CustomTestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "LastUpdatedAt",
-                table: "CustomTestWithSingleSolutionAsTestResult");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.Designer.cs b/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.Designer.cs
deleted file mode 100755
index 2d1b9cece3050d8069f0c2ecb96d18756b571eb3..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.Designer.cs
+++ /dev/null
@@ -1,1656 +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("20180913125543_removeSolutionVersion4")]
-    partial class removeSolutionVersion4
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToMe");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanChangeOtherMembersRole");
-
-                    b.Property<bool>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180913125543_removeSolutionVersion4.cs b/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.cs
deleted file mode 100755
index defa883b4ad394dd55cddf80363d41e5e3cb39b4..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.cs
+++ /dev/null
@@ -1,230 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class removeSolutionVersion4 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SolutionFiles_SolutionVersionId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropIndex(
-                name: "IX_SolutionAssessment_SolutionVersionId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropColumn(
-                name: "MaxSolutionVersionsPerUser",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "SolutionVersionId",
-                table: "SolutionFiles");
-
-            migrationBuilder.DropColumn(
-                name: "SolutionVersionId",
-                table: "SolutionAssessment");
-
-            migrationBuilder.DropColumn(
-                name: "MainSolutionVersionid",
-                table: "Solutions");
-
-            migrationBuilder.DropTable(
-                name: "CustomTestWithSolutionAsTestResults");
-
-            migrationBuilder.DropTable(
-                name: "TestResults");
-
-            migrationBuilder.DropTable(
-                name: "SolutionVersions");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "SolutionVersions",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MainFileId = table.Column<int>(nullable: true),
-                    Note = table.Column<string>(nullable: true),
-                    SolutionExerciseReleaseId = table.Column<int>(nullable: false),
-                    SolutionPLangId = table.Column<int>(nullable: false),
-                    SolutionUserId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_SolutionVersions", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_SolutionVersions_SolutionFiles_MainFileId",
-                        column: x => x.MainFileId,
-                        principalTable: "SolutionFiles",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
-                    table.ForeignKey(
-                        name: "FK_SolutionVersions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
-                        principalTable: "Solutions",
-                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomTestWithSolutionAsTestResults",
-                columns: table => new
-                {
-                    CustomTestId = table.Column<int>(nullable: false),
-                    SolutionVersionId = table.Column<int>(nullable: false),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    HasCompiled = table.Column<bool>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Passed = table.Column<bool>(nullable: true),
-                    ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomTestWithSolutionAsTestResults", x => new { x.CustomTestId, x.SolutionVersionId });
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithSolutionAsTestResults_CustomTest_CustomTestId",
-                        column: x => x.CustomTestId,
-                        principalTable: "CustomTest",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithSolutionAsTestResults_SolutionVersions_SolutionVersionId",
-                        column: x => x.SolutionVersionId,
-                        principalTable: "SolutionVersions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "TestResults",
-                columns: table => new
-                {
-                    TestId = table.Column<int>(nullable: false),
-                    SolutionVersionId = table.Column<int>(nullable: false),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    HasCompiled = table.Column<bool>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Passed = table.Column<bool>(nullable: true),
-                    ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_TestResults", x => new { x.TestId, x.SolutionVersionId });
-                    table.ForeignKey(
-                        name: "FK_TestResults_SolutionVersions_SolutionVersionId",
-                        column: x => x.SolutionVersionId,
-                        principalTable: "SolutionVersions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_TestResults_Tests_TestId",
-                        column: x => x.TestId,
-                        principalTable: "Tests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.AddColumn<int>(
-                name: "MaxSolutionVersionsPerUser",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "SolutionVersionId",
-                table: "SolutionFiles",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.AddColumn<int>(
-                name: "SolutionVersionId",
-                table: "SolutionAssessment",
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "MainSolutionVersionid",
-                table: "Solutions",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionFiles_SolutionVersionId",
-                table: "SolutionFiles",
-                column: "SolutionVersionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionAssessment_SolutionVersionId",
-                table: "SolutionAssessment",
-                column: "SolutionVersionId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithSolutionAsTestResults_CustomTestId",
-                table: "CustomTestWithSolutionAsTestResults",
-                column: "CustomTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithSolutionAsTestResults_SolutionVersionId",
-                table: "CustomTestWithSolutionAsTestResults",
-                column: "SolutionVersionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionVersions_MainFileId",
-                table: "SolutionVersions",
-                column: "MainFileId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionVersions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "SolutionVersions",
-                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestResults_SolutionVersionId",
-                table: "TestResults",
-                column: "SolutionVersionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestResults_TestId",
-                table: "TestResults",
-                column: "TestId");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                table: "SolutionAssessment",
-                column: "SolutionVersionId",
-                principalTable: "SolutionVersions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId",
-                table: "SolutionFiles",
-                column: "SolutionVersionId",
-                principalTable: "SolutionVersions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.Designer.cs b/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.Designer.cs
deleted file mode 100755
index 2c6f20944f6a3e8376e29a0b1d424d2032a2ca25..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.Designer.cs
+++ /dev/null
@@ -1,1660 +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("20180921120340_groupRolePermissionAndUpdatedAt")]
-    partial class groupRolePermissionAndUpdatedAt
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("CustomProjectSolutionId", "CustomProjectTestId");
-
-                    b.HasIndex("CustomProjectSolutionId");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestWithSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180921120340_groupRolePermissionAndUpdatedAt.cs b/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.cs
deleted file mode 100755
index 3a41338231472e25387e85e699343e3fe63a4a1f..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class groupRolePermissionAndUpdatedAt : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.RenameColumn(
-                name: "IsOnlyVisibleToMe",
-                table: "Exercises",
-                newName: "IsOnlyVisibleToOwner");
-
-            migrationBuilder.AddColumn<bool>(
-                name: "CanChangeGroupData",
-                table: "GroupRolePermissions",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "CanSeeOtherMembers",
-                table: "GroupRolePermissions",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CanChangeGroupData",
-                table: "GroupRolePermissions");
-
-            migrationBuilder.DropColumn(
-                name: "CanSeeOtherMembers",
-                table: "GroupRolePermissions");
-
-            migrationBuilder.RenameColumn(
-                name: "IsOnlyVisibleToOwner",
-                table: "Exercises",
-                newName: "IsOnlyVisibleToMe"
-                );
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20180929145343_addedAfterSolution.Designer.cs b/src/ClientServer/Migrations/20180929145343_addedAfterSolution.Designer.cs
deleted file mode 100755
index 3fcbd678873e1f0b12a87b42ea0fa229048a6a14..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180929145343_addedAfterSolution.Designer.cs
+++ /dev/null
@@ -1,1827 +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("20180929145343_addedAfterSolution")]
-    partial class addedAfterSolution
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20180929145343_addedAfterSolution.cs b/src/ClientServer/Migrations/20180929145343_addedAfterSolution.cs
deleted file mode 100755
index 5cbb92501410c55dd32f286ae39cd42a46eca62a..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20180929145343_addedAfterSolution.cs
+++ /dev/null
@@ -1,199 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class addedAfterSolution : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "AfterSolutionFiles",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    AfterSolutionId = table.Column<int>(nullable: false),
-                    Content = table.Column<string>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayIndex = table.Column<int>(nullable: false),
-                    FileNameWithExtension = table.Column<string>(nullable: true),
-                    IsDisplayed = table.Column<bool>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    TemplateFileId = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AfterSolutionFiles", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_AfterSolutionFiles_TemplateFiles_TemplateFileId",
-                        column: x => x.TemplateFileId,
-                        principalTable: "TemplateFiles",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "AfterSolutions",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MainFileId = table.Column<int>(nullable: true),
-                    SolutionExerciseReleaseId = table.Column<int>(nullable: false),
-                    SolutionPLangId = table.Column<int>(nullable: false),
-                    SolutionUserId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AfterSolutions", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId",
-                        column: x => x.MainFileId,
-                        principalTable: "AfterSolutionFiles",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
-                    table.ForeignKey(
-                        name: "FK_AfterSolutions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
-                        principalTable: "Solutions",
-                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomTestWithAfterSolutionAsTestResults",
-                columns: table => new
-                {
-                    CustomTestId = table.Column<int>(nullable: false),
-                    AfterSolutionId = table.Column<int>(nullable: false),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    HasCompiled = table.Column<bool>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Passed = table.Column<bool>(nullable: true),
-                    ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomTestWithAfterSolutionAsTestResults", x => new { x.CustomTestId, x.AfterSolutionId });
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId",
-                        column: x => x.AfterSolutionId,
-                        principalTable: "AfterSolutions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithAfterSolutionAsTestResults_CustomTest_CustomTestId",
-                        column: x => x.CustomTestId,
-                        principalTable: "CustomTest",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "TestWithAfterSolutionAsTestResults",
-                columns: table => new
-                {
-                    TestId = table.Column<int>(nullable: false),
-                    AfterSolutionId = table.Column<int>(nullable: false),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    HasCompiled = table.Column<bool>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Passed = table.Column<bool>(nullable: true),
-                    ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_TestWithAfterSolutionAsTestResults", x => new { x.TestId, x.AfterSolutionId });
-                    table.ForeignKey(
-                        name: "FK_TestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId",
-                        column: x => x.AfterSolutionId,
-                        principalTable: "AfterSolutions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_TestWithAfterSolutionAsTestResults_Tests_TestId",
-                        column: x => x.TestId,
-                        principalTable: "Tests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AfterSolutions_MainFileId",
-                table: "AfterSolutions",
-                column: "MainFileId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AfterSolutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "AfterSolutions",
-                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" },
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AfterSolutionFiles_AfterSolutionId",
-                table: "AfterSolutionFiles",
-                column: "AfterSolutionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AfterSolutionFiles_TemplateFileId",
-                table: "AfterSolutionFiles",
-                column: "TemplateFileId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithAfterSolutionAsTestResults_AfterSolutionId",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                column: "AfterSolutionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithAfterSolutionAsTestResults_CustomTestId",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                column: "CustomTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestWithAfterSolutionAsTestResults_AfterSolutionId",
-                table: "TestWithAfterSolutionAsTestResults",
-                column: "AfterSolutionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestWithAfterSolutionAsTestResults_TestId",
-                table: "TestWithAfterSolutionAsTestResults",
-                column: "TestId");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_AfterSolutionFiles_AfterSolutions_AfterSolutionId",
-                table: "AfterSolutionFiles",
-                column: "AfterSolutionId",
-                principalTable: "AfterSolutions",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId",
-                table: "AfterSolutions");
-
-            migrationBuilder.DropTable(
-                name: "CustomTestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropTable(
-                name: "TestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropTable(
-                name: "AfterSolutionFiles");
-
-            migrationBuilder.DropTable(
-                name: "AfterSolutions");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181001151109_maxCustomTests.Designer.cs b/src/ClientServer/Migrations/20181001151109_maxCustomTests.Designer.cs
deleted file mode 100755
index 5ca63edb4f9755ae3d21fff5feb0666c048837f6..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181001151109_maxCustomTests.Designer.cs
+++ /dev/null
@@ -1,1829 +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("20181001151109_maxCustomTests")]
-    partial class maxCustomTests
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181001151109_maxCustomTests.cs b/src/ClientServer/Migrations/20181001151109_maxCustomTests.cs
deleted file mode 100755
index 1d0499ede4b6a6aa15103f94b4943322e214e1af..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181001151109_maxCustomTests.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class maxCustomTests : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "MaxCustomTestsPerParticipation",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 10);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "MaxCustomTestsPerParticipation",
-                table: "SystemSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181004180755_csrfToken.Designer.cs b/src/ClientServer/Migrations/20181004180755_csrfToken.Designer.cs
deleted file mode 100755
index 4328f7b958691af483ff349d7702677a95a6e65f..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181004180755_csrfToken.Designer.cs
+++ /dev/null
@@ -1,1831 +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("20181004180755_csrfToken")]
-    partial class csrfToken
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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");
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181004180755_csrfToken.cs b/src/ClientServer/Migrations/20181004180755_csrfToken.cs
deleted file mode 100755
index 6dbd0917e8b11cc3d05bb7dc85c3a1d7402fb3c7..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181004180755_csrfToken.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class csrfToken : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "CsrfToken",
-                table: "AuthTokens",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CsrfToken",
-                table: "AuthTokens");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.Designer.cs b/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.Designer.cs
deleted file mode 100755
index 99411d81300be536b1f0da45739fafbbe303ac98..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.Designer.cs
+++ /dev/null
@@ -1,1831 +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("20181008183904_UserSettingsAllowRemoveLang")]
-    partial class UserSettingsAllowRemoveLang
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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");
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    b.ToTable("SystemRoles");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanChangeGroups");
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181008183904_UserSettingsAllowRemoveLang.cs b/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.cs
deleted file mode 100755
index 82f40e2602e091a62558f07fe0ecc1a8b45f06da..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class UserSettingsAllowRemoveLang : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "LangId",
-                table: "UserSettingses",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "LangId",
-                table: "UserSettingses",
-                nullable: false);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.Designer.cs b/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.Designer.cs
deleted file mode 100755
index 0ab752370f19267360fe2c67c01bf0df7a7251ab..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.Designer.cs
+++ /dev/null
@@ -1,1829 +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("20181011102314_removedSystemPermissionCanEditGroup")]
-    partial class removedSystemPermissionCanEditGroup
-    {
-        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.ContentType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Type");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("ContentTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    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");
-
-                    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.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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl");
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    b.Property<string>("ShortDescription");
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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");
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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();
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note");
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note");
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent");
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors");
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol");
-
-                    b.Property<int?>("TestResultCode");
-
-                    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");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("HtmlBackgroundColor");
-
-                    b.Property<string>("HtmlColor");
-
-                    b.Property<string>("HtmlIcon");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension");
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType");
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestCaseSettingses");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName");
-
-                    b.Property<string>("InternalName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut");
-
-                    b.Property<string>("Language");
-
-                    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");
-
-                    b.Property<string>("InternalName");
-
-                    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");
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret");
-
-                    b.Property<string>("UserAuthToken");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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");
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme");
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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");
-
-                    b.Property<string>("FirstName");
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password");
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired();
-
-                    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");
-
-                    b.Property<string>("Email");
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181011102314_removedSystemPermissionCanEditGroup.cs b/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.cs
deleted file mode 100755
index b4ea33c0d0a8cae65f7e7297b1ca52711a156eb9..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class removedSystemPermissionCanEditGroup : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CanChangeGroups",
-                table: "SystemRolePermissions");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "CanChangeGroups",
-                table: "SystemRolePermissions",
-                nullable: false,
-                defaultValue: false);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.Designer.cs b/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.Designer.cs
deleted file mode 100755
index 3539a26a1cdd176c5dc092cd11983547fd020b31..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.Designer.cs
+++ /dev/null
@@ -1,1882 +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("20181012124603_SetStringMaxLengths")]
-    partial class SetStringMaxLengths
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181012124603_SetStringMaxLengths.cs b/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.cs
deleted file mode 100755
index 0bcfe4d35574fa4fe068fdd246e939b0c0aa8ee8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.cs
+++ /dev/null
@@ -1,792 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class SetStringMaxLengths : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "ContentTypes");
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "UserGroups",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "UserGroups",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Token",
-                table: "Users",
-                maxLength: 500,
-                nullable: false);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Password",
-                table: "Users",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "LastName",
-                table: "Users",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FirstName",
-                table: "Users",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "Users",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "SystemRoles",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "SystemRoles",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Theme",
-                table: "UserSettingses",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Theme",
-                table: "CodeEditorSettings",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "GroupRoles",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Token",
-                table: "ExternalUsers",
-                maxLength: 500,
-                nullable: false);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "LastName",
-                table: "ExternalUsers",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FirstName",
-                table: "ExternalUsers",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "ExternalUsers",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "UserAuthToken",
-                table: "AuthTokens",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "RandomSecret",
-                table: "AuthTokens",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "CsrfToken",
-                table: "AuthTokens",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "InternalName",
-                table: "PLangs",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "PLangs",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Language",
-                table: "Langs",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "LangShortcut",
-                table: "Langs",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "InternalName",
-                table: "TestTypes",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "TestTypes",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "TestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "TestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tests",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "Tests",
-                maxLength: 5000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "CustomTestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomTestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomTest",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomTest",
-                maxLength: 5000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "TemplateFiles",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "TemplateFiles",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "HtmlIcon",
-                table: "Tags",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "HtmlColor",
-                table: "Tags",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "HtmlBackgroundColor",
-                table: "Tags",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tags",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Description",
-                table: "Tags",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "TestWithSingleSolutionAsTestResult",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "SolutionFiles",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "SolutionFiles",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "NoteForOtherTutors",
-                table: "SolutionAssessment",
-                maxLength: 1000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FeedbackForStudent",
-                table: "SolutionAssessment",
-                maxLength: 1000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Note",
-                table: "Solutions",
-                maxLength: 1000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Note",
-                table: "ExerciseReleases",
-                maxLength: 1000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "GeneratedCode",
-                table: "ExerciseReleases",
-                maxLength: 500,
-                nullable: false);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "ExerciseDescriptions",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "ShortDescription",
-                table: "Exercises",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Note",
-                table: "Exercises",
-                maxLength: 1000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Exercises",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "Assets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Assets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "AssetUrl",
-                table: "Assets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "TestWithAfterSolutionAsTestResults",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "AfterSolutionFiles",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "AfterSolutionFiles",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "CustomProjectTestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomProjectTestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomProjectTests",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomProjectTests",
-                maxLength: 5000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "CustomProjectSolutionFiles",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomProjectSolutionFiles",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomProjectDescriptions",
-                maxLength: 10000,
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomProjects",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "ContentTypes",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Type = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_ContentTypes", x => x.Id);
-                });
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "UserGroups",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "UserGroups",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Token",
-                table: "Users",
-                nullable: false);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Password",
-                table: "Users",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "LastName",
-                table: "Users",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FirstName",
-                table: "Users",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "Users",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "SystemRoles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "SystemRoles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Theme",
-                table: "UserSettingses",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Theme",
-                table: "CodeEditorSettings",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "GroupRoles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Token",
-                table: "ExternalUsers",
-                nullable: false);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "LastName",
-                table: "ExternalUsers",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FirstName",
-                table: "ExternalUsers",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Email",
-                table: "ExternalUsers",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "UserAuthToken",
-                table: "AuthTokens",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "RandomSecret",
-                table: "AuthTokens",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "CsrfToken",
-                table: "AuthTokens",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "InternalName",
-                table: "PLangs",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "PLangs",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Language",
-                table: "Langs",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "LangShortcut",
-                table: "Langs",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "InternalName",
-                table: "TestTypes",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "TestTypes",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "TestAssets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "TestAssets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tests",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "Tests",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "CustomTestAssets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomTestAssets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomTest",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomTest",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "TemplateFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "TemplateFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "HtmlIcon",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "HtmlColor",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "HtmlBackgroundColor",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Description",
-                table: "Tags",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "TestWithSingleSolutionAsTestResult",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "SolutionFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "SolutionFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "NoteForOtherTutors",
-                table: "SolutionAssessment",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FeedbackForStudent",
-                table: "SolutionAssessment",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Note",
-                table: "Solutions",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Note",
-                table: "ExerciseReleases",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "GeneratedCode",
-                table: "ExerciseReleases",
-                nullable: false);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "ExerciseDescriptions",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "ShortDescription",
-                table: "Exercises",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Note",
-                table: "Exercises",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Exercises",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "Assets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "Assets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "AssetUrl",
-                table: "Assets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "TestWithAfterSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "AfterSolutionFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "AfterSolutionFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Protocol",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "MimeType",
-                table: "CustomProjectTestAssets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomProjectTestAssets",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomProjectTests",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomProjectTests",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "FileNameWithExtension",
-                table: "CustomProjectSolutionFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomProjectSolutionFiles",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Content",
-                table: "CustomProjectDescriptions",
-                nullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "DisplayName",
-                table: "CustomProjects",
-                nullable: true);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181026193143_ServerMessage.Designer.cs b/src/ClientServer/Migrations/20181026193143_ServerMessage.Designer.cs
deleted file mode 100755
index a7bc0a9faae7f1a89c364b1fd284b721370a42cd..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181026193143_ServerMessage.Designer.cs
+++ /dev/null
@@ -1,1885 +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("20181026193143_ServerMessage")]
-    partial class ServerMessage
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181026193143_ServerMessage.cs b/src/ClientServer/Migrations/20181026193143_ServerMessage.cs
deleted file mode 100755
index 9adb661c2e6258e1a0e3fc2152cdbcb67bc15bb9..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181026193143_ServerMessage.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ServerMessage : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "CurrentServerMessage",
-                table: "SystemSettings",
-                maxLength: 1000,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CurrentServerMessage",
-                table: "SystemSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.Designer.cs b/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.Designer.cs
deleted file mode 100755
index f8b75779ff0bcf8acde2ac556a59905dd212f2c9..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.Designer.cs
+++ /dev/null
@@ -1,1887 +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("20181027121021_ParticipationLockSolutionsFlag")]
-    partial class ParticipationLockSolutionsFlag
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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>("LockSolutions");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181027121021_ParticipationLockSolutionsFlag.cs b/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.cs
deleted file mode 100755
index 00ee35f69afd51dca85981068478eb8d2dfd1fe0..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ParticipationLockSolutionsFlag : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "LockSolutions",
-                table: "ExerciseReleaseWithUserAsParticipations",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "LockSolutions",
-                table: "ExerciseReleaseWithUserAsParticipations");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.Designer.cs b/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.Designer.cs
deleted file mode 100755
index 9b118584e91ce42d955c6160f62c2ee83930d5a9..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.Designer.cs
+++ /dev/null
@@ -1,1887 +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("20181027122426_ParticipationLockSolutionsFlag2")]
-    partial class ParticipationLockSolutionsFlag2
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181027122426_ParticipationLockSolutionsFlag2.cs b/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.cs
deleted file mode 100755
index f07b0b0a603f6b33a7050db4868cc5b78633cea8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ParticipationLockSolutionsFlag2 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.RenameColumn(
-                name: "LockSolutions",
-                table: "ExerciseReleaseWithUserAsParticipations",
-                newName: "LockSolutionsFlag"
-                );
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.RenameColumn(
-                name: "LockSolutionsFlag",
-                table: "ExerciseReleaseWithUserAsParticipations",
-                newName: "LockSolutions"
-            );
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.Designer.cs b/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.Designer.cs
deleted file mode 100755
index 120d92db1ada24159f0b6ae7586e917fb76ecd8f..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.Designer.cs
+++ /dev/null
@@ -1,1890 +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("20181123151602_StoreAssessmentErrors")]
-    partial class StoreAssessmentErrors
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    b.Property<bool>("HadAutomaticAssessmentErrors");
-
-                    b.Property<bool>("HasAutomaticAssessmentFinished");
-
-                    b.Property<bool>("HasAutomaticAssessmentStarted");
-
-                    b.Property<bool>("HasLimitedWorkingTime");
-
-                    b.Property<bool>("HideInOverviews");
-
-                    b.Property<bool>("HideSiteHeaderBar");
-
-                    b.Property<bool>("IsReleased");
-
-                    b.Property<bool>("IsVisibleToAllAfterRelease");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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.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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20181123151602_StoreAssessmentErrors.cs b/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.cs
deleted file mode 100755
index 9c5646368771082578f9c934d3ae88352aa72ac1..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class StoreAssessmentErrors : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "LastAssessmentErrorMessage",
-                table: "SolutionAssessment",
-                maxLength: 5000,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "LastAssessmentErrorMessage",
-                table: "SolutionAssessment");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190202125311_MoreExamOptions.Designer.cs b/src/ClientServer/Migrations/20190202125311_MoreExamOptions.Designer.cs
deleted file mode 100755
index 02fce0ae6d4d92fe0fe289c6c0fd706b4bbaa9de..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190202125311_MoreExamOptions.Designer.cs
+++ /dev/null
@@ -1,1896 +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("20190202125311_MoreExamOptions")]
-    partial class MoreExamOptions
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxCustomProjectsPerUser");
-
-                    b.Property<int>("MaxCustomTestsPerParticipation");
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190202125311_MoreExamOptions.cs b/src/ClientServer/Migrations/20190202125311_MoreExamOptions.cs
deleted file mode 100755
index d2d99df476ea6a2c716599af738c252d8471d62d..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190202125311_MoreExamOptions.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class MoreExamOptions : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "HideExerciseLeaveActions",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "HidePrintOptions",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "ShowAdditionalLogButton",
-                table: "ExerciseReleases",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "HideExerciseLeaveActions",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropColumn(
-                name: "HidePrintOptions",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropColumn(
-                name: "ShowAdditionalLogButton",
-                table: "ExerciseReleases");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190213174200_NewSystemSettings.Designer.cs b/src/ClientServer/Migrations/20190213174200_NewSystemSettings.Designer.cs
deleted file mode 100755
index 0d7baf3eca971d147c3afe387ee605ce12cd460b..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190213174200_NewSystemSettings.Designer.cs
+++ /dev/null
@@ -1,1913 +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("20190213174200_NewSystemSettings")]
-    partial class NewSystemSettings
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190213174200_NewSystemSettings.cs b/src/ClientServer/Migrations/20190213174200_NewSystemSettings.cs
deleted file mode 100755
index 08764ad43d8b9c5bdac4e88cb3b6a384920e47e8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190213174200_NewSystemSettings.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class NewSystemSettings : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "MaxNumberOfTestsWithOneRequest",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 5);
-
-            migrationBuilder.AddColumn<int>(
-                name: "MaxNumberOfTestsWithOneRequestSubmitTestServer",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 15);
-
-            migrationBuilder.AddColumn<int>(
-                name: "SubmitTestServerTimeoutInMs",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 15000);
-
-            migrationBuilder.AddColumn<string>(
-                name: "SubmitTestServerUrl",
-                table: "SystemSettings",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerStatsUrl",
-                table: "SystemSettings",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TestServerTimeoutInMs",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 7000);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerUrl",
-                table: "SystemSettings",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "MaxNumberOfTestsWithOneRequest",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "MaxNumberOfTestsWithOneRequestSubmitTestServer",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "SubmitTestServerTimeoutInMs",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "SubmitTestServerUrl",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerStatsUrl",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerTimeoutInMs",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerUrl",
-                table: "SystemSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190214140941_PLangHighlighting.Designer.cs b/src/ClientServer/Migrations/20190214140941_PLangHighlighting.Designer.cs
deleted file mode 100755
index b429996f159a77bade737e92c330bdb3a4fdff03..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190214140941_PLangHighlighting.Designer.cs
+++ /dev/null
@@ -1,1919 +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("20190214140941_PLangHighlighting")]
-    partial class PLangHighlighting
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MarkdownHighlightModeName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190214140941_PLangHighlighting.cs b/src/ClientServer/Migrations/20190214140941_PLangHighlighting.cs
deleted file mode 100755
index 766653fea5be49a9d9c8926b825238b94eff228f..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190214140941_PLangHighlighting.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class PLangHighlighting : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "EditorHighlightModeName",
-                table: "PLangs",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "MarkdownHighlightModeName",
-                table: "PLangs",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "EditorHighlightModeName",
-                table: "PLangs");
-
-            migrationBuilder.DropColumn(
-                name: "MarkdownHighlightModeName",
-                table: "PLangs");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.Designer.cs b/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.Designer.cs
deleted file mode 100755
index 16e2efe4168c949b831fd962aab9e84abc62ff75..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.Designer.cs
+++ /dev/null
@@ -1,1922 +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("20190214151239_PLangFileExtensions")]
-    partial class PLangFileExtensions
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MarkdownHighlightModeName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190214151239_PLangFileExtensions.cs b/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.cs
deleted file mode 100755
index abd0b3886607a7adff17a84b2d07eb9eaba51ac4..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class PLangFileExtensions : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "FileExtensionsWithDot",
-                table: "PLangs",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "FileExtensionsWithDot",
-                table: "PLangs");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.Designer.cs b/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.Designer.cs
deleted file mode 100755
index 4b20cd77932849279a5964a4dd2ed8474584e3ef..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.Designer.cs
+++ /dev/null
@@ -1,1919 +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("20190214202737_RemovedUnusedPlangMarkdownMode")]
-    partial class RemovedUnusedPlangMarkdownMode
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190214202737_RemovedUnusedPlangMarkdownMode.cs b/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.cs
deleted file mode 100755
index b508be0b48704a3700767d17da6f6fb3cceebd61..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class RemovedUnusedPlangMarkdownMode : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "MarkdownHighlightModeName",
-                table: "PLangs");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "MarkdownHighlightModeName",
-                table: "PLangs",
-                maxLength: 500,
-                nullable: true);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190320182329_TestAssetHashes.Designer.cs b/src/ClientServer/Migrations/20190320182329_TestAssetHashes.Designer.cs
deleted file mode 100755
index 7b37ac90980d5078da9276bb8bf1c012667ff4ed..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190320182329_TestAssetHashes.Designer.cs
+++ /dev/null
@@ -1,1928 +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("20190320182329_TestAssetHashes")]
-    partial class TestAssetHashes
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190320182329_TestAssetHashes.cs b/src/ClientServer/Migrations/20190320182329_TestAssetHashes.cs
deleted file mode 100755
index edb792b5e1b76da1e62992bba8126d4d22417e56..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190320182329_TestAssetHashes.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class TestAssetHashes : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "Hash",
-                table: "TestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "Hash",
-                table: "CustomTestAssets",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "Hash",
-                table: "CustomProjectTestAssets",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Hash",
-                table: "TestAssets");
-
-            migrationBuilder.DropColumn(
-                name: "Hash",
-                table: "CustomTestAssets");
-
-            migrationBuilder.DropColumn(
-                name: "Hash",
-                table: "CustomProjectTestAssets");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.Designer.cs b/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.Designer.cs
deleted file mode 100755
index b53f12d47de050a60aeb6efd33807db26ed3be3a..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.Designer.cs
+++ /dev/null
@@ -1,1931 +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("20190329152856_LastEditingIpSolution")]
-    partial class LastEditingIpSolution
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190329152856_LastEditingIpSolution.cs b/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.cs
deleted file mode 100755
index 548f14f5b881be65f5d380c32aacb145599b3be8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class LastEditingIpSolution : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "LastEditingIpAddress",
-                table: "Solutions",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "LastEditingIpAddress",
-                table: "Solutions");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.Designer.cs b/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.Designer.cs
deleted file mode 100755
index 5f593603e065f6fce62a3fa48c99ed2976ecaf57..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.Designer.cs
+++ /dev/null
@@ -1,1934 +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("20190409160808_SystemSettingsTestServerUiUrl")]
-    partial class SystemSettingsTestServerUiUrl
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation")
-                        .WithMany("Solutions")
-                        .HasForeignKey("UserId", "ExerciseReleaseId")
-                        .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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId")
-                        .OnDelete(DeleteBehavior.SetNull);
-
-                    b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId")
-                        .OnDelete(DeleteBehavior.SetNull);
-                });
-
-            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")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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/20190409160808_SystemSettingsTestServerUiUrl.cs b/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.cs
deleted file mode 100755
index 74a1220b85bb5e5d8fad8af6a2f8a02c9eeaae02..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class SystemSettingsTestServerUiUrl : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerConfigUiUrl",
-                table: "SystemSettings",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "TestServerConfigUiUrl",
-                table: "SystemSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.Designer.cs b/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.Designer.cs
deleted file mode 100755
index fc2af7262625f8290c40bceebcbfc943a56b5e92..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.Designer.cs
+++ /dev/null
@@ -1,1926 +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("20190410160446_SomeDeleteActionsChanged1")]
-    partial class SomeDeleteActionsChanged1
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190410160446_SomeDeleteActionsChanged1.cs b/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.cs
deleted file mode 100755
index 89eed66ebb561fc2cf50f536a875574cc22776c5..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.cs
+++ /dev/null
@@ -1,207 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class SomeDeleteActionsChanged1 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_Templates_PLangs_PLangId",
-                table: "Templates");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_ExerciseReleases_PLangs_PLangId",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId",
-                table: "ExerciseReleaseWithUserAsParticipations");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_Solutions_PLangs_PLangId",
-                table: "Solutions");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId",
-                table: "SystemSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId",
-                table: "SystemSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemSettings_UserGroups_DefaultUserGroupId",
-                table: "SystemSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId",
-                table: "UserWithUserGroups");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Templates_PLangs_PLangId",
-                table: "Templates",
-                column: "PLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_ExerciseReleases_PLangs_PLangId",
-                table: "ExerciseReleases",
-                column: "PLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId",
-                table: "ExerciseReleaseWithUserAsParticipations",
-                column: "LastEditedPLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Solutions_PLangs_PLangId",
-                table: "Solutions",
-                column: "PLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId",
-                table: "SystemSettings",
-                column: "DefaultGroupCreatorGroupRoleId",
-                principalTable: "GroupRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId",
-                table: "SystemSettings",
-                column: "DefaultGroupRoleId",
-                principalTable: "GroupRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemSettings_UserGroups_DefaultUserGroupId",
-                table: "SystemSettings",
-                column: "DefaultUserGroupId",
-                principalTable: "UserGroups",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId",
-                table: "UserWithUserGroups",
-                column: "GroupRoleId",
-                principalTable: "GroupRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Restrict);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_Templates_PLangs_PLangId",
-                table: "Templates");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_ExerciseReleases_PLangs_PLangId",
-                table: "ExerciseReleases");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId",
-                table: "ExerciseReleaseWithUserAsParticipations");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_Solutions_PLangs_PLangId",
-                table: "Solutions");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId",
-                table: "SystemSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId",
-                table: "SystemSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_SystemSettings_UserGroups_DefaultUserGroupId",
-                table: "SystemSettings");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId",
-                table: "UserWithUserGroups");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Templates_PLangs_PLangId",
-                table: "Templates",
-                column: "PLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_ExerciseReleases_PLangs_PLangId",
-                table: "ExerciseReleases",
-                column: "PLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId",
-                table: "ExerciseReleaseWithUserAsParticipations",
-                column: "LastEditedPLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_Solutions_PLangs_PLangId",
-                table: "Solutions",
-                column: "PLangId",
-                principalTable: "PLangs",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId",
-                table: "SystemSettings",
-                column: "DefaultGroupCreatorGroupRoleId",
-                principalTable: "GroupRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId",
-                table: "SystemSettings",
-                column: "DefaultGroupRoleId",
-                principalTable: "GroupRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SystemSettings_UserGroups_DefaultUserGroupId",
-                table: "SystemSettings",
-                column: "DefaultUserGroupId",
-                principalTable: "UserGroups",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.SetNull);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId",
-                table: "UserWithUserGroups",
-                column: "GroupRoleId",
-                principalTable: "GroupRoles",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190419112922_JustRunTimeout.Designer.cs b/src/ClientServer/Migrations/20190419112922_JustRunTimeout.Designer.cs
deleted file mode 100755
index 3775fe8fc634057b59a3f117e24abc7feb561760..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190419112922_JustRunTimeout.Designer.cs
+++ /dev/null
@@ -1,1928 +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("20190419112922_JustRunTimeout")]
-    partial class JustRunTimeout
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190419112922_JustRunTimeout.cs b/src/ClientServer/Migrations/20190419112922_JustRunTimeout.cs
deleted file mode 100755
index 11b5883b8c3c6adfdb9acb24f6ccc88262a6272d..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190419112922_JustRunTimeout.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class JustRunTimeout : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "JustRunProgramTimeoutInMs",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 1000);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "JustRunProgramTimeoutInMs",
-                table: "SystemSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.Designer.cs b/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.Designer.cs
deleted file mode 100755
index 1cf2da810d4690f7cdbb207544a14d97dddaef11..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.Designer.cs
+++ /dev/null
@@ -1,1932 +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("20190419153412_OtherJustRunTestLimits")]
-    partial class OtherJustRunTestLimits
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    b.Property<int>("DefaultGroupCreatorGroupRoleId");
-
-                    b.Property<int>("DefaultGroupRoleId");
-
-                    b.Property<int>("DefaultUserGroupId");
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190419153412_OtherJustRunTestLimits.cs b/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.cs
deleted file mode 100755
index 3dd67f34d95c2031a3633fa3d2ac2557bf4aeea4..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class OtherJustRunTestLimits : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "JustRunProgramMaxDiskSpaceInKb",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 1000);
-
-            migrationBuilder.AddColumn<int>(
-                name: "JustRunProgramMemoryLimitInKb",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 1000);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "JustRunProgramMaxDiskSpaceInKb",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "JustRunProgramMemoryLimitInKb",
-                table: "SystemSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.Designer.cs b/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.Designer.cs
deleted file mode 100755
index 3da6ddbb8014ca3d3da7981e62d2fa609716f307..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.Designer.cs
+++ /dev/null
@@ -1,1938 +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("20190420100505_CustomProjectTestLimits")]
-    partial class CustomProjectTestLimits
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<int?>("TestResultCode");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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>("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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190420100505_CustomProjectTestLimits.cs b/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.cs
deleted file mode 100755
index fcc366fea0f3d66a45ec8bfa00ae5f88dd404c84..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class CustomProjectTestLimits : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "CustomProjectTestMaxDiskSpaceInKb",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 1000);
-
-            migrationBuilder.AddColumn<int>(
-                name: "CustomProjectTestMemoryLimitInKb",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 1000);
-
-            migrationBuilder.AddColumn<int>(
-                name: "CustomProjectTestTimeoutInMs",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 1000);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CustomProjectTestMaxDiskSpaceInKb",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "CustomProjectTestMemoryLimitInKb",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "CustomProjectTestTimeoutInMs",
-                table: "SystemSettings");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190420164845_TestRunningTimes.Designer.cs b/src/ClientServer/Migrations/20190420164845_TestRunningTimes.Designer.cs
deleted file mode 100755
index 998a583019fafdcbe68b78d00e22bdea7dd4cc57..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190420164845_TestRunningTimes.Designer.cs
+++ /dev/null
@@ -1,1988 +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("20190420164845_TestRunningTimes")]
-    partial class TestRunningTimes
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    b.HasKey("TestId", "AfterSolutionId");
-
-                    b.HasIndex("AfterSolutionId");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestWithAfterSolutionAsTestResults");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<DateTime>("CreatedAt");
-
-                    b.Property<bool?>("HasCompiled");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool?>("Passed");
-
-                    b.Property<int?>("ProgramExitCode");
-
-                    b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TimeForCompiling");
-
-                    b.Property<int?>("TimeForUserProgram");
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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>("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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190420164845_TestRunningTimes.cs b/src/ClientServer/Migrations/20190420164845_TestRunningTimes.cs
deleted file mode 100755
index fe49ff407c07843f701bcc67c2d48185f6f6de94..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190420164845_TestRunningTimes.cs
+++ /dev/null
@@ -1,205 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class TestRunningTimes : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "RunnerVersion",
-                table: "TestWithSingleSolutionAsTestResult",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerVersion",
-                table: "TestWithSingleSolutionAsTestResult",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForCompiling",
-                table: "TestWithSingleSolutionAsTestResult",
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForUserProgram",
-                table: "TestWithSingleSolutionAsTestResult",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "RunnerVersion",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerVersion",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForCompiling",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForUserProgram",
-                table: "CustomTestWithSingleSolutionAsTestResult",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "RunnerVersion",
-                table: "TestWithAfterSolutionAsTestResults",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerVersion",
-                table: "TestWithAfterSolutionAsTestResults",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForCompiling",
-                table: "TestWithAfterSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForUserProgram",
-                table: "TestWithAfterSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "RunnerVersion",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerVersion",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForCompiling",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForUserProgram",
-                table: "CustomTestWithAfterSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "RunnerVersion",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TestServerVersion",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForCompiling",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                nullable: true);
-
-            migrationBuilder.AddColumn<int>(
-                name: "TimeForUserProgram",
-                table: "CustomProjectTestWithSolutionAsTestResults",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "RunnerVersion",
-                table: "TestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerVersion",
-                table: "TestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForCompiling",
-                table: "TestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForUserProgram",
-                table: "TestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "RunnerVersion",
-                table: "CustomTestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerVersion",
-                table: "CustomTestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForCompiling",
-                table: "CustomTestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForUserProgram",
-                table: "CustomTestWithSingleSolutionAsTestResult");
-
-            migrationBuilder.DropColumn(
-                name: "RunnerVersion",
-                table: "TestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerVersion",
-                table: "TestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForCompiling",
-                table: "TestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForUserProgram",
-                table: "TestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "RunnerVersion",
-                table: "CustomTestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerVersion",
-                table: "CustomTestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForCompiling",
-                table: "CustomTestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForUserProgram",
-                table: "CustomTestWithAfterSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "RunnerVersion",
-                table: "CustomProjectTestWithSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TestServerVersion",
-                table: "CustomProjectTestWithSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForCompiling",
-                table: "CustomProjectTestWithSolutionAsTestResults");
-
-            migrationBuilder.DropColumn(
-                name: "TimeForUserProgram",
-                table: "CustomProjectTestWithSolutionAsTestResults");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.Designer.cs b/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.Designer.cs
deleted file mode 100755
index a38ef7f93ad59f0c40cc4c9425ee0d850a4766f1..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.Designer.cs
+++ /dev/null
@@ -1,2016 +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("20190428191918_MoreTestLimitsAndCompilerTimeout")]
-    partial class MoreTestLimitsAndCompilerTimeout
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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<string>("Note")
-                        .HasMaxLength(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190430202149_MaxManualPoints.Designer.cs b/src/ClientServer/Migrations/20190430202149_MaxManualPoints.Designer.cs
deleted file mode 100755
index d45019e98960e8a7c9136deebe584b5acc0cf25c..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190430202149_MaxManualPoints.Designer.cs
+++ /dev/null
@@ -1,2018 +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("20190430202149_MaxManualPoints")]
-    partial class MaxManualPoints
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190430202149_MaxManualPoints.cs b/src/ClientServer/Migrations/20190430202149_MaxManualPoints.cs
deleted file mode 100755
index 0af8c2c1e91c9761aba9acde9d6ebf32f8e5f1cc..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190430202149_MaxManualPoints.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class MaxManualPoints : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "MaxManualPoint",
-                table: "ExerciseReleases",
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "MaxManualPoint",
-                table: "ExerciseReleases");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.Designer.cs b/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.Designer.cs
deleted file mode 100755
index 71248dee37645e24881d4532c2f5110f163d4e7d..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.Designer.cs
+++ /dev/null
@@ -1,2020 +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("20190501142551_HiddenTemplateFiles")]
-    partial class HiddenTemplateFiles
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsContentHiddenForUser");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190501142551_HiddenTemplateFiles.cs b/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.cs
deleted file mode 100755
index c61f31056b35aaef973bd234cdc2ce8a5b6f894b..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class HiddenTemplateFiles : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "IsContentHiddenForUser",
-                table: "TemplateFiles",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "IsContentHiddenForUser",
-                table: "TemplateFiles");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.Designer.cs b/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.Designer.cs
deleted file mode 100755
index 05379f42368bfc859d56c260bdf61ef715e9b9e7..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.Designer.cs
+++ /dev/null
@@ -1,2020 +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("20190501143221_RenameTemplateVisibility")]
-    partial class RenameTemplateVisibility
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190501143221_RenameTemplateVisibility.cs b/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.cs
deleted file mode 100755
index 0209b04475567cf0f9f06a68262749e58da0615f..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class RenameTemplateVisibility : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "IsContentHiddenForUser",
-                table: "TemplateFiles");
-
-            migrationBuilder.AddColumn<bool>(
-                name: "IsContentVisibleForUser",
-                table: "TemplateFiles",
-                nullable: false,
-                defaultValue: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "IsContentVisibleForUser",
-                table: "TemplateFiles");
-
-            migrationBuilder.AddColumn<bool>(
-                name: "IsContentHiddenForUser",
-                table: "TemplateFiles",
-                nullable: false,
-                defaultValue: false);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.Designer.cs b/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.Designer.cs
deleted file mode 100755
index 29933cebec966703863a59957064bcacf92b54ab..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.Designer.cs
+++ /dev/null
@@ -1,2020 +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("20190503160702_ReleasePLangRequiredNow")]
-    partial class ReleasePLangRequiredNow
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190503160702_ReleasePLangRequiredNow.cs b/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.cs
deleted file mode 100755
index f333185f143fb5929860b69968176b83dde38856..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ReleasePLangRequiredNow : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "PLangId",
-                table: "ExerciseReleases",
-                nullable: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "PLangId",
-                table: "ExerciseReleases",
-                nullable: true);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.Designer.cs b/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.Designer.cs
deleted file mode 100755
index 934dbc3493b43fcc06f35e6b1ae7e2077e2181f3..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.Designer.cs
+++ /dev/null
@@ -1,2022 +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("20190505105057_ExerciseExamLock")]
-    partial class ExerciseExamLock
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("ShouldShowSubmitResult");
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190505105057_ExerciseExamLock.cs b/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.cs
deleted file mode 100755
index d39b8eacc6d1d2ead376e08cb37c005aaeb28ec5..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ExerciseExamLock : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "IsPermanentlyLocked",
-                table: "Exercises",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "IsPermanentlyLocked",
-                table: "Exercises");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.Designer.cs b/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.Designer.cs
deleted file mode 100755
index 33f06c2b8ae9a87b952d372df31092b6053f3ded..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.Designer.cs
+++ /dev/null
@@ -1,2022 +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("20190505122337_ExerciseLockedGroupRolePermission")]
-    partial class ExerciseLockedGroupRolePermission
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanCopyExercises");
-
-                    b.Property<bool>("CanCreateExercises");
-
-                    b.Property<bool>("CanDeleteExercises");
-
-                    b.Property<bool>("CanLockExercisesPermanently");
-
-                    b.Property<bool>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190505122337_ExerciseLockedGroupRolePermission.cs b/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.cs
deleted file mode 100755
index f9f06abb3b2a8878593439c94dbb81dcd0598cd8..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ExerciseLockedGroupRolePermission : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "ShouldShowSubmitResult",
-                table: "Exercises");
-
-            migrationBuilder.AddColumn<bool>(
-                name: "CanLockExercisesPermanently",
-                table: "GroupRolePermissions",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CanLockExercisesPermanently",
-                table: "GroupRolePermissions");
-
-            migrationBuilder.AddColumn<bool>(
-                name: "ShouldShowSubmitResult",
-                table: "Exercises",
-                nullable: false,
-                defaultValue: false);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.Designer.cs b/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.Designer.cs
deleted file mode 100755
index 84e51de5ba2af722bec5f248ddf44b6eefe44a6b..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.Designer.cs
+++ /dev/null
@@ -1,2020 +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("20190508134143_RemoveCopyPermission")]
-    partial class RemoveCopyPermission
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    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.MetaData", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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.MetaData", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190508134143_RemoveCopyPermission.cs b/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.cs
deleted file mode 100755
index fa30e62d3e7703060a20fb688452b3d56bf98af9..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class RemoveCopyPermission : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CanCopyExercises",
-                table: "GroupRolePermissions");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "CanCopyExercises",
-                table: "GroupRolePermissions",
-                nullable: false,
-                defaultValue: false);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.Designer.cs b/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.Designer.cs
deleted file mode 100755
index 44228ed66d2387eba000f08c673b95b9e1c9469a..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.Designer.cs
+++ /dev/null
@@ -1,2076 +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("20190530135332_ExerciseMarkdownFiles")]
-    partial class ExerciseMarkdownFiles
-    {
-        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(500);
-
-                    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(10000);
-
-                    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.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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
-                {
-                    b.Property<int>("CustomProjectSolutionId");
-
-                    b.Property<int>("CustomProjectTestId");
-
-                    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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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.Exercise", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<bool>("CanUserCreateCustomTests");
-
-                    b.Property<bool>("CanUserCreateFiles");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    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<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("TestTypes");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Files.FileReferenceMarkdownAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("RelativePath")
-                        .HasMaxLength(5000);
-
-                    b.Property<long>("SizeInBytes");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("FileReferenceMarkdownAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Lang", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomProjectTestId")
-                        .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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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.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")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190530135332_ExerciseMarkdownFiles.cs b/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.cs
deleted file mode 100755
index 18bd238d8c1784b37cca0ed0c109f648012e6618..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ExerciseMarkdownFiles : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "FileReferenceMarkdownAssets",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    Hash = table.Column<string>(maxLength: 500, nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(maxLength: 500, nullable: true),
-                    OriginalName = table.Column<string>(maxLength: 500, nullable: true),
-                    RelativePath = table.Column<string>(maxLength: 5000, nullable: true),
-                    SizeInBytes = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_FileReferenceMarkdownAssets", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "ExerciseDescriptionWithFileAsAssetReferences",
-                columns: table => new
-                {
-                    ExerciseDescriptionId = table.Column<int>(nullable: false),
-                    FileReferenceMarkdownAssetId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_ExerciseDescriptionWithFileAsAssetReferences", x => new { x.ExerciseDescriptionId, x.FileReferenceMarkdownAssetId });
-                    table.ForeignKey(
-                        name: "FK_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptions_ExerciseDescriptionId",
-                        column: x => x.ExerciseDescriptionId,
-                        principalTable: "ExerciseDescriptions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssets_FileReferenceMarkdownAssetId",
-                        column: x => x.FileReferenceMarkdownAssetId,
-                        principalTable: "FileReferenceMarkdownAssets",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptionId",
-                table: "ExerciseDescriptionWithFileAsAssetReferences",
-                column: "ExerciseDescriptionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssetId",
-                table: "ExerciseDescriptionWithFileAsAssetReferences",
-                column: "FileReferenceMarkdownAssetId");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "ExerciseDescriptionWithFileAsAssetReferences");
-
-            migrationBuilder.DropTable(
-                name: "FileReferenceMarkdownAssets");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.cs b/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.cs
deleted file mode 100755
index c5786ca22b39447c77de8d43bea1e7e7b86abb41..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class ExerciseTestAssetFiles : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "FileReferenceTestAssets",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    Hash = table.Column<string>(maxLength: 500, nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(maxLength: 500, nullable: true),
-                    OriginalName = table.Column<string>(maxLength: 500, nullable: true),
-                    RelativePath = table.Column<string>(maxLength: 5000, nullable: true),
-                    SizeInBytes = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_FileReferenceTestAssets", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "TestWithFileAsAssetReferences",
-                columns: table => new
-                {
-                    TestId = table.Column<int>(nullable: false),
-                    FileReferenceTestAssetId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_TestWithFileAsAssetReferences", x => new { x.TestId, x.FileReferenceTestAssetId });
-                    table.ForeignKey(
-                        name: "FK_TestWithFileAsAssetReferences_FileReferenceTestAssets_FileReferenceTestAssetId",
-                        column: x => x.FileReferenceTestAssetId,
-                        principalTable: "FileReferenceTestAssets",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_TestWithFileAsAssetReferences_Tests_TestId",
-                        column: x => x.TestId,
-                        principalTable: "Tests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestWithFileAsAssetReferences_FileReferenceTestAssetId",
-                table: "TestWithFileAsAssetReferences",
-                column: "FileReferenceTestAssetId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestWithFileAsAssetReferences_TestId",
-                table: "TestWithFileAsAssetReferences",
-                column: "TestId");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "TestWithFileAsAssetReferences");
-
-            migrationBuilder.DropTable(
-                name: "FileReferenceTestAssets");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190602180648_CustomUserFiles.Designer.cs b/src/ClientServer/Migrations/20190602180648_CustomUserFiles.Designer.cs
deleted file mode 100755
index 33ce473ac9330e6bd279c19d5704f01711850a08..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190602180648_CustomUserFiles.Designer.cs
+++ /dev/null
@@ -1,2244 +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("20190602180648_CustomUserFiles")]
-    partial class CustomUserFiles
-    {
-        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(500);
-
-                    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(10000);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    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<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("RelativePath")
-                        .HasMaxLength(5000);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("RelativePath")
-                        .HasMaxLength(5000);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("RelativePath")
-                        .HasMaxLength(5000);
-
-                    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(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190602180648_CustomUserFiles.cs b/src/ClientServer/Migrations/20190602180648_CustomUserFiles.cs
deleted file mode 100755
index 18199da1087c35d0fa32e583119fe53d1e4498bc..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190602180648_CustomUserFiles.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class CustomUserFiles : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "FileReferenceUserFileAssets",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    Hash = table.Column<string>(maxLength: 500, nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(maxLength: 500, nullable: true),
-                    OriginalName = table.Column<string>(maxLength: 500, nullable: true),
-                    RelativePath = table.Column<string>(maxLength: 5000, nullable: true),
-                    SizeInBytes = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_FileReferenceUserFileAssets", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectDescriptionWithFileAsAssetReferences",
-                columns: table => new
-                {
-                    CustomProjectDescriptionId = table.Column<int>(nullable: false),
-                    FileReferenceUserFileAssetId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectDescriptionWithFileAsAssetReferences", x => new { x.CustomProjectDescriptionId, x.FileReferenceUserFileAssetId });
-                    table.ForeignKey(
-                        name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptions_CustomProjectDescriptionId",
-                        column: x => x.CustomProjectDescriptionId,
-                        principalTable: "CustomProjectDescriptions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId",
-                        column: x => x.FileReferenceUserFileAssetId,
-                        principalTable: "FileReferenceUserFileAssets",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomProjectTestWithFileAsAssetReferences",
-                columns: table => new
-                {
-                    CustomProjectTestId = table.Column<int>(nullable: false),
-                    FileReferenceUserFileAssetId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomProjectTestWithFileAsAssetReferences", x => new { x.CustomProjectTestId, x.FileReferenceUserFileAssetId });
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTestWithFileAsAssetReferences_CustomProjectTests_CustomProjectTestId",
-                        column: x => x.CustomProjectTestId,
-                        principalTable: "CustomProjectTests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId",
-                        column: x => x.FileReferenceUserFileAssetId,
-                        principalTable: "FileReferenceUserFileAssets",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomTestWithFileAsAssetReferences",
-                columns: table => new
-                {
-                    CustomTestId = table.Column<int>(nullable: false),
-                    FileReferenceUserFileAssetId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomTestWithFileAsAssetReferences", x => new { x.CustomTestId, x.FileReferenceUserFileAssetId });
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithFileAsAssetReferences_CustomTest_CustomTestId",
-                        column: x => x.CustomTestId,
-                        principalTable: "CustomTest",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId",
-                        column: x => x.FileReferenceUserFileAssetId,
-                        principalTable: "FileReferenceUserFileAssets",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptionId",
-                table: "CustomProjectDescriptionWithFileAsAssetReferences",
-                column: "CustomProjectDescriptionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssetId",
-                table: "CustomProjectDescriptionWithFileAsAssetReferences",
-                column: "FileReferenceUserFileAssetId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTestWithFileAsAssetReferences_CustomProjectTestId",
-                table: "CustomProjectTestWithFileAsAssetReferences",
-                column: "CustomProjectTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssetId",
-                table: "CustomProjectTestWithFileAsAssetReferences",
-                column: "FileReferenceUserFileAssetId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithFileAsAssetReferences_CustomTestId",
-                table: "CustomTestWithFileAsAssetReferences",
-                column: "CustomTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssetId",
-                table: "CustomTestWithFileAsAssetReferences",
-                column: "FileReferenceUserFileAssetId");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "CustomProjectDescriptionWithFileAsAssetReferences");
-
-            migrationBuilder.DropTable(
-                name: "CustomProjectTestWithFileAsAssetReferences");
-
-            migrationBuilder.DropTable(
-                name: "CustomTestWithFileAsAssetReferences");
-
-            migrationBuilder.DropTable(
-                name: "FileReferenceUserFileAssets");
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.Designer.cs b/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.Designer.cs
deleted file mode 100755
index 61149c8c6c97e8474c3cb42b46cf39d29b77ebca..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.Designer.cs
+++ /dev/null
@@ -1,2241 +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("20190606164356_RemoveAssetPathsAddedCompilerOptions")]
-    partial class RemoveAssetPathsAddedCompilerOptions
-    {
-        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(500);
-
-                    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(10000);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    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<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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>("CanReleaseExercises");
-
-                    b.Property<bool>("CanRemoveMemberFromGroup");
-
-                    b.Property<bool>("CanSeeExercisesFromOthersInGroup");
-
-                    b.Property<bool>("CanSeeOtherMembers");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190606164356_RemoveAssetPathsAddedCompilerOptions.cs b/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.cs
deleted file mode 100755
index 27c7a57b56916fe0126a4afa3e95d8336151be65..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class RemoveAssetPathsAddedCompilerOptions : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "RelativePath",
-                table: "FileReferenceUserFileAssets");
-
-            migrationBuilder.DropColumn(
-                name: "RelativePath",
-                table: "FileReferenceTestAssets");
-
-            migrationBuilder.DropColumn(
-                name: "RelativePath",
-                table: "FileReferenceMarkdownAssets");
-
-            migrationBuilder.AddColumn<string>(
-                name: "CompilerOptions",
-                table: "TestCaseSettingses",
-                maxLength: 500,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "CompilerOptions",
-                table: "DefaultCustomTestSettings",
-                maxLength: 500,
-                nullable: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CompilerOptions",
-                table: "TestCaseSettingses");
-
-            migrationBuilder.DropColumn(
-                name: "CompilerOptions",
-                table: "DefaultCustomTestSettings");
-
-            migrationBuilder.AddColumn<string>(
-                name: "RelativePath",
-                table: "FileReferenceUserFileAssets",
-                maxLength: 5000,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "RelativePath",
-                table: "FileReferenceTestAssets",
-                maxLength: 5000,
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "RelativePath",
-                table: "FileReferenceMarkdownAssets",
-                maxLength: 5000,
-                nullable: true);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190612151016_Renames.Designer.cs b/src/ClientServer/Migrations/20190612151016_Renames.Designer.cs
deleted file mode 100755
index 999b424b9ece9e9f84eed09d7cced6a48d98a80c..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190612151016_Renames.Designer.cs
+++ /dev/null
@@ -1,2241 +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("20190612151016_Renames")]
-    partial class Renames
-    {
-        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(500);
-
-                    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(10000);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectSolutionId")
-                        .IsRequired();
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("CustomProjectId");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    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<int?>("CustomProjectTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectTestId");
-
-                    b.ToTable("CustomProjectTestAssets");
-                });
-
-            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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
-            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(500);
-
-                    b.Property<bool>("IsOnlyVisibleToOwner");
-
-                    b.Property<bool>("IsPermanentlyLocked");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    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<int?>("ExerciseId1");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId")
-                        .IsUnique();
-
-                    b.HasIndex("ExerciseId1");
-
-                    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(500);
-
-                    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(1000);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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<int?>("AssessmentId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int?>("MainFileId");
-
-                    b.Property<string>("Note")
-                        .HasMaxLength(1000);
-
-                    b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
-
-                    b.HasIndex("AssessmentId")
-                        .IsUnique();
-
-                    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<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
-
-                    b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
-
-                    b.Property<int?>("ManualPoints");
-
-                    b.Property<int>("MaxNormalTestPoints");
-
-                    b.Property<int>("MaxSubmitTestPoints");
-
-                    b.Property<int?>("NormalTestPoints");
-
-                    b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
-
-                    b.Property<int?>("SubmitTestPoints");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("SolutionAssessment");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("Content")
-                        .HasMaxLength(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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<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(10000);
-
-                    b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestResultCode");
-
-                    b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
-
-                    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(10000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    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.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
-
-                    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(5000);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int>("DisplayIndex");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("ExerciseId");
-
-                    b.Property<bool>("IsSubmitTest");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("TestSettingsId");
-
-                    b.Property<int>("TestTypeId");
-
-                    b.Property<int>("Weight");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ExerciseId");
-
-                    b.HasIndex("TestSettingsId")
-                        .IsUnique();
-
-                    b.HasIndex("TestTypeId");
-
-                    b.ToTable("Tests");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CompileTimeoutInMs");
-
-                    b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("MaxDiskSpaceInKb");
-
-                    b.Property<int>("MemoryLimitInKb");
-
-                    b.Property<int>("TimeoutInMs");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Language")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("InternalName")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<DateTime>("ExpirationDateTime");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<bool>("NeedToRefreshData");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<int>("GroupRolePermissionId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("GroupRolePermissionId")
-                        .IsUnique();
-
-                    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<DateTime>("LastUpdatedAt");
-
-                    b.HasKey("Id");
-
-                    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(500);
-
-                    b.Property<bool>("UseWrapping");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("CodeEditorSettings");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<int>("CodeEditorSettingsId");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("LangId");
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Theme")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("UserId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CodeEditorSettingsId")
-                        .IsUnique();
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<int>("SystemRolePermissionId");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("SystemRolePermissionId")
-                        .IsUnique();
-
-                    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.HasKey("Id");
-
-                    b.ToTable("SystemRolePermissions");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
-
-                    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(500);
-
-                    b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<int>("TestServerTimeoutInMs");
-
-                    b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("FirstName")
-                        .HasMaxLength(500);
-
-                    b.Property<bool>("IsActivated");
-
-                    b.Property<DateTime>("LastLoginAt");
-
-                    b.Property<string>("LastName")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("SystemRoleId");
-
-                    b.Property<string>("Token")
-                        .IsRequired()
-                        .HasMaxLength(500);
-
-                    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(500);
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(500);
-
-                    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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("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.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .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")
-                        .WithOne("MetaData")
-                        .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
-                });
-
-            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.SolutionAssessment", "Assessment")
-                        .WithOne("Solution")
-                        .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.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.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .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.TestSettings", "TestSettings")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType")
-                        .WithMany()
-                        .HasForeignKey("TestTypeId");
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("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.GroupRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade);
-
-                    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.SystemRole", b =>
-                {
-                    b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission")
-                        .WithOne()
-                        .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId")
-                        .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/20190612151016_Renames.cs b/src/ClientServer/Migrations/20190612151016_Renames.cs
deleted file mode 100755
index 670255e4fb7942b07cef8f3deade82603a3d58f2..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190612151016_Renames.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class Renames : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.RenameColumn(
-                name: "CanReleaseExercises",
-                table: "GroupRolePermissions",
-                newName: "CanManageExerciseReleases"
-            );
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.RenameColumn(
-                name: "CanManageExerciseReleases",
-                table: "GroupRolePermissions",
-                newName: "CanReleaseExercises"
-            );
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.cs b/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.cs
deleted file mode 100755
index 81942cd3d339c237333727fddcc15e9e36ad1bda..0000000000000000000000000000000000000000
--- a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.cs
+++ /dev/null
@@ -1,157 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace ClientServer.Migrations
-{
-    public partial class RemoveOldDbAssets : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_CustomProjectTestAssets_CustomProjectTests_CustomProjectTestId",
-                table: "CustomProjectTestAssets");
-
-            migrationBuilder.DropIndex(
-                name: "IX_CustomProjectTestAssets_CustomProjectTestId",
-                table: "CustomProjectTestAssets");
-
-            migrationBuilder.DropColumn(
-                name: "CustomProjectTestId",
-                table: "CustomProjectTestAssets");
-
-            migrationBuilder.DropTable(
-                name: "Assets");
-
-            migrationBuilder.DropTable(
-                name: "CustomTestAssets");
-
-            migrationBuilder.DropTable(
-                name: "TestAssets");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "Assets",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    AssetUrl = table.Column<string>(maxLength: 500, nullable: true),
-                    Content = table.Column<byte[]>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    CustomProjectDescriptionId = table.Column<int>(nullable: true),
-                    DisplayName = table.Column<string>(maxLength: 500, nullable: true),
-                    ExerciseDescriptionId = table.Column<int>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(maxLength: 500, nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Assets", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_Assets_CustomProjectDescriptions_CustomProjectDescriptionId",
-                        column: x => x.CustomProjectDescriptionId,
-                        principalTable: "CustomProjectDescriptions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_Assets_ExerciseDescriptions_ExerciseDescriptionId",
-                        column: x => x.ExerciseDescriptionId,
-                        principalTable: "ExerciseDescriptions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomTestAssets",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<byte[]>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    CustomTestId = table.Column<int>(nullable: false),
-                    DisplayName = table.Column<string>(maxLength: 500, nullable: true),
-                    Hash = table.Column<string>(maxLength: 500, nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(maxLength: 500, nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CustomTestAssets", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_CustomTestAssets_CustomTest_CustomTestId",
-                        column: x => x.CustomTestId,
-                        principalTable: "CustomTest",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "TestAssets",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<byte[]>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(maxLength: 500, nullable: true),
-                    Hash = table.Column<string>(maxLength: 500, nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(maxLength: 500, nullable: true),
-                    TestId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_TestAssets", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_TestAssets_Tests_TestId",
-                        column: x => x.TestId,
-                        principalTable: "Tests",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.AddColumn<int>(
-                name: "CustomProjectTestId",
-                table: "CustomProjectTestAssets",
-                nullable: false,
-                defaultValue: 0);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomProjectTestAssets_CustomProjectTestId",
-                table: "CustomProjectTestAssets",
-                column: "CustomProjectTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Assets_CustomProjectDescriptionId",
-                table: "Assets",
-                column: "CustomProjectDescriptionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Assets_ExerciseDescriptionId",
-                table: "Assets",
-                column: "ExerciseDescriptionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestAssets_CustomTestId",
-                table: "CustomTestAssets",
-                column: "CustomTestId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_TestAssets_TestId",
-                table: "TestAssets",
-                column: "TestId");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_CustomProjectTestAssets_CustomProjectTests_CustomProjectTestId",
-                table: "CustomProjectTestAssets",
-                column: "CustomProjectTestId",
-                principalTable: "CustomProjectTests",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}
diff --git a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.Designer.cs b/src/ClientServer/Migrations/20190729124536_init.Designer.cs
similarity index 94%
rename from src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.Designer.cs
rename to src/ClientServer/Migrations/20190729124536_init.Designer.cs
index 0da3864f4aea3ab7986eecf60dd48aa1262b246c..c6c64f5e229b2a029d19d3081a7aa30cc33e0805 100755
--- a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.Designer.cs
+++ b/src/ClientServer/Migrations/20190729124536_init.Designer.cs
@@ -9,8 +9,8 @@ using ClientServer.Models.Exercises.Release;
 namespace ClientServer.Migrations
 {
     [DbContext(typeof(YapexDbContext))]
-    [Migration("20190728133647_RemoveOldDbAssets")]
-    partial class RemoveOldDbAssets
+    [Migration("20190729124536_init")]
+    partial class init
     {
         protected override void BuildTargetModel(ModelBuilder modelBuilder)
         {
@@ -35,7 +35,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("LastEditorPLangId");
 
@@ -56,7 +56,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(50000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -120,7 +120,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -130,7 +130,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -149,7 +149,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -158,7 +158,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -190,15 +190,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -239,15 +239,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -300,14 +300,14 @@ namespace ClientServer.Migrations
                     b.Property<int>("AfterSolutionId");
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -343,15 +343,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -387,15 +387,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -466,7 +466,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsOnlyVisibleToOwner");
 
@@ -475,10 +475,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("UserGroupId");
 
@@ -499,7 +499,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(50000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -570,7 +570,7 @@ namespace ClientServer.Migrations
 
                     b.Property<string>("GeneratedCode")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("HadAutomaticAssessmentErrors");
 
@@ -597,7 +597,7 @@ namespace ClientServer.Migrations
                     b.Property<int?>("MaxManualPoint");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int>("PLangId");
 
@@ -650,15 +650,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -715,14 +715,14 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<int?>("MainFileId");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
 
@@ -745,10 +745,10 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<int?>("ManualPoints");
 
@@ -759,7 +759,7 @@ namespace ClientServer.Migrations
                     b.Property<int?>("NormalTestPoints");
 
                     b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int?>("SubmitTestPoints");
 
@@ -774,14 +774,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -827,15 +827,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -860,19 +860,19 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Description")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -912,14 +912,14 @@ namespace ClientServer.Migrations
                         .IsRequired();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsContentVisibleForUser");
 
@@ -940,14 +940,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("ExerciseReleaseId");
 
@@ -974,7 +974,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("CompileTimeoutInMs");
 
                     b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -1002,14 +1002,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("ExerciseId");
 
@@ -1043,7 +1043,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("CompileTimeoutInMs");
 
                     b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -1068,10 +1068,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("InternalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1103,15 +1103,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1128,15 +1128,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1153,15 +1153,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1178,10 +1178,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Language")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1198,16 +1198,16 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("InternalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1223,17 +1223,17 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("CsrfToken")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("ExpirationDateTime");
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("UserId");
 
@@ -1254,13 +1254,13 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FirstName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("LastName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1268,7 +1268,7 @@ namespace ClientServer.Migrations
 
                     b.Property<string>("Token")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("UserId");
 
@@ -1291,7 +1291,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("GroupRolePermissionId");
 
@@ -1365,7 +1365,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("TabSize");
 
                     b.Property<string>("Theme")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("UseWrapping");
 
@@ -1388,7 +1388,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Theme")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("UserId");
 
@@ -1413,10 +1413,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1476,7 +1476,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int>("CustomProjectTestCompileTimeoutInMs");
 
@@ -1513,18 +1513,18 @@ namespace ClientServer.Migrations
                     b.Property<int>("SubmitTestServerTimeoutInMs");
 
                     b.Property<string>("SubmitTestServerUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("TestServerTimeoutInMs");
 
                     b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -1548,28 +1548,28 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FirstName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsActivated");
 
                     b.Property<DateTime>("LastLoginAt");
 
                     b.Property<string>("LastName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Password")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("SystemRoleId");
 
                     b.Property<string>("Token")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -1589,10 +1589,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
diff --git a/src/ClientServer/Migrations/20160824181544_init.cs b/src/ClientServer/Migrations/20190729124536_init.cs
old mode 100644
new mode 100755
similarity index 53%
rename from src/ClientServer/Migrations/20160824181544_init.cs
rename to src/ClientServer/Migrations/20190729124536_init.cs
index bb8b12074e67279e2a48485c8d5066f7c0725d06..45411889a8260ec61b9ad4bf8b1f84ac82a4c396
--- a/src/ClientServer/Migrations/20160824181544_init.cs
+++ b/src/ClientServer/Migrations/20190729124536_init.cs
@@ -21,18 +21,41 @@ namespace ClientServer.Migrations
                 });
 
             migrationBuilder.CreateTable(
-                name: "ContentTypes",
+                name: "CustomProjectTestAssets",
                 columns: table => new
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    Content = table.Column<byte[]>(nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    Hash = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Type = table.Column<string>(nullable: true)
+                    MimeType = table.Column<string>(maxLength: 2000, nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjectTestAssets", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "SolutionAssessment",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    FeedbackForStudent = table.Column<string>(maxLength: 10000, nullable: true),
+                    LastAssessmentErrorMessage = table.Column<string>(maxLength: 80000, nullable: true),
+                    ManualPoints = table.Column<int>(nullable: true),
+                    MaxNormalTestPoints = table.Column<int>(nullable: false),
+                    MaxSubmitTestPoints = table.Column<int>(nullable: false),
+                    NormalTestPoints = table.Column<int>(nullable: true),
+                    NoteForOtherTutors = table.Column<string>(maxLength: 10000, nullable: true),
+                    SubmitTestPoints = table.Column<int>(nullable: true)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_ContentTypes", x => x.Id);
+                    table.PrimaryKey("PK_SolutionAssessment", x => x.Id);
                 });
 
             migrationBuilder.CreateTable(
@@ -42,7 +65,11 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
+                    Description = table.Column<string>(maxLength: 2000, nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    HtmlBackgroundColor = table.Column<string>(maxLength: 2000, nullable: true),
+                    HtmlColor = table.Column<string>(maxLength: 2000, nullable: true),
+                    HtmlIcon = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
                 constraints: table =>
@@ -56,6 +83,8 @@ namespace ClientServer.Migrations
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CompileTimeoutInMs = table.Column<int>(nullable: false),
+                    CompilerOptions = table.Column<string>(maxLength: 2000, nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
                     MaxDiskSpaceInKb = table.Column<int>(nullable: false),
@@ -74,8 +103,8 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    InternalName = table.Column<string>(nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    InternalName = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
                 constraints: table =>
@@ -83,6 +112,60 @@ namespace ClientServer.Migrations
                     table.PrimaryKey("PK_TestTypes", x => x.Id);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "FileReferenceMarkdownAssets",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    Hash = table.Column<string>(maxLength: 2000, nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    MimeType = table.Column<string>(maxLength: 2000, nullable: true),
+                    OriginalName = table.Column<string>(maxLength: 2000, nullable: true),
+                    SizeInBytes = table.Column<long>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_FileReferenceMarkdownAssets", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "FileReferenceTestAssets",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    Hash = table.Column<string>(maxLength: 2000, nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    MimeType = table.Column<string>(maxLength: 2000, nullable: true),
+                    OriginalName = table.Column<string>(maxLength: 2000, nullable: true),
+                    SizeInBytes = table.Column<long>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_FileReferenceTestAssets", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "FileReferenceUserFileAssets",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    Hash = table.Column<string>(maxLength: 2000, nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    MimeType = table.Column<string>(maxLength: 2000, nullable: true),
+                    OriginalName = table.Column<string>(maxLength: 2000, nullable: true),
+                    SizeInBytes = table.Column<long>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_FileReferenceUserFileAssets", x => x.Id);
+                });
+
             migrationBuilder.CreateTable(
                 name: "Langs",
                 columns: table => new
@@ -90,7 +173,8 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    Language = table.Column<string>(nullable: true),
+                    LangShortcut = table.Column<string>(maxLength: 2000, nullable: true),
+                    Language = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
                 constraints: table =>
@@ -105,8 +189,10 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    InternalName = table.Column<string>(nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    EditorHighlightModeName = table.Column<string>(maxLength: 2000, nullable: true),
+                    FileExtensionsWithDot = table.Column<string>(maxLength: 2000, nullable: true),
+                    InternalName = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
                 constraints: table =>
@@ -123,14 +209,15 @@ namespace ClientServer.Migrations
                     CanAddUserToGroup = table.Column<bool>(nullable: false),
                     CanAssessExercises = table.Column<bool>(nullable: false),
                     CanChangeExercises = table.Column<bool>(nullable: false),
+                    CanChangeGroupData = table.Column<bool>(nullable: false),
                     CanChangeOtherMembersRole = table.Column<bool>(nullable: false),
-                    CanCopyExercises = table.Column<bool>(nullable: false),
                     CanCreateExercises = table.Column<bool>(nullable: false),
                     CanDeleteExercises = table.Column<bool>(nullable: false),
-                    CanExportExerciseResults = table.Column<bool>(nullable: false),
-                    CanReleaseExercises = table.Column<bool>(nullable: false),
+                    CanLockExercisesPermanently = table.Column<bool>(nullable: false),
+                    CanManageExerciseReleases = table.Column<bool>(nullable: false),
                     CanRemoveMemberFromGroup = table.Column<bool>(nullable: false),
                     CanSeeExercisesFromOthersInGroup = table.Column<bool>(nullable: false),
+                    CanSeeOtherMembers = table.Column<bool>(nullable: false),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
@@ -139,20 +226,6 @@ namespace ClientServer.Migrations
                     table.PrimaryKey("PK_GroupRolePermissions", x => x.Id);
                 });
 
-            migrationBuilder.CreateTable(
-                name: "LdapUsers",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_LdapUsers", x => x.Id);
-                });
-
             migrationBuilder.CreateTable(
                 name: "CodeEditorSettings",
                 columns: table => new
@@ -167,7 +240,8 @@ namespace ClientServer.Migrations
                     ShowLineIndentions = table.Column<bool>(nullable: false),
                     ShowLineNumbers = table.Column<bool>(nullable: false),
                     TabSize = table.Column<int>(nullable: false),
-                    Theme = table.Column<string>(nullable: true)
+                    Theme = table.Column<string>(maxLength: 2000, nullable: true),
+                    UseWrapping = table.Column<bool>(nullable: false)
                 },
                 constraints: table =>
                 {
@@ -180,16 +254,18 @@ namespace ClientServer.Migrations
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CanChangeGroups = table.Column<bool>(nullable: false),
                     CanChangeOtherUsersSystemRole = table.Column<bool>(nullable: false),
                     CanChangeRoles = table.Column<bool>(nullable: false),
                     CanChangeSystemSettings = table.Column<bool>(nullable: false),
+                    CanChangeUserData = table.Column<bool>(nullable: false),
                     CanCreateGroups = table.Column<bool>(nullable: false),
                     CanCreateRoles = table.Column<bool>(nullable: false),
                     CanDeleteActivatedUsers = table.Column<bool>(nullable: false),
                     CanDeleteGroups = table.Column<bool>(nullable: false),
                     CanDeleteRoles = table.Column<bool>(nullable: false),
                     CanManageNewUsers = table.Column<bool>(nullable: false),
+                    CanManageTags = table.Column<bool>(nullable: false),
+                    CanViewDashboard = table.Column<bool>(nullable: false),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
@@ -205,8 +281,8 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    Email = table.Column<string>(nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    Email = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
                 constraints: table =>
@@ -221,7 +297,7 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
                     GroupRolePermissionId = table.Column<int>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
                 },
@@ -243,8 +319,8 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    Email = table.Column<string>(nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    Email = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
                     SystemRolePermissionId = table.Column<int>(nullable: false)
                 },
@@ -266,11 +342,29 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
+                    CurrentServerMessage = table.Column<string>(maxLength: 10000, nullable: true),
+                    CustomProjectTestCompileTimeoutInMs = table.Column<int>(nullable: false),
+                    CustomProjectTestMaxDiskSpaceInKb = table.Column<int>(nullable: false),
+                    CustomProjectTestMemoryLimitInKb = table.Column<int>(nullable: false),
+                    CustomProjectTestTimeoutInMs = table.Column<int>(nullable: false),
                     DefaultGroupCreatorGroupRoleId = table.Column<int>(nullable: false),
                     DefaultGroupRoleId = table.Column<int>(nullable: false),
                     DefaultUserGroupId = table.Column<int>(nullable: false),
+                    JustRunProgramCompileTimeoutInMs = table.Column<int>(nullable: false),
+                    JustRunProgramMaxDiskSpaceInKb = table.Column<int>(nullable: false),
+                    JustRunProgramMemoryLimitInKb = table.Column<int>(nullable: false),
+                    JustRunProgramTimeoutInMs = table.Column<int>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MaxSolutionVersionsPerUser = table.Column<int>(nullable: false, defaultValue: 10)
+                    MaxCustomProjectsPerUser = table.Column<int>(nullable: false),
+                    MaxCustomTestsPerParticipation = table.Column<int>(nullable: false),
+                    MaxNumberOfTestsWithOneRequest = table.Column<int>(nullable: false),
+                    MaxNumberOfTestsWithOneRequestSubmitTestServer = table.Column<int>(nullable: false),
+                    SubmitTestServerTimeoutInMs = table.Column<int>(nullable: false),
+                    SubmitTestServerUrl = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestServerConfigUiUrl = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestServerStatsUrl = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestServerTimeoutInMs = table.Column<int>(nullable: false),
+                    TestServerUrl = table.Column<string>(maxLength: 2000, nullable: true)
                 },
                 constraints: table =>
                 {
@@ -280,19 +374,19 @@ namespace ClientServer.Migrations
                         column: x => x.DefaultGroupCreatorGroupRoleId,
                         principalTable: "GroupRoles",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
+                        onDelete: ReferentialAction.Restrict);
                     table.ForeignKey(
                         name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId",
                         column: x => x.DefaultGroupRoleId,
                         principalTable: "GroupRoles",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
+                        onDelete: ReferentialAction.Restrict);
                     table.ForeignKey(
                         name: "FK_SystemSettings_UserGroups_DefaultUserGroupId",
                         column: x => x.DefaultUserGroupId,
                         principalTable: "UserGroups",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
+                        onDelete: ReferentialAction.Restrict);
                 });
 
             migrationBuilder.CreateTable(
@@ -302,28 +396,20 @@ namespace ClientServer.Migrations
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    Email = table.Column<string>(nullable: true),
-                    FirstName = table.Column<string>(nullable: true),
+                    Email = table.Column<string>(maxLength: 2000, nullable: true),
+                    FirstName = table.Column<string>(maxLength: 2000, nullable: true),
                     IsActivated = table.Column<bool>(nullable: false),
                     LastLoginAt = table.Column<DateTime>(nullable: false),
-                    LastName = table.Column<string>(nullable: true),
+                    LastName = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    LdapUserId = table.Column<int>(nullable: true),
-                    Password = table.Column<string>(nullable: true),
-                    StudentNumber = table.Column<string>(nullable: true),
+                    Password = table.Column<string>(maxLength: 2000, nullable: true),
                     SystemRoleId = table.Column<int>(nullable: true),
-                    Token = table.Column<string>(nullable: false)
+                    Token = table.Column<string>(maxLength: 2000, nullable: false)
                 },
                 constraints: table =>
                 {
                     table.PrimaryKey("PK_Users", x => x.Id);
                     table.UniqueConstraint("Unique_Token", x => x.Token);
-                    table.ForeignKey(
-                        name: "FK_Users_LdapUsers_LdapUserId",
-                        column: x => x.LdapUserId,
-                        principalTable: "LdapUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
                     table.ForeignKey(
                         name: "FK_Users_SystemRoles_SystemRoleId",
                         column: x => x.SystemRoleId,
@@ -332,6 +418,29 @@ namespace ClientServer.Migrations
                         onDelete: ReferentialAction.SetNull);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "CustomProjects",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    LastEditorPLangId = table.Column<int>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    UserId = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjects", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_CustomProjects_Users_UserId",
+                        column: x => x.UserId,
+                        principalTable: "Users",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
             migrationBuilder.CreateTable(
                 name: "Exercises",
                 columns: table => new
@@ -341,11 +450,12 @@ namespace ClientServer.Migrations
                     CanUserCreateCustomTests = table.Column<bool>(nullable: false),
                     CanUserCreateFiles = table.Column<bool>(nullable: false),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    IsOnlyVisibleToMe = table.Column<bool>(nullable: false),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    IsOnlyVisibleToOwner = table.Column<bool>(nullable: false),
+                    IsPermanentlyLocked = table.Column<bool>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    ShortDescription = table.Column<string>(nullable: true),
-                    ShouldShowSubmitResult = table.Column<bool>(nullable: false),
+                    Note = table.Column<string>(maxLength: 10000, nullable: true),
+                    ShortDescription = table.Column<string>(maxLength: 2000, nullable: true),
                     UserGroupId = table.Column<int>(nullable: false),
                     UserId = table.Column<int>(nullable: true)
                 },
@@ -366,6 +476,56 @@ namespace ClientServer.Migrations
                         onDelete: ReferentialAction.SetNull);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "AuthTokens",
+                columns: table => new
+                {
+                    UserId = table.Column<int>(nullable: false),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    CsrfToken = table.Column<string>(maxLength: 2000, nullable: true),
+                    ExpirationDateTime = table.Column<DateTime>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    RandomSecret = table.Column<string>(maxLength: 2000, nullable: true),
+                    UserAuthToken = table.Column<string>(maxLength: 2000, nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_AuthTokens", x => x.UserId);
+                    table.ForeignKey(
+                        name: "FK_AuthTokens_Users_UserId",
+                        column: x => x.UserId,
+                        principalTable: "Users",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "ExternalUsers",
+                columns: table => new
+                {
+                    ExternalId = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    Email = table.Column<string>(maxLength: 2000, nullable: true),
+                    FirstName = table.Column<string>(maxLength: 2000, nullable: true),
+                    LastName = table.Column<string>(maxLength: 2000, nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    NeedToRefreshData = table.Column<bool>(nullable: false),
+                    Token = table.Column<string>(maxLength: 2000, nullable: false),
+                    UserId = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ExternalUsers", x => x.ExternalId);
+                    table.UniqueConstraint("Unique_ExternalToken", x => x.Token);
+                    table.ForeignKey(
+                        name: "FK_ExternalUsers_Users_UserId",
+                        column: x => x.UserId,
+                        principalTable: "Users",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
             migrationBuilder.CreateTable(
                 name: "UserSettingses",
                 columns: table => new
@@ -374,8 +534,9 @@ namespace ClientServer.Migrations
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
                     CodeEditorSettingsId = table.Column<int>(nullable: false),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    LangId = table.Column<int>(nullable: false),
+                    LangId = table.Column<int>(nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    Theme = table.Column<string>(maxLength: 2000, nullable: true),
                     UserId = table.Column<int>(nullable: true)
                 },
                 constraints: table =>
@@ -419,7 +580,7 @@ namespace ClientServer.Migrations
                         column: x => x.GroupRoleId,
                         principalTable: "GroupRoles",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
+                        onDelete: ReferentialAction.Restrict);
                     table.ForeignKey(
                         name: "FK_UserWithUserGroups_UserGroups_UserGroupId",
                         column: x => x.UserGroupId,
@@ -434,13 +595,74 @@ namespace ClientServer.Migrations
                         onDelete: ReferentialAction.Cascade);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "CustomProjectDescriptions",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    Content = table.Column<string>(maxLength: 50000, nullable: true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    CustomProjectId = table.Column<int>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjectDescriptions", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectDescriptions_CustomProjects_CustomProjectId",
+                        column: x => x.CustomProjectId,
+                        principalTable: "CustomProjects",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "CustomProjectTests",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    Content = table.Column<string>(maxLength: 80000, nullable: true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    CustomProjectId = table.Column<int>(nullable: false),
+                    DisplayIndex = table.Column<int>(nullable: false),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    TestSettingsId = table.Column<int>(nullable: false),
+                    TestTypeId = table.Column<int>(nullable: false),
+                    Weight = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjectTests", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectTests_CustomProjects_CustomProjectId",
+                        column: x => x.CustomProjectId,
+                        principalTable: "CustomProjects",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectTests_TestCaseSettingses_TestSettingsId",
+                        column: x => x.TestSettingsId,
+                        principalTable: "TestCaseSettingses",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectTests_TestTypes_TestTypeId",
+                        column: x => x.TestTypeId,
+                        principalTable: "TestTypes",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
             migrationBuilder.CreateTable(
                 name: "ExerciseDescriptions",
                 columns: table => new
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<string>(nullable: true),
+                    Content = table.Column<string>(maxLength: 50000, nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     ExerciseId = table.Column<int>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false)
@@ -495,16 +717,28 @@ namespace ClientServer.Migrations
                     AvailableWorkingTimeInMinutes = table.Column<int>(nullable: false),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     ExerciseId = table.Column<int>(nullable: false),
-                    GeneratedCode = table.Column<string>(nullable: false),
+                    GeneratedCode = table.Column<string>(maxLength: 2000, nullable: false),
+                    HadAutomaticAssessmentErrors = table.Column<bool>(nullable: false),
+                    HasAutomaticAssessmentFinished = table.Column<bool>(nullable: false),
+                    HasAutomaticAssessmentStarted = table.Column<bool>(nullable: false),
                     HasLimitedWorkingTime = table.Column<bool>(nullable: false),
+                    HideExerciseLeaveActions = table.Column<bool>(nullable: false),
+                    HideInOverviews = table.Column<bool>(nullable: false),
+                    HidePrintOptions = table.Column<bool>(nullable: false),
+                    HideSiteHeaderBar = table.Column<bool>(nullable: false),
                     IsReleased = table.Column<bool>(nullable: false),
                     IsVisibleToAllAfterRelease = table.Column<bool>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    Note = table.Column<string>(nullable: true),
-                    PLangId = table.Column<int>(nullable: true),
+                    MaxManualPoint = table.Column<int>(nullable: true),
+                    Note = table.Column<string>(maxLength: 10000, nullable: true),
+                    PLangId = table.Column<int>(nullable: false),
                     ReleaseDurationType = table.Column<int>(nullable: false),
                     ReleaseStartType = table.Column<int>(nullable: false),
-                    ReleasedAt = table.Column<DateTime>(nullable: true)
+                    ReleasedAt = table.Column<DateTime>(nullable: true),
+                    RunAlsoNormalTests = table.Column<bool>(nullable: false),
+                    ShouldAutomaticAssessSubmissions = table.Column<bool>(nullable: false),
+                    ShouldClearClipboard = table.Column<bool>(nullable: false),
+                    ShowAdditionalLogButton = table.Column<bool>(nullable: false)
                 },
                 constraints: table =>
                 {
@@ -521,7 +755,7 @@ namespace ClientServer.Migrations
                         column: x => x.PLangId,
                         principalTable: "PLangs",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
+                        onDelete: ReferentialAction.Restrict);
                 });
 
             migrationBuilder.CreateTable(
@@ -530,6 +764,8 @@ namespace ClientServer.Migrations
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CompileTimeoutInMs = table.Column<int>(nullable: false),
+                    CompilerOptions = table.Column<string>(maxLength: 2000, nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     ExerciseId = table.Column<int>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
@@ -554,10 +790,10 @@ namespace ClientServer.Migrations
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<string>(nullable: true),
+                    Content = table.Column<string>(maxLength: 80000, nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     DisplayIndex = table.Column<int>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
                     ExerciseId = table.Column<int>(nullable: false),
                     IsSubmitTest = table.Column<bool>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
@@ -589,28 +825,75 @@ namespace ClientServer.Migrations
                 });
 
             migrationBuilder.CreateTable(
-                name: "Assets",
+                name: "CustomProjectDescriptionWithFileAsAssetReferences",
+                columns: table => new
+                {
+                    CustomProjectDescriptionId = table.Column<int>(nullable: false),
+                    FileReferenceUserFileAssetId = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjectDescriptionWithFileAsAssetReferences", x => new { x.CustomProjectDescriptionId, x.FileReferenceUserFileAssetId });
+                    table.ForeignKey(
+                        name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptions_CustomProjectDescriptionId",
+                        column: x => x.CustomProjectDescriptionId,
+                        principalTable: "CustomProjectDescriptions",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId",
+                        column: x => x.FileReferenceUserFileAssetId,
+                        principalTable: "FileReferenceUserFileAssets",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "CustomProjectTestWithFileAsAssetReferences",
+                columns: table => new
+                {
+                    CustomProjectTestId = table.Column<int>(nullable: false),
+                    FileReferenceUserFileAssetId = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjectTestWithFileAsAssetReferences", x => new { x.CustomProjectTestId, x.FileReferenceUserFileAssetId });
+                    table.ForeignKey(
+                        name: "FK_CustomProjectTestWithFileAsAssetReferences_CustomProjectTests_CustomProjectTestId",
+                        column: x => x.CustomProjectTestId,
+                        principalTable: "CustomProjectTests",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId",
+                        column: x => x.FileReferenceUserFileAssetId,
+                        principalTable: "FileReferenceUserFileAssets",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "ExerciseDescriptionWithFileAsAssetReferences",
                 columns: table => new
                 {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    AssetUrl = table.Column<string>(nullable: true),
-                    Content = table.Column<byte[]>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
                     ExerciseDescriptionId = table.Column<int>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(nullable: true)
+                    FileReferenceMarkdownAssetId = table.Column<int>(nullable: false)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_Assets", x => x.Id);
+                    table.PrimaryKey("PK_ExerciseDescriptionWithFileAsAssetReferences", x => new { x.ExerciseDescriptionId, x.FileReferenceMarkdownAssetId });
                     table.ForeignKey(
-                        name: "FK_Assets_ExerciseDescriptions_ExerciseDescriptionId",
+                        name: "FK_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptions_ExerciseDescriptionId",
                         column: x => x.ExerciseDescriptionId,
                         principalTable: "ExerciseDescriptions",
                         principalColumn: "Id",
                         onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssets_FileReferenceMarkdownAssetId",
+                        column: x => x.FileReferenceMarkdownAssetId,
+                        principalTable: "FileReferenceMarkdownAssets",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
                 });
 
             migrationBuilder.CreateTable(
@@ -636,7 +919,7 @@ namespace ClientServer.Migrations
                         column: x => x.TagId,
                         principalTable: "Tags",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
+                        onDelete: ReferentialAction.Cascade);
                 });
 
             migrationBuilder.CreateTable(
@@ -647,7 +930,9 @@ namespace ClientServer.Migrations
                     ExerciseReleaseId = table.Column<int>(nullable: false),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     LastEditedPLangId = table.Column<int>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    LockSolutionsFlag = table.Column<bool>(nullable: false),
+                    ShouldNotCount = table.Column<bool>(nullable: false)
                 },
                 constraints: table =>
                 {
@@ -663,7 +948,7 @@ namespace ClientServer.Migrations
                         column: x => x.LastEditedPLangId,
                         principalTable: "PLangs",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
+                        onDelete: ReferentialAction.Restrict);
                     table.ForeignKey(
                         name: "FK_ExerciseReleaseWithUserAsParticipations_Users_UserId",
                         column: x => x.UserId,
@@ -673,23 +958,23 @@ namespace ClientServer.Migrations
                 });
 
             migrationBuilder.CreateTable(
-                name: "TestAssets",
+                name: "TestWithFileAsAssetReferences",
                 columns: table => new
                 {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<byte[]>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(nullable: true),
-                    TestId = table.Column<int>(nullable: false)
+                    TestId = table.Column<int>(nullable: false),
+                    FileReferenceTestAssetId = table.Column<int>(nullable: false)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_TestAssets", x => x.Id);
+                    table.PrimaryKey("PK_TestWithFileAsAssetReferences", x => new { x.TestId, x.FileReferenceTestAssetId });
+                    table.ForeignKey(
+                        name: "FK_TestWithFileAsAssetReferences_FileReferenceTestAssets_FileReferenceTestAssetId",
+                        column: x => x.FileReferenceTestAssetId,
+                        principalTable: "FileReferenceTestAssets",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
                     table.ForeignKey(
-                        name: "FK_TestAssets_Tests_TestId",
+                        name: "FK_TestWithFileAsAssetReferences_Tests_TestId",
                         column: x => x.TestId,
                         principalTable: "Tests",
                         principalColumn: "Id",
@@ -702,10 +987,10 @@ namespace ClientServer.Migrations
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<string>(nullable: true),
+                    Content = table.Column<string>(maxLength: 80000, nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     DisplayIndex = table.Column<int>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
+                    DisplayName = table.Column<string>(maxLength: 2000, nullable: true),
                     ExerciseReleaseId = table.Column<int>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
                     TestTypeId = table.Column<int>(nullable: false),
@@ -729,61 +1014,259 @@ namespace ClientServer.Migrations
                 });
 
             migrationBuilder.CreateTable(
-                name: "CustomTestAssets",
+                name: "CustomTestWithFileAsAssetReferences",
                 columns: table => new
                 {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<byte[]>(nullable: true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
                     CustomTestId = table.Column<int>(nullable: false),
-                    DisplayName = table.Column<string>(nullable: true),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MimeType = table.Column<string>(nullable: true)
+                    FileReferenceUserFileAssetId = table.Column<int>(nullable: false)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_CustomTestAssets", x => x.Id);
+                    table.PrimaryKey("PK_CustomTestWithFileAsAssetReferences", x => new { x.CustomTestId, x.FileReferenceUserFileAssetId });
                     table.ForeignKey(
-                        name: "FK_CustomTestAssets_CustomTest_CustomTestId",
+                        name: "FK_CustomTestWithFileAsAssetReferences_CustomTest_CustomTestId",
                         column: x => x.CustomTestId,
                         principalTable: "CustomTest",
                         principalColumn: "Id",
                         onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId",
+                        column: x => x.FileReferenceUserFileAssetId,
+                        principalTable: "FileReferenceUserFileAssets",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
                 });
 
             migrationBuilder.CreateTable(
-                name: "TemplateFiles",
+                name: "CustomProjectSolutions",
                 columns: table => new
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CodeTemplateId = table.Column<int>(nullable: false),
-                    Content = table.Column<string>(nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    DisplayIndex = table.Column<int>(nullable: false),
-                    FileNameWithExtension = table.Column<string>(nullable: true),
-                    IsEditableByUser = table.Column<bool>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
+                    CustomProjectId = table.Column<int>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    MainFileId = table.Column<int>(nullable: true),
+                    PLangId = table.Column<int>(nullable: false)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_TemplateFiles", x => x.Id);
+                    table.PrimaryKey("PK_CustomProjectSolutions", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId",
+                        column: x => x.CustomProjectId,
+                        principalTable: "CustomProjects",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectSolutions_PLangs_PLangId",
+                        column: x => x.PLangId,
+                        principalTable: "PLangs",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
                 });
 
             migrationBuilder.CreateTable(
-                name: "Templates",
+                name: "CustomProjectSolutionFiles",
                 columns: table => new
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    Content = table.Column<string>(maxLength: 70000, nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
-                    ExerciseId = table.Column<int>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MainFileId = table.Column<int>(nullable: true),
-                    PLangId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
+                    CustomProjectSolutionId = table.Column<int>(nullable: false),
+                    DisplayIndex = table.Column<int>(nullable: false),
+                    FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true),
+                    IsDisplayed = table.Column<bool>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjectSolutionFiles", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectSolutionFiles_CustomProjectSolutions_CustomProjectSolutionId",
+                        column: x => x.CustomProjectSolutionId,
+                        principalTable: "CustomProjectSolutions",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "CustomProjectTestWithSolutionAsTestResults",
+                columns: table => new
+                {
+                    CustomProjectSolutionId = table.Column<int>(nullable: false),
+                    CustomProjectTestId = table.Column<int>(nullable: false),
+                    CompileTimeoutInMsUsed = table.Column<int>(nullable: true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    HasCompiled = table.Column<bool>(nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    Passed = table.Column<bool>(nullable: true),
+                    ProgramExitCode = table.Column<int>(nullable: true),
+                    Protocol = table.Column<string>(maxLength: 160100, nullable: true),
+                    RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestResultCode = table.Column<int>(nullable: true),
+                    TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TimeForCompiling = table.Column<int>(nullable: true),
+                    TimeForUserProgram = table.Column<int>(nullable: true),
+                    TimeoutInMsUsed = table.Column<int>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomProjectTestWithSolutionAsTestResults", x => new { x.CustomProjectSolutionId, x.CustomProjectTestId });
+                    table.ForeignKey(
+                        name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutions_CustomProjectSolutionId",
+                        column: x => x.CustomProjectSolutionId,
+                        principalTable: "CustomProjectSolutions",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectTests_CustomProjectTestId",
+                        column: x => x.CustomProjectTestId,
+                        principalTable: "CustomProjectTests",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "AfterSolutionFiles",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    AfterSolutionId = table.Column<int>(nullable: false),
+                    Content = table.Column<string>(maxLength: 70000, nullable: true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    DisplayIndex = table.Column<int>(nullable: false),
+                    FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true),
+                    IsDisplayed = table.Column<bool>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    TemplateFileId = table.Column<int>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_AfterSolutionFiles", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "CustomTestWithAfterSolutionAsTestResults",
+                columns: table => new
+                {
+                    CustomTestId = table.Column<int>(nullable: false),
+                    AfterSolutionId = table.Column<int>(nullable: false),
+                    CompileTimeoutInMsUsed = table.Column<int>(nullable: true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    HasCompiled = table.Column<bool>(nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    Passed = table.Column<bool>(nullable: true),
+                    ProgramExitCode = table.Column<int>(nullable: true),
+                    Protocol = table.Column<string>(maxLength: 160100, nullable: true),
+                    RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestResultCode = table.Column<int>(nullable: true),
+                    TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TimeForCompiling = table.Column<int>(nullable: true),
+                    TimeForUserProgram = table.Column<int>(nullable: true),
+                    TimeoutInMsUsed = table.Column<int>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomTestWithAfterSolutionAsTestResults", x => new { x.CustomTestId, x.AfterSolutionId });
+                    table.ForeignKey(
+                        name: "FK_CustomTestWithAfterSolutionAsTestResults_CustomTest_CustomTestId",
+                        column: x => x.CustomTestId,
+                        principalTable: "CustomTest",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "TestWithAfterSolutionAsTestResults",
+                columns: table => new
+                {
+                    TestId = table.Column<int>(nullable: false),
+                    AfterSolutionId = table.Column<int>(nullable: false),
+                    CompileTimeoutInMsUsed = table.Column<int>(nullable: true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    HasCompiled = table.Column<bool>(nullable: true),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    Passed = table.Column<bool>(nullable: true),
+                    ProgramExitCode = table.Column<int>(nullable: true),
+                    Protocol = table.Column<string>(maxLength: 160100, nullable: true),
+                    RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestResultCode = table.Column<int>(nullable: true),
+                    TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TimeForCompiling = table.Column<int>(nullable: true),
+                    TimeForUserProgram = table.Column<int>(nullable: true),
+                    TimeoutInMsUsed = table.Column<int>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_TestWithAfterSolutionAsTestResults", x => new { x.TestId, x.AfterSolutionId });
+                    table.ForeignKey(
+                        name: "FK_TestWithAfterSolutionAsTestResults_Tests_TestId",
+                        column: x => x.TestId,
+                        principalTable: "Tests",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "AfterSolutions",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    MainFileId = table.Column<int>(nullable: true),
+                    SolutionExerciseReleaseId = table.Column<int>(nullable: false),
+                    SolutionPLangId = table.Column<int>(nullable: false),
+                    SolutionUserId = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_AfterSolutions", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId",
+                        column: x => x.MainFileId,
+                        principalTable: "AfterSolutionFiles",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.SetNull);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "TemplateFiles",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CodeTemplateId = table.Column<int>(nullable: false),
+                    Content = table.Column<string>(maxLength: 70000, nullable: true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    DisplayIndex = table.Column<int>(nullable: false),
+                    FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true),
+                    IsContentVisibleForUser = table.Column<bool>(nullable: false),
+                    IsEditableByUser = table.Column<bool>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_TemplateFiles", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Templates",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
+                    CreatedAt = table.Column<DateTime>(nullable: false),
+                    ExerciseId = table.Column<int>(nullable: false),
+                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
+                    MainFileId = table.Column<int>(nullable: true),
+                    PLangId = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
                 {
                     table.PrimaryKey("PK_Templates", x => x.Id);
                     table.ForeignKey(
@@ -803,7 +1286,7 @@ namespace ClientServer.Migrations
                         column: x => x.PLangId,
                         principalTable: "PLangs",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
+                        onDelete: ReferentialAction.Restrict);
                 });
 
             migrationBuilder.CreateTable(
@@ -815,18 +1298,26 @@ namespace ClientServer.Migrations
                     PLangId = table.Column<int>(nullable: false),
                     AssessmentId = table.Column<int>(nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
+                    LastEditingIpAddress = table.Column<string>(maxLength: 2000, nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MainSolutionVersionid = table.Column<int>(nullable: false)
+                    MainFileId = table.Column<int>(nullable: true),
+                    Note = table.Column<string>(maxLength: 10000, nullable: true)
                 },
                 constraints: table =>
                 {
                     table.PrimaryKey("PK_Solutions", x => new { x.UserId, x.ExerciseReleaseId, x.PLangId });
+                    table.ForeignKey(
+                        name: "FK_Solutions_SolutionAssessment_AssessmentId",
+                        column: x => x.AssessmentId,
+                        principalTable: "SolutionAssessment",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
                     table.ForeignKey(
                         name: "FK_Solutions_PLangs_PLangId",
                         column: x => x.PLangId,
                         principalTable: "PLangs",
                         principalColumn: "Id",
-                        onDelete: ReferentialAction.SetNull);
+                        onDelete: ReferentialAction.Restrict);
                     table.ForeignKey(
                         name: "FK_Solutions_ExerciseReleaseWithUserAsParticipations_UserId_ExerciseReleaseId",
                         columns: x => new { x.UserId, x.ExerciseReleaseId },
@@ -836,83 +1327,41 @@ namespace ClientServer.Migrations
                 });
 
             migrationBuilder.CreateTable(
-                name: "SolutionVersions",
+                name: "CustomTestWithSingleSolutionAsTestResult",
                 columns: table => new
                 {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    CreatedAt = table.Column<DateTime>(nullable: false),
-                    LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    MainFileId = table.Column<int>(nullable: true),
-                    Note = table.Column<string>(nullable: true),
+                    CustomTestId = table.Column<int>(nullable: false),
+                    SolutionUserId = table.Column<int>(nullable: false),
                     SolutionExerciseReleaseId = table.Column<int>(nullable: false),
                     SolutionPLangId = table.Column<int>(nullable: false),
-                    SolutionUserId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_SolutionVersions", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_SolutionVersions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
-                        principalTable: "Solutions",
-                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CustomTestWithSolutionAsTestResults",
-                columns: table => new
-                {
-                    CustomTestId = table.Column<int>(nullable: false),
-                    SolutionVersionId = table.Column<int>(nullable: false),
+                    CompileTimeoutInMsUsed = table.Column<int>(nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     HasCompiled = table.Column<bool>(nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
                     Passed = table.Column<bool>(nullable: true),
                     ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
+                    Protocol = table.Column<string>(maxLength: 160100, nullable: true),
+                    RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestResultCode = table.Column<int>(nullable: true),
+                    TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TimeForCompiling = table.Column<int>(nullable: true),
+                    TimeForUserProgram = table.Column<int>(nullable: true),
+                    TimeoutInMsUsed = table.Column<int>(nullable: true)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_CustomTestWithSolutionAsTestResults", x => new { x.CustomTestId, x.SolutionVersionId });
+                    table.PrimaryKey("PK_CustomTestWithSingleSolutionAsTestResult", x => new { x.CustomTestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId });
                     table.ForeignKey(
-                        name: "FK_CustomTestWithSolutionAsTestResults_CustomTest_CustomTestId",
+                        name: "FK_CustomTestWithSingleSolutionAsTestResult_CustomTest_CustomTestId",
                         column: x => x.CustomTestId,
                         principalTable: "CustomTest",
                         principalColumn: "Id",
                         onDelete: ReferentialAction.Cascade);
                     table.ForeignKey(
-                        name: "FK_CustomTestWithSolutionAsTestResults_SolutionVersions_SolutionVersionId",
-                        column: x => x.SolutionVersionId,
-                        principalTable: "SolutionVersions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "SolutionAssessment",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    ManualPoints = table.Column<int>(nullable: true),
-                    MaxNormalTestPoints = table.Column<int>(nullable: false),
-                    MaxSubmitTestPoints = table.Column<int>(nullable: false),
-                    NormalTestPoints = table.Column<int>(nullable: false),
-                    Note = table.Column<string>(nullable: true),
-                    SolutionVersionId = table.Column<int>(nullable: false),
-                    SubmitTestPoints = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_SolutionAssessment", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                        column: x => x.SolutionVersionId,
-                        principalTable: "SolutionVersions",
-                        principalColumn: "Id",
+                        name: "FK_CustomTestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
+                        principalTable: "Solutions",
+                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
                         onDelete: ReferentialAction.Cascade);
                 });
 
@@ -922,67 +1371,192 @@ namespace ClientServer.Migrations
                 {
                     Id = table.Column<int>(nullable: false)
                         .Annotation("Npgsql:ValueGeneratedOnAdd", true),
-                    Content = table.Column<string>(nullable: true),
+                    Content = table.Column<string>(maxLength: 70000, nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     DisplayIndex = table.Column<int>(nullable: false),
-                    FileNameWithExtension = table.Column<string>(nullable: true),
+                    FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true),
                     IsDisplayed = table.Column<bool>(nullable: false),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
-                    SolutionVersionId = table.Column<int>(nullable: false),
+                    SolutionExerciseReleaseId = table.Column<int>(nullable: false),
+                    SolutionPLangId = table.Column<int>(nullable: false),
+                    SolutionUserId = table.Column<int>(nullable: false),
                     TemplateFileId = table.Column<int>(nullable: true)
                 },
                 constraints: table =>
                 {
                     table.PrimaryKey("PK_SolutionFiles", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId",
-                        column: x => x.SolutionVersionId,
-                        principalTable: "SolutionVersions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
                     table.ForeignKey(
                         name: "FK_SolutionFiles_TemplateFiles_TemplateFileId",
                         column: x => x.TemplateFileId,
                         principalTable: "TemplateFiles",
                         principalColumn: "Id",
                         onDelete: ReferentialAction.SetNull);
+                    table.ForeignKey(
+                        name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
+                        principalTable: "Solutions",
+                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
+                        onDelete: ReferentialAction.Cascade);
                 });
 
             migrationBuilder.CreateTable(
-                name: "TestResults",
+                name: "TestWithSingleSolutionAsTestResult",
                 columns: table => new
                 {
                     TestId = table.Column<int>(nullable: false),
-                    SolutionVersionId = table.Column<int>(nullable: false),
+                    SolutionUserId = table.Column<int>(nullable: false),
+                    SolutionExerciseReleaseId = table.Column<int>(nullable: false),
+                    SolutionPLangId = table.Column<int>(nullable: false),
+                    CompileTimeoutInMsUsed = table.Column<int>(nullable: true),
                     CreatedAt = table.Column<DateTime>(nullable: false),
                     HasCompiled = table.Column<bool>(nullable: true),
                     LastUpdatedAt = table.Column<DateTime>(nullable: false),
                     Passed = table.Column<bool>(nullable: true),
                     ProgramExitCode = table.Column<int>(nullable: true),
-                    Protocol = table.Column<string>(nullable: true),
-                    TestResultCode = table.Column<int>(nullable: true)
+                    Protocol = table.Column<string>(maxLength: 160100, nullable: true),
+                    RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TestResultCode = table.Column<int>(nullable: true),
+                    TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true),
+                    TimeForCompiling = table.Column<int>(nullable: true),
+                    TimeForUserProgram = table.Column<int>(nullable: true),
+                    TimeoutInMsUsed = table.Column<int>(nullable: true)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_TestResults", x => new { x.TestId, x.SolutionVersionId });
-                    table.ForeignKey(
-                        name: "FK_TestResults_SolutionVersions_SolutionVersionId",
-                        column: x => x.SolutionVersionId,
-                        principalTable: "SolutionVersions",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
+                    table.PrimaryKey("PK_TestWithSingleSolutionAsTestResult", x => new { x.TestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId });
                     table.ForeignKey(
-                        name: "FK_TestResults_Tests_TestId",
+                        name: "FK_TestWithSingleSolutionAsTestResult_Tests_TestId",
                         column: x => x.TestId,
                         principalTable: "Tests",
                         principalColumn: "Id",
                         onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_TestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                        columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId },
+                        principalTable: "Solutions",
+                        principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
+                        onDelete: ReferentialAction.Cascade);
                 });
 
             migrationBuilder.CreateIndex(
-                name: "IX_Assets_ExerciseDescriptionId",
-                table: "Assets",
-                column: "ExerciseDescriptionId");
+                name: "IX_CustomProjects_UserId",
+                table: "CustomProjects",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectDescriptions_CustomProjectId",
+                table: "CustomProjectDescriptions",
+                column: "CustomProjectId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptionId",
+                table: "CustomProjectDescriptionWithFileAsAssetReferences",
+                column: "CustomProjectDescriptionId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssetId",
+                table: "CustomProjectDescriptionWithFileAsAssetReferences",
+                column: "FileReferenceUserFileAssetId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectSolutions_CustomProjectId",
+                table: "CustomProjectSolutions",
+                column: "CustomProjectId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectSolutions_MainFileId",
+                table: "CustomProjectSolutions",
+                column: "MainFileId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectSolutions_PLangId",
+                table: "CustomProjectSolutions",
+                column: "PLangId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectSolutionFiles_CustomProjectSolutionId",
+                table: "CustomProjectSolutionFiles",
+                column: "CustomProjectSolutionId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectTests_CustomProjectId",
+                table: "CustomProjectTests",
+                column: "CustomProjectId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectTests_TestSettingsId",
+                table: "CustomProjectTests",
+                column: "TestSettingsId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectTests_TestTypeId",
+                table: "CustomProjectTests",
+                column: "TestTypeId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectTestWithFileAsAssetReferences_CustomProjectTestId",
+                table: "CustomProjectTestWithFileAsAssetReferences",
+                column: "CustomProjectTestId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssetId",
+                table: "CustomProjectTestWithFileAsAssetReferences",
+                column: "FileReferenceUserFileAssetId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutionId",
+                table: "CustomProjectTestWithSolutionAsTestResults",
+                column: "CustomProjectSolutionId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectTestId",
+                table: "CustomProjectTestWithSolutionAsTestResults",
+                column: "CustomProjectTestId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_AfterSolutions_MainFileId",
+                table: "AfterSolutions",
+                column: "MainFileId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_AfterSolutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                table: "AfterSolutions",
+                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" },
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_AfterSolutionFiles_AfterSolutionId",
+                table: "AfterSolutionFiles",
+                column: "AfterSolutionId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_AfterSolutionFiles_TemplateFileId",
+                table: "AfterSolutionFiles",
+                column: "TemplateFileId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomTestWithAfterSolutionAsTestResults_AfterSolutionId",
+                table: "CustomTestWithAfterSolutionAsTestResults",
+                column: "AfterSolutionId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomTestWithAfterSolutionAsTestResults_CustomTestId",
+                table: "CustomTestWithAfterSolutionAsTestResults",
+                column: "CustomTestId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_TestWithAfterSolutionAsTestResults_AfterSolutionId",
+                table: "TestWithAfterSolutionAsTestResults",
+                column: "AfterSolutionId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_TestWithAfterSolutionAsTestResults_TestId",
+                table: "TestWithAfterSolutionAsTestResults",
+                column: "TestId");
 
             migrationBuilder.CreateIndex(
                 name: "IX_Templates_ExerciseId",
@@ -1000,6 +1574,16 @@ namespace ClientServer.Migrations
                 table: "Templates",
                 column: "PLangId");
 
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomTestWithFileAsAssetReferences_CustomTestId",
+                table: "CustomTestWithFileAsAssetReferences",
+                column: "CustomTestId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssetId",
+                table: "CustomTestWithFileAsAssetReferences",
+                column: "FileReferenceUserFileAssetId");
+
             migrationBuilder.CreateIndex(
                 name: "IX_Exercises_UserGroupId",
                 table: "Exercises",
@@ -1016,6 +1600,16 @@ namespace ClientServer.Migrations
                 column: "ExerciseId",
                 unique: true);
 
+            migrationBuilder.CreateIndex(
+                name: "IX_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptionId",
+                table: "ExerciseDescriptionWithFileAsAssetReferences",
+                column: "ExerciseDescriptionId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssetId",
+                table: "ExerciseDescriptionWithFileAsAssetReferences",
+                column: "FileReferenceMarkdownAssetId");
+
             migrationBuilder.CreateIndex(
                 name: "IX_MetaDatas_ExerciseId",
                 table: "MetaDatas",
@@ -1038,14 +1632,14 @@ namespace ClientServer.Migrations
                 column: "PLangId");
 
             migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithSolutionAsTestResults_CustomTestId",
-                table: "CustomTestWithSolutionAsTestResults",
+                name: "IX_CustomTestWithSingleSolutionAsTestResult_CustomTestId",
+                table: "CustomTestWithSingleSolutionAsTestResult",
                 column: "CustomTestId");
 
             migrationBuilder.CreateIndex(
-                name: "IX_CustomTestWithSolutionAsTestResults_SolutionVersionId",
-                table: "CustomTestWithSolutionAsTestResults",
-                column: "SolutionVersionId");
+                name: "IX_CustomTestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                table: "CustomTestWithSingleSolutionAsTestResult",
+                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
 
             migrationBuilder.CreateIndex(
                 name: "IX_ExerciseReleaseWithUserAsParticipations_ExerciseReleaseId",
@@ -1068,6 +1662,12 @@ namespace ClientServer.Migrations
                 column: "AssessmentId",
                 unique: true);
 
+            migrationBuilder.CreateIndex(
+                name: "IX_Solutions_MainFileId",
+                table: "Solutions",
+                column: "MainFileId",
+                unique: true);
+
             migrationBuilder.CreateIndex(
                 name: "IX_Solutions_PLangId",
                 table: "Solutions",
@@ -1078,41 +1678,30 @@ namespace ClientServer.Migrations
                 table: "Solutions",
                 columns: new[] { "UserId", "ExerciseReleaseId" });
 
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionAssessment_SolutionVersionId",
-                table: "SolutionAssessment",
-                column: "SolutionVersionId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_SolutionFiles_SolutionVersionId",
-                table: "SolutionFiles",
-                column: "SolutionVersionId");
-
             migrationBuilder.CreateIndex(
                 name: "IX_SolutionFiles_TemplateFileId",
                 table: "SolutionFiles",
                 column: "TemplateFileId");
 
             migrationBuilder.CreateIndex(
-                name: "IX_SolutionVersions_MainFileId",
-                table: "SolutionVersions",
-                column: "MainFileId",
-                unique: true);
+                name: "IX_SolutionFiles_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                table: "SolutionFiles",
+                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
 
             migrationBuilder.CreateIndex(
-                name: "IX_SolutionVersions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
-                table: "SolutionVersions",
-                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
+                name: "IX_TestWithSingleSolutionAsTestResult_TestId",
+                table: "TestWithSingleSolutionAsTestResult",
+                column: "TestId");
 
             migrationBuilder.CreateIndex(
-                name: "IX_TestResults_SolutionVersionId",
-                table: "TestResults",
-                column: "SolutionVersionId");
+                name: "IX_TestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                table: "TestWithSingleSolutionAsTestResult",
+                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" });
 
             migrationBuilder.CreateIndex(
-                name: "IX_TestResults_TestId",
-                table: "TestResults",
-                column: "TestId");
+                name: "Unique_Tag",
+                table: "Tags",
+                column: "DisplayName");
 
             migrationBuilder.CreateIndex(
                 name: "IX_TagWithMetaDatas_MetaDataId",
@@ -1139,11 +1728,6 @@ namespace ClientServer.Migrations
                 table: "CustomTest",
                 columns: new[] { "UserId", "ExerciseReleaseId" });
 
-            migrationBuilder.CreateIndex(
-                name: "IX_CustomTestAssets_CustomTestId",
-                table: "CustomTestAssets",
-                column: "CustomTestId");
-
             migrationBuilder.CreateIndex(
                 name: "IX_DefaultCustomTestSettings_ExerciseId",
                 table: "DefaultCustomTestSettings",
@@ -1167,10 +1751,33 @@ namespace ClientServer.Migrations
                 column: "TestTypeId");
 
             migrationBuilder.CreateIndex(
-                name: "IX_TestAssets_TestId",
-                table: "TestAssets",
+                name: "IX_TestWithFileAsAssetReferences_FileReferenceTestAssetId",
+                table: "TestWithFileAsAssetReferences",
+                column: "FileReferenceTestAssetId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_TestWithFileAsAssetReferences_TestId",
+                table: "TestWithFileAsAssetReferences",
                 column: "TestId");
 
+            migrationBuilder.CreateIndex(
+                name: "IX_AuthTokens_UserAuthToken",
+                table: "AuthTokens",
+                column: "UserAuthToken",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_AuthTokens_UserId",
+                table: "AuthTokens",
+                column: "UserId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ExternalUsers_UserId",
+                table: "ExternalUsers",
+                column: "UserId",
+                unique: true);
+
             migrationBuilder.CreateIndex(
                 name: "IX_GroupRoles_GroupRolePermissionId",
                 table: "GroupRoles",
@@ -1218,12 +1825,6 @@ namespace ClientServer.Migrations
                 column: "DefaultUserGroupId",
                 unique: true);
 
-            migrationBuilder.CreateIndex(
-                name: "IX_Users_LdapUserId",
-                table: "Users",
-                column: "LdapUserId",
-                unique: true);
-
             migrationBuilder.CreateIndex(
                 name: "IX_Users_SystemRoleId",
                 table: "Users",
@@ -1244,6 +1845,54 @@ namespace ClientServer.Migrations
                 table: "UserWithUserGroups",
                 column: "UserId");
 
+            migrationBuilder.AddForeignKey(
+                name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId",
+                table: "CustomProjectSolutions",
+                column: "MainFileId",
+                principalTable: "CustomProjectSolutionFiles",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.SetNull);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_AfterSolutionFiles_AfterSolutions_AfterSolutionId",
+                table: "AfterSolutionFiles",
+                column: "AfterSolutionId",
+                principalTable: "AfterSolutions",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_AfterSolutionFiles_TemplateFiles_TemplateFileId",
+                table: "AfterSolutionFiles",
+                column: "TemplateFileId",
+                principalTable: "TemplateFiles",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Restrict);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_CustomTestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId",
+                table: "CustomTestWithAfterSolutionAsTestResults",
+                column: "AfterSolutionId",
+                principalTable: "AfterSolutions",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_TestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId",
+                table: "TestWithAfterSolutionAsTestResults",
+                column: "AfterSolutionId",
+                principalTable: "AfterSolutions",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_AfterSolutions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                table: "AfterSolutions",
+                columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" },
+                principalTable: "Solutions",
+                principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" },
+                onDelete: ReferentialAction.Cascade);
+
             migrationBuilder.AddForeignKey(
                 name: "FK_TemplateFiles_Templates_CodeTemplateId",
                 table: "TemplateFiles",
@@ -1253,16 +1902,8 @@ namespace ClientServer.Migrations
                 onDelete: ReferentialAction.Cascade);
 
             migrationBuilder.AddForeignKey(
-                name: "FK_Solutions_SolutionAssessment_AssessmentId",
+                name: "FK_Solutions_SolutionFiles_MainFileId",
                 table: "Solutions",
-                column: "AssessmentId",
-                principalTable: "SolutionAssessment",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_SolutionVersions_SolutionFiles_MainFileId",
-                table: "SolutionVersions",
                 column: "MainFileId",
                 principalTable: "SolutionFiles",
                 principalColumn: "Id",
@@ -1272,20 +1913,28 @@ namespace ClientServer.Migrations
         protected override void Down(MigrationBuilder migrationBuilder)
         {
             migrationBuilder.DropForeignKey(
-                name: "FK_Templates_Exercises_ExerciseId",
-                table: "Templates");
+                name: "FK_CustomProjects_Users_UserId",
+                table: "CustomProjects");
 
             migrationBuilder.DropForeignKey(
-                name: "FK_ExerciseReleases_Exercises_ExerciseId",
-                table: "ExerciseReleases");
+                name: "FK_Exercises_Users_UserId",
+                table: "Exercises");
 
             migrationBuilder.DropForeignKey(
-                name: "FK_Templates_TemplateFiles_MainFileId",
-                table: "Templates");
+                name: "FK_ExerciseReleaseWithUserAsParticipations_Users_UserId",
+                table: "ExerciseReleaseWithUserAsParticipations");
 
             migrationBuilder.DropForeignKey(
-                name: "FK_SolutionFiles_TemplateFiles_TemplateFileId",
-                table: "SolutionFiles");
+                name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId",
+                table: "CustomProjectSolutions");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId",
+                table: "CustomProjectSolutions");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_Templates_PLangs_PLangId",
+                table: "Templates");
 
             migrationBuilder.DropForeignKey(
                 name: "FK_ExerciseReleases_PLangs_PLangId",
@@ -1300,43 +1949,64 @@ namespace ClientServer.Migrations
                 table: "Solutions");
 
             migrationBuilder.DropForeignKey(
-                name: "FK_ExerciseReleaseWithUserAsParticipations_Users_UserId",
-                table: "ExerciseReleaseWithUserAsParticipations");
+                name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId",
+                table: "AfterSolutions");
 
             migrationBuilder.DropForeignKey(
-                name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId",
-                table: "SolutionAssessment");
+                name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId",
+                table: "SolutionFiles");
 
             migrationBuilder.DropForeignKey(
-                name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId",
-                table: "SolutionFiles");
+                name: "FK_Templates_TemplateFiles_MainFileId",
+                table: "Templates");
 
             migrationBuilder.DropTable(
                 name: "AwaitDummies");
 
             migrationBuilder.DropTable(
-                name: "ContentTypes");
+                name: "CustomProjectDescriptionWithFileAsAssetReferences");
 
             migrationBuilder.DropTable(
-                name: "Assets");
+                name: "CustomProjectTestAssets");
 
             migrationBuilder.DropTable(
-                name: "CustomTestWithSolutionAsTestResults");
+                name: "CustomProjectTestWithFileAsAssetReferences");
 
             migrationBuilder.DropTable(
-                name: "TestResults");
+                name: "CustomProjectTestWithSolutionAsTestResults");
 
             migrationBuilder.DropTable(
-                name: "TagWithMetaDatas");
+                name: "CustomTestWithAfterSolutionAsTestResults");
+
+            migrationBuilder.DropTable(
+                name: "TestWithAfterSolutionAsTestResults");
+
+            migrationBuilder.DropTable(
+                name: "CustomTestWithFileAsAssetReferences");
+
+            migrationBuilder.DropTable(
+                name: "ExerciseDescriptionWithFileAsAssetReferences");
+
+            migrationBuilder.DropTable(
+                name: "CustomTestWithSingleSolutionAsTestResult");
 
             migrationBuilder.DropTable(
-                name: "CustomTestAssets");
+                name: "TestWithSingleSolutionAsTestResult");
+
+            migrationBuilder.DropTable(
+                name: "TagWithMetaDatas");
 
             migrationBuilder.DropTable(
                 name: "DefaultCustomTestSettings");
 
             migrationBuilder.DropTable(
-                name: "TestAssets");
+                name: "TestWithFileAsAssetReferences");
+
+            migrationBuilder.DropTable(
+                name: "AuthTokens");
+
+            migrationBuilder.DropTable(
+                name: "ExternalUsers");
 
             migrationBuilder.DropTable(
                 name: "UserSettingses");
@@ -1347,9 +2017,24 @@ namespace ClientServer.Migrations
             migrationBuilder.DropTable(
                 name: "UserWithUserGroups");
 
+            migrationBuilder.DropTable(
+                name: "CustomProjectDescriptions");
+
+            migrationBuilder.DropTable(
+                name: "CustomProjectTests");
+
+            migrationBuilder.DropTable(
+                name: "FileReferenceUserFileAssets");
+
             migrationBuilder.DropTable(
                 name: "ExerciseDescriptions");
 
+            migrationBuilder.DropTable(
+                name: "FileReferenceMarkdownAssets");
+
+            migrationBuilder.DropTable(
+                name: "CustomTest");
+
             migrationBuilder.DropTable(
                 name: "MetaDatas");
 
@@ -1357,7 +2042,7 @@ namespace ClientServer.Migrations
                 name: "Tags");
 
             migrationBuilder.DropTable(
-                name: "CustomTest");
+                name: "FileReferenceTestAssets");
 
             migrationBuilder.DropTable(
                 name: "Tests");
@@ -1381,49 +2066,58 @@ namespace ClientServer.Migrations
                 name: "GroupRolePermissions");
 
             migrationBuilder.DropTable(
-                name: "Exercises");
+                name: "Users");
 
             migrationBuilder.DropTable(
-                name: "UserGroups");
+                name: "SystemRoles");
 
             migrationBuilder.DropTable(
-                name: "TemplateFiles");
+                name: "SystemRolePermissions");
 
             migrationBuilder.DropTable(
-                name: "Templates");
+                name: "CustomProjects");
 
             migrationBuilder.DropTable(
-                name: "PLangs");
+                name: "CustomProjectSolutionFiles");
 
             migrationBuilder.DropTable(
-                name: "Users");
+                name: "CustomProjectSolutions");
 
             migrationBuilder.DropTable(
-                name: "LdapUsers");
+                name: "PLangs");
 
             migrationBuilder.DropTable(
-                name: "SystemRoles");
+                name: "AfterSolutionFiles");
 
             migrationBuilder.DropTable(
-                name: "SystemRolePermissions");
+                name: "AfterSolutions");
+
+            migrationBuilder.DropTable(
+                name: "Solutions");
 
             migrationBuilder.DropTable(
-                name: "SolutionVersions");
+                name: "SolutionAssessment");
 
             migrationBuilder.DropTable(
                 name: "SolutionFiles");
 
             migrationBuilder.DropTable(
-                name: "Solutions");
+                name: "ExerciseReleaseWithUserAsParticipations");
 
             migrationBuilder.DropTable(
-                name: "SolutionAssessment");
+                name: "ExerciseReleases");
 
             migrationBuilder.DropTable(
-                name: "ExerciseReleaseWithUserAsParticipations");
+                name: "TemplateFiles");
 
             migrationBuilder.DropTable(
-                name: "ExerciseReleases");
+                name: "Templates");
+
+            migrationBuilder.DropTable(
+                name: "Exercises");
+
+            migrationBuilder.DropTable(
+                name: "UserGroups");
         }
     }
 }
diff --git a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.Designer.cs b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.Designer.cs
similarity index 89%
rename from src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.Designer.cs
rename to src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.Designer.cs
index 4996cf09839358e7e237118cef4a4b3c91d73d46..557b03f1ce85b027574493d325a76f04dc8bf620 100755
--- a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.Designer.cs
+++ b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.Designer.cs
@@ -9,8 +9,8 @@ using ClientServer.Models.Exercises.Release;
 namespace ClientServer.Migrations
 {
     [DbContext(typeof(YapexDbContext))]
-    [Migration("20190601145551_ExerciseTestAssetFiles")]
-    partial class ExerciseTestAssetFiles
+    [Migration("20190729133239_addTestResultCharacterLimit")]
+    partial class addTestResultCharacterLimit
     {
         protected override void BuildTargetModel(ModelBuilder modelBuilder)
         {
@@ -35,7 +35,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("LastEditorPLangId");
 
@@ -56,7 +56,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(50000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -72,6 +72,21 @@ namespace ClientServer.Migrations
                     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")
@@ -105,7 +120,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -115,7 +130,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -134,7 +149,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -143,7 +158,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -174,25 +189,35 @@ namespace ClientServer.Migrations
 
                     b.Property<DateTime>("CreatedAt");
 
-                    b.Property<int?>("CustomProjectTestId")
-                        .IsRequired();
-
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
+                    b.ToTable("CustomProjectTestAssets");
+                });
+
+            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b =>
+                {
+                    b.Property<int>("CustomProjectTestId");
+
+                    b.Property<int>("FileReferenceUserFileAssetId");
+
+                    b.HasKey("CustomProjectTestId", "FileReferenceUserFileAssetId");
+
                     b.HasIndex("CustomProjectTestId");
 
-                    b.ToTable("CustomProjectTestAssets");
+                    b.HasIndex("FileReferenceUserFileAssetId");
+
+                    b.ToTable("CustomProjectTestWithFileAsAssetReferences");
                 });
 
             modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b =>
@@ -201,6 +226,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("CustomProjectTestId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -214,15 +243,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -275,14 +304,14 @@ namespace ClientServer.Migrations
                     b.Property<int>("AfterSolutionId");
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -305,6 +334,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("AfterSolutionId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -318,15 +351,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -349,6 +382,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("AfterSolutionId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -362,15 +399,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -387,40 +424,6 @@ namespace ClientServer.Migrations
                     b.ToTable("TestWithAfterSolutionAsTestResults");
                 });
 
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<string>("AssetUrl")
-                        .HasMaxLength(500);
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomProjectDescriptionId");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("ExerciseDescriptionId")
-                        .IsRequired();
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomProjectDescriptionId");
-
-                    b.HasIndex("ExerciseDescriptionId");
-
-                    b.ToTable("Assets");
-                });
-
             modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b =>
                 {
                     b.Property<int>("Id")
@@ -448,6 +451,21 @@ namespace ClientServer.Migrations
                     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")
@@ -460,7 +478,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsOnlyVisibleToOwner");
 
@@ -469,10 +487,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("UserGroupId");
 
@@ -493,7 +511,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(50000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -533,8 +551,6 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("ExerciseId");
 
-                    b.Property<int?>("ExerciseId1");
-
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.HasKey("Id");
@@ -542,8 +558,6 @@ namespace ClientServer.Migrations
                     b.HasIndex("ExerciseId")
                         .IsUnique();
 
-                    b.HasIndex("ExerciseId1");
-
                     b.ToTable("MetaDatas");
                 });
 
@@ -564,7 +578,7 @@ namespace ClientServer.Migrations
 
                     b.Property<string>("GeneratedCode")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("HadAutomaticAssessmentErrors");
 
@@ -591,7 +605,7 @@ namespace ClientServer.Migrations
                     b.Property<int?>("MaxManualPoint");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int>("PLangId");
 
@@ -631,6 +645,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("SolutionPLangId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -644,15 +662,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -709,14 +727,14 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<int?>("MainFileId");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
 
@@ -739,10 +757,10 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<int?>("ManualPoints");
 
@@ -753,7 +771,7 @@ namespace ClientServer.Migrations
                     b.Property<int?>("NormalTestPoints");
 
                     b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int?>("SubmitTestPoints");
 
@@ -768,14 +786,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -808,6 +826,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("SolutionPLangId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -821,15 +843,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -854,19 +876,19 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Description")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -906,14 +928,14 @@ namespace ClientServer.Migrations
                         .IsRequired();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsContentVisibleForUser");
 
@@ -934,14 +956,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("ExerciseReleaseId");
 
@@ -960,36 +982,6 @@ namespace ClientServer.Migrations
                     b.ToTable("CustomTest");
                 });
 
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<int?>("CustomTestId")
-                        .IsRequired();
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("CustomTestId");
-
-                    b.ToTable("CustomTestAssets");
-                });
-
             modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
                 {
                     b.Property<int>("Id")
@@ -997,6 +989,9 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("CompileTimeoutInMs");
 
+                    b.Property<string>("CompilerOptions")
+                        .HasMaxLength(2000);
+
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("ExerciseId");
@@ -1023,14 +1018,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("ExerciseId");
 
@@ -1056,36 +1051,6 @@ namespace ClientServer.Migrations
                     b.ToTable("Tests");
                 });
 
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd();
-
-                    b.Property<byte[]>("Content");
-
-                    b.Property<DateTime>("CreatedAt");
-
-                    b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("Hash")
-                        .HasMaxLength(500);
-
-                    b.Property<DateTime>("LastUpdatedAt");
-
-                    b.Property<string>("MimeType")
-                        .HasMaxLength(500);
-
-                    b.Property<int?>("TestId")
-                        .IsRequired();
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("TestId");
-
-                    b.ToTable("TestAssets");
-                });
-
             modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b =>
                 {
                     b.Property<int>("Id")
@@ -1093,6 +1058,9 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("CompileTimeoutInMs");
 
+                    b.Property<string>("CompilerOptions")
+                        .HasMaxLength(2000);
+
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<DateTime>("LastUpdatedAt");
@@ -1116,10 +1084,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("InternalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1151,18 +1119,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("RelativePath")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1179,18 +1144,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
-
-                    b.Property<string>("RelativePath")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1199,6 +1161,31 @@ namespace ClientServer.Migrations
                     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")
@@ -1207,10 +1194,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Language")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1227,16 +1214,16 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("InternalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1252,17 +1239,17 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("CsrfToken")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("ExpirationDateTime");
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("UserId");
 
@@ -1283,13 +1270,13 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FirstName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("LastName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1297,7 +1284,7 @@ namespace ClientServer.Migrations
 
                     b.Property<string>("Token")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("UserId");
 
@@ -1320,7 +1307,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("GroupRolePermissionId");
 
@@ -1355,7 +1342,7 @@ namespace ClientServer.Migrations
 
                     b.Property<bool>("CanLockExercisesPermanently");
 
-                    b.Property<bool>("CanReleaseExercises");
+                    b.Property<bool>("CanManageExerciseReleases");
 
                     b.Property<bool>("CanRemoveMemberFromGroup");
 
@@ -1394,7 +1381,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("TabSize");
 
                     b.Property<string>("Theme")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("UseWrapping");
 
@@ -1417,7 +1404,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Theme")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("UserId");
 
@@ -1442,10 +1429,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1505,7 +1492,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int>("CustomProjectTestCompileTimeoutInMs");
 
@@ -1542,18 +1529,18 @@ namespace ClientServer.Migrations
                     b.Property<int>("SubmitTestServerTimeoutInMs");
 
                     b.Property<string>("SubmitTestServerUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("TestServerTimeoutInMs");
 
                     b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -1577,28 +1564,28 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FirstName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsActivated");
 
                     b.Property<DateTime>("LastLoginAt");
 
                     b.Property<string>("LastName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Password")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("SystemRoleId");
 
                     b.Property<string>("Token")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -1618,10 +1605,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1669,6 +1656,19 @@ namespace ClientServer.Migrations
                         .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")
@@ -1713,12 +1713,17 @@ namespace ClientServer.Migrations
                         .OnDelete(DeleteBehavior.Cascade);
                 });
 
-            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b =>
+            modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b =>
                 {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest")
-                        .WithMany("TestAssets")
+                    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 =>
@@ -1785,18 +1790,6 @@ namespace ClientServer.Migrations
                         .OnDelete(DeleteBehavior.Cascade);
                 });
 
-            modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b =>
-                {
-                    b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("CustomProjectDescriptionId");
-
-                    b.HasOne("ClientServer.Models.Exercises.ExerciseDescription")
-                        .WithMany("Assets")
-                        .HasForeignKey("ExerciseDescriptionId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
             modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b =>
                 {
                     b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
@@ -1814,6 +1807,19 @@ namespace ClientServer.Migrations
                         .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")
@@ -1850,14 +1856,10 @@ namespace ClientServer.Migrations
 
             modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b =>
                 {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
+                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
                         .WithOne("MetaData")
                         .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
                         .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
                 });
 
             modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b =>
@@ -1984,14 +1986,6 @@ namespace ClientServer.Migrations
                         .OnDelete(DeleteBehavior.Cascade);
                 });
 
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("CustomTestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
             modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b =>
                 {
                     b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
@@ -2017,14 +2011,6 @@ namespace ClientServer.Migrations
                         .HasForeignKey("TestTypeId");
                 });
 
-            modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b =>
-                {
-                    b.HasOne("ClientServer.Models.Exercises.Tests.Test")
-                        .WithMany("TestAssets")
-                        .HasForeignKey("TestId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
             modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b =>
                 {
                     b.HasOne("ClientServer.Models.Files.FileReferenceTestAsset", "FileReferenceTestAsset")
diff --git a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.cs b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.cs
similarity index 52%
rename from src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.cs
rename to src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.cs
index 7a69425f26a2ba8676c28bd802bc2ac33c6729f3..0cfbe91831d06e45d3322db995e9e2acea88046b 100755
--- a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.cs
+++ b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.cs
@@ -4,81 +4,74 @@ using Microsoft.EntityFrameworkCore.Migrations;
 
 namespace ClientServer.Migrations
 {
-    public partial class MoreTestLimitsAndCompilerTimeout : Migration
+    public partial class addTestResultCharacterLimit : Migration
     {
         protected override void Up(MigrationBuilder migrationBuilder)
         {
-            migrationBuilder.AddColumn<int>(
-                name: "CustomProjectTestCompileTimeoutInMs",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 2000);
-
-            migrationBuilder.AddColumn<int>(
-                name: "JustRunProgramCompileTimeoutInMs",
-                table: "SystemSettings",
-                nullable: false,
-                defaultValue: 2000);
+            migrationBuilder.DropForeignKey(
+                name: "FK_MetaDatas_Exercises_ExerciseId1",
+                table: "MetaDatas");
 
-            migrationBuilder.AddColumn<int>(
-                name: "CompileTimeoutInMs",
-                table: "TestCaseSettingses",
-                nullable: false,
-                defaultValue: 2000);
+            migrationBuilder.DropIndex(
+                name: "IX_MetaDatas_ExerciseId1",
+                table: "MetaDatas");
 
-            migrationBuilder.AddColumn<int>(
-                name: "CompileTimeoutInMs",
-                table: "DefaultCustomTestSettings",
-                nullable: false,
-                defaultValue: 2000);
+            migrationBuilder.DropColumn(
+                name: "ExerciseId1",
+                table: "MetaDatas");
 
-            migrationBuilder.AddColumn<int>(
-                name: "CompileTimeoutInMsUsed",
+            migrationBuilder.AddColumn<bool>(
+                name: "CharacterLimitExceeded",
                 table: "TestWithSingleSolutionAsTestResult",
-                nullable: true);
+                nullable: false,
+                defaultValue: false);
 
             migrationBuilder.AddColumn<int>(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "TestWithSingleSolutionAsTestResult",
                 nullable: true);
 
-            migrationBuilder.AddColumn<int>(
-                name: "CompileTimeoutInMsUsed",
+            migrationBuilder.AddColumn<bool>(
+                name: "CharacterLimitExceeded",
                 table: "CustomTestWithSingleSolutionAsTestResult",
-                nullable: true);
+                nullable: false,
+                defaultValue: false);
 
             migrationBuilder.AddColumn<int>(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "CustomTestWithSingleSolutionAsTestResult",
                 nullable: true);
 
-            migrationBuilder.AddColumn<int>(
-                name: "CompileTimeoutInMsUsed",
+            migrationBuilder.AddColumn<bool>(
+                name: "CharacterLimitExceeded",
                 table: "TestWithAfterSolutionAsTestResults",
-                nullable: true);
+                nullable: false,
+                defaultValue: false);
 
             migrationBuilder.AddColumn<int>(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "TestWithAfterSolutionAsTestResults",
                 nullable: true);
 
-            migrationBuilder.AddColumn<int>(
-                name: "CompileTimeoutInMsUsed",
+            migrationBuilder.AddColumn<bool>(
+                name: "CharacterLimitExceeded",
                 table: "CustomTestWithAfterSolutionAsTestResults",
-                nullable: true);
+                nullable: false,
+                defaultValue: false);
 
             migrationBuilder.AddColumn<int>(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "CustomTestWithAfterSolutionAsTestResults",
                 nullable: true);
 
-            migrationBuilder.AddColumn<int>(
-                name: "CompileTimeoutInMsUsed",
+            migrationBuilder.AddColumn<bool>(
+                name: "CharacterLimitExceeded",
                 table: "CustomProjectTestWithSolutionAsTestResults",
-                nullable: true);
+                nullable: false,
+                defaultValue: false);
 
             migrationBuilder.AddColumn<int>(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "CustomProjectTestWithSolutionAsTestResults",
                 nullable: true);
         }
@@ -86,60 +79,62 @@ namespace ClientServer.Migrations
         protected override void Down(MigrationBuilder migrationBuilder)
         {
             migrationBuilder.DropColumn(
-                name: "CustomProjectTestCompileTimeoutInMs",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "JustRunProgramCompileTimeoutInMs",
-                table: "SystemSettings");
-
-            migrationBuilder.DropColumn(
-                name: "CompileTimeoutInMs",
-                table: "TestCaseSettingses");
-
-            migrationBuilder.DropColumn(
-                name: "CompileTimeoutInMs",
-                table: "DefaultCustomTestSettings");
-
-            migrationBuilder.DropColumn(
-                name: "CompileTimeoutInMsUsed",
+                name: "CharacterLimitExceeded",
                 table: "TestWithSingleSolutionAsTestResult");
 
             migrationBuilder.DropColumn(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "TestWithSingleSolutionAsTestResult");
 
             migrationBuilder.DropColumn(
-                name: "CompileTimeoutInMsUsed",
+                name: "CharacterLimitExceeded",
                 table: "CustomTestWithSingleSolutionAsTestResult");
 
             migrationBuilder.DropColumn(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "CustomTestWithSingleSolutionAsTestResult");
 
             migrationBuilder.DropColumn(
-                name: "CompileTimeoutInMsUsed",
+                name: "CharacterLimitExceeded",
                 table: "TestWithAfterSolutionAsTestResults");
 
             migrationBuilder.DropColumn(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "TestWithAfterSolutionAsTestResults");
 
             migrationBuilder.DropColumn(
-                name: "CompileTimeoutInMsUsed",
+                name: "CharacterLimitExceeded",
                 table: "CustomTestWithAfterSolutionAsTestResults");
 
             migrationBuilder.DropColumn(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "CustomTestWithAfterSolutionAsTestResults");
 
             migrationBuilder.DropColumn(
-                name: "CompileTimeoutInMsUsed",
+                name: "CharacterLimitExceeded",
                 table: "CustomProjectTestWithSolutionAsTestResults");
 
             migrationBuilder.DropColumn(
-                name: "TimeoutInMsUsed",
+                name: "CharacterLimitUsed",
                 table: "CustomProjectTestWithSolutionAsTestResults");
+
+            migrationBuilder.AddColumn<int>(
+                name: "ExerciseId1",
+                table: "MetaDatas",
+                nullable: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_MetaDatas_ExerciseId1",
+                table: "MetaDatas",
+                column: "ExerciseId1");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_MetaDatas_Exercises_ExerciseId1",
+                table: "MetaDatas",
+                column: "ExerciseId1",
+                principalTable: "Exercises",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Restrict);
         }
     }
 }
diff --git a/src/ClientServer/Migrations/SyndromDbContextModelSnapshot.cs b/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs
old mode 100644
new mode 100755
similarity index 93%
rename from src/ClientServer/Migrations/SyndromDbContextModelSnapshot.cs
rename to src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs
index 72787d5e542f3e7bf790ea54ed0a841606fb1cff..fee1131001010d3f65f3fb6d85bf60fa8950b2ac
--- a/src/ClientServer/Migrations/SyndromDbContextModelSnapshot.cs
+++ b/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs
@@ -9,7 +9,7 @@ using ClientServer.Models.Exercises.Release;
 namespace ClientServer.Migrations
 {
     [DbContext(typeof(YapexDbContext))]
-    partial class SyndromDbContextModelSnapshot : ModelSnapshot
+    partial class YapexDbContextModelSnapshot : ModelSnapshot
     {
         protected override void BuildModel(ModelBuilder modelBuilder)
         {
@@ -34,7 +34,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("LastEditorPLangId");
 
@@ -55,7 +55,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(50000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -119,7 +119,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -129,7 +129,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -148,7 +148,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -157,7 +157,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -189,15 +189,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -225,6 +225,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("CustomProjectTestId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -238,15 +242,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -299,14 +303,14 @@ namespace ClientServer.Migrations
                     b.Property<int>("AfterSolutionId");
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -329,6 +333,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("AfterSolutionId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -342,15 +350,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -373,6 +381,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("AfterSolutionId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -386,15 +398,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -465,7 +477,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsOnlyVisibleToOwner");
 
@@ -474,10 +486,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<string>("ShortDescription")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("UserGroupId");
 
@@ -498,7 +510,7 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(50000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -538,8 +550,6 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("ExerciseId");
 
-                    b.Property<int?>("ExerciseId1");
-
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.HasKey("Id");
@@ -547,8 +557,6 @@ namespace ClientServer.Migrations
                     b.HasIndex("ExerciseId")
                         .IsUnique();
 
-                    b.HasIndex("ExerciseId1");
-
                     b.ToTable("MetaDatas");
                 });
 
@@ -569,7 +577,7 @@ namespace ClientServer.Migrations
 
                     b.Property<string>("GeneratedCode")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("HadAutomaticAssessmentErrors");
 
@@ -596,7 +604,7 @@ namespace ClientServer.Migrations
                     b.Property<int?>("MaxManualPoint");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int>("PLangId");
 
@@ -636,6 +644,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("SolutionPLangId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -649,15 +661,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -714,14 +726,14 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("LastEditingIpAddress")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<int?>("MainFileId");
 
                     b.Property<string>("Note")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.HasKey("UserId", "ExerciseReleaseId", "PLangId");
 
@@ -744,10 +756,10 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("FeedbackForStudent")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<string>("LastAssessmentErrorMessage")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<int?>("ManualPoints");
 
@@ -758,7 +770,7 @@ namespace ClientServer.Migrations
                     b.Property<int?>("NormalTestPoints");
 
                     b.Property<string>("NoteForOtherTutors")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int?>("SubmitTestPoints");
 
@@ -773,14 +785,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsDisplayed");
 
@@ -813,6 +825,10 @@ namespace ClientServer.Migrations
 
                     b.Property<int>("SolutionPLangId");
 
+                    b.Property<bool>("CharacterLimitExceeded");
+
+                    b.Property<int?>("CharacterLimitUsed");
+
                     b.Property<int?>("CompileTimeoutInMsUsed");
 
                     b.Property<DateTime>("CreatedAt");
@@ -826,15 +842,15 @@ namespace ClientServer.Migrations
                     b.Property<int?>("ProgramExitCode");
 
                     b.Property<string>("Protocol")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(160100);
 
                     b.Property<string>("RunnerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TestResultCode");
 
                     b.Property<string>("TestServerVersion")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("TimeForCompiling");
 
@@ -859,19 +875,19 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Description")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlBackgroundColor")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlColor")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("HtmlIcon")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -911,14 +927,14 @@ namespace ClientServer.Migrations
                         .IsRequired();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(10000);
+                        .HasMaxLength(70000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("FileNameWithExtension")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsContentVisibleForUser");
 
@@ -939,14 +955,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("ExerciseReleaseId");
 
@@ -973,7 +989,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("CompileTimeoutInMs");
 
                     b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -1001,14 +1017,14 @@ namespace ClientServer.Migrations
                         .ValueGeneratedOnAdd();
 
                     b.Property<string>("Content")
-                        .HasMaxLength(5000);
+                        .HasMaxLength(80000);
 
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<int>("DisplayIndex");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("ExerciseId");
 
@@ -1042,7 +1058,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("CompileTimeoutInMs");
 
                     b.Property<string>("CompilerOptions")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("CreatedAt");
 
@@ -1067,10 +1083,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("InternalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1102,15 +1118,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1127,15 +1143,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1152,15 +1168,15 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Hash")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("MimeType")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("OriginalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<long>("SizeInBytes");
 
@@ -1177,10 +1193,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("LangShortcut")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Language")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1197,16 +1213,16 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("EditorHighlightModeName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FileExtensionsWithDot")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("InternalName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1222,17 +1238,17 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("CsrfToken")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("ExpirationDateTime");
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("RandomSecret")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("UserAuthToken")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("UserId");
 
@@ -1253,13 +1269,13 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FirstName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("LastName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1267,7 +1283,7 @@ namespace ClientServer.Migrations
 
                     b.Property<string>("Token")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("UserId");
 
@@ -1290,7 +1306,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("GroupRolePermissionId");
 
@@ -1364,7 +1380,7 @@ namespace ClientServer.Migrations
                     b.Property<int>("TabSize");
 
                     b.Property<string>("Theme")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("UseWrapping");
 
@@ -1387,7 +1403,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Theme")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("UserId");
 
@@ -1412,10 +1428,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1475,7 +1491,7 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("CurrentServerMessage")
-                        .HasMaxLength(1000);
+                        .HasMaxLength(10000);
 
                     b.Property<int>("CustomProjectTestCompileTimeoutInMs");
 
@@ -1512,18 +1528,18 @@ namespace ClientServer.Migrations
                     b.Property<int>("SubmitTestServerTimeoutInMs");
 
                     b.Property<string>("SubmitTestServerUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("TestServerConfigUiUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("TestServerStatsUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int>("TestServerTimeoutInMs");
 
                     b.Property<string>("TestServerUrl")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -1547,28 +1563,28 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("FirstName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<bool>("IsActivated");
 
                     b.Property<DateTime>("LastLoginAt");
 
                     b.Property<string>("LastName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
                     b.Property<string>("Password")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<int?>("SystemRoleId");
 
                     b.Property<string>("Token")
                         .IsRequired()
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.HasKey("Id");
 
@@ -1588,10 +1604,10 @@ namespace ClientServer.Migrations
                     b.Property<DateTime>("CreatedAt");
 
                     b.Property<string>("DisplayName")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<string>("Email")
-                        .HasMaxLength(500);
+                        .HasMaxLength(2000);
 
                     b.Property<DateTime>("LastUpdatedAt");
 
@@ -1839,14 +1855,10 @@ namespace ClientServer.Migrations
 
             modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b =>
                 {
-                    b.HasOne("ClientServer.Models.Exercises.Exercise")
+                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
                         .WithOne("MetaData")
                         .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId")
                         .OnDelete(DeleteBehavior.Cascade);
-
-                    b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise")
-                        .WithMany()
-                        .HasForeignKey("ExerciseId1");
                 });
 
             modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b =>
diff --git a/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs b/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs
index 9454b841fe9d96539d2645db848bb1fcb60c3276..7e4fa7a856ba323845b1ba7a156b68bdc2348ec1 100644
--- a/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs
+++ b/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs
@@ -78,5 +78,16 @@ namespace ClientServer.Models.CustomProjects
         /// </summary>
         [MaxLength(YapexDbContext.DefaultMaxStringLength)]
         public string TestServerVersion { get; set; }
+        
+        /// <summary>
+        /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and
+        /// the <see cref="Protocol"/> was cut
+        /// </summary>
+        public bool CharacterLimitExceeded { get; set; }
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// can be null for old results
+        /// </summary>
+        public int? CharacterLimitUsed { get; set; }
     }
 }
diff --git a/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs
index 099890c0d1ac636e0b18b4bc0d190bde44e8bf27..aba9c7413a23c025ebffaf68b42b1eb620cb5398 100644
--- a/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs
+++ b/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs
@@ -84,5 +84,16 @@ namespace ClientServer.Models.Exercises.AfterSolutions
         /// </summary>
         [MaxLength(YapexDbContext.DefaultMaxStringLength)]
         public string TestServerVersion { get; set; }
+        
+        /// <summary>
+        /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and
+        /// the <see cref="Protocol"/> was cut
+        /// </summary>
+        public bool CharacterLimitExceeded { get; set; }
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// can be null for old results
+        /// </summary>
+        public int? CharacterLimitUsed { get; set; }
     }
 }
diff --git a/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs
index cbf5dfbb6522f1be4ba0201ac692ee9c02ec21d3..fae4b2ba2213230101365dcce8804f05f4a8a226 100644
--- a/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs
+++ b/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs
@@ -86,5 +86,16 @@ namespace ClientServer.Models.Exercises.AfterSolutions
         /// </summary>
         [MaxLength(YapexDbContext.DefaultMaxStringLength)]
         public string TestServerVersion { get; set; }
+        
+        /// <summary>
+        /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and
+        /// the <see cref="Protocol"/> was cut
+        /// </summary>
+        public bool CharacterLimitExceeded { get; set; }
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// can be null for old results
+        /// </summary>
+        public int? CharacterLimitUsed { get; set; }
     }
 }
diff --git a/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs
index 28be011842bfaac425581c0f034503e0588692bb..089f479cd32fdb5800df2be44b784548397a5fa8 100644
--- a/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs
+++ b/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs
@@ -94,6 +94,17 @@ namespace ClientServer.Models.Exercises.Solution
         /// </summary>
         [MaxLength(YapexDbContext.DefaultMaxStringLength)]
         public string TestServerVersion { get; set; }
+        
+        /// <summary>
+        /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and
+        /// the <see cref="Protocol"/> was cut
+        /// </summary>
+        public bool CharacterLimitExceeded { get; set; }
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// can be null for old results
+        /// </summary>
+        public int? CharacterLimitUsed { get; set; }
 
     }
 }
diff --git a/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs
index 64b35e8332c03d3f0af7b4eb95c1d201e5947aad..3e1d5c1bbb2687eef22ac40d67525c8f9dd3590d 100644
--- a/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs
+++ b/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs
@@ -96,5 +96,16 @@ namespace ClientServer.Models.Exercises.Solution
         /// </summary>
         [MaxLength(YapexDbContext.DefaultMaxStringLength)]
         public string TestServerVersion { get; set; }
+
+        /// <summary>
+        /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and
+        /// the <see cref="Protocol"/> was cut
+        /// </summary>
+        public bool CharacterLimitExceeded { get; set; }
+        /// <summary>
+        /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/>
+        /// can be null for old results
+        /// </summary>
+        public int? CharacterLimitUsed { get; set; }
     }
 }