From e5868e4f6300740ba7964eabed7ea6b635c2d68a Mon Sep 17 00:00:00 2001
From: mborzyszkowski <maciej.borzyszkowski@gmail.com>
Date: Sat, 3 Oct 2020 22:31:53 +0200
Subject: [PATCH 1/2] InternshipType changes + new migration

---
 .../Controllers/InternshipTypesController.cs  |  11 +-
 .../Queries/InternshipTypeFrom.cs             |  11 +-
 .../SearchQuery/InternshipTypeSearchQuery.cs  |   3 +-
 .../Entity/Internship/InternshipType.cs       |   3 +-
 .../DatabaseFiller.cs                         |  55 +-
 .../20201002222652_Initial.Designer.cs        | 664 ------------------
 .../Migrations/20201002222652_Initial.cs      | 467 ------------
 .../InternshipDbContextModelSnapshot.cs       | 662 -----------------
 8 files changed, 38 insertions(+), 1838 deletions(-)
 delete mode 100644 src/InternshipSystem.Repository/Migrations/20201002222652_Initial.Designer.cs
 delete mode 100644 src/InternshipSystem.Repository/Migrations/20201002222652_Initial.cs
 delete mode 100644 src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs

diff --git a/src/InternshipSystem.Api/Controllers/InternshipTypesController.cs b/src/InternshipSystem.Api/Controllers/InternshipTypesController.cs
index f6f01ae..d427da7 100644
--- a/src/InternshipSystem.Api/Controllers/InternshipTypesController.cs
+++ b/src/InternshipSystem.Api/Controllers/InternshipTypesController.cs
@@ -79,8 +79,9 @@ namespace InternshipSystem.Api.Controllers
         public async Task<ActionResult<IEnumerable<InternshipType>>> SearchInternshipTypes([FromQuery] InternshipTypeSearchQuery searchQuery, CancellationToken cancellationToken)
         {
             return await Context.InternshipTypes
-                .Where(t => string.IsNullOrEmpty(searchQuery.Type) || t.Type.Contains(searchQuery.Type))
-                .OrderBy(t => t.Type)
+                .Where(t => string.IsNullOrEmpty(searchQuery.Label) || t.Label.Contains(searchQuery.Label))
+                .Where(t => string.IsNullOrEmpty(searchQuery.LabelEng) || t.Label.Contains(searchQuery.LabelEng))
+                .OrderBy(t => t.Label)
                 .Skip(searchQuery.Page * searchQuery.PerPage)
                 .Take(searchQuery.PerPage)
                 .ToListAsync(cancellationToken);
@@ -118,7 +119,8 @@ namespace InternshipSystem.Api.Controllers
                     return NotFound($"Internship type with id {internshipTypeFrom.Id} not found");
                 }
 
-                internshipType.Type = string.IsNullOrEmpty(internshipTypeFrom.Type) ? internshipType.Type : internshipTypeFrom.Type;
+                internshipType.Label = string.IsNullOrEmpty(internshipTypeFrom.Label) ? internshipType.Label : internshipTypeFrom.Label;
+                internshipType.LabelEng = string.IsNullOrEmpty(internshipTypeFrom.LabelEng) ? internshipType.LabelEng : internshipTypeFrom.LabelEng;
                 internshipType.Description = string.IsNullOrEmpty(internshipTypeFrom.Description) ? internshipType.Description : internshipTypeFrom.Description;
                 internshipType.DescriptionEng = string.IsNullOrEmpty(internshipTypeFrom.DescriptionEng) ? internshipType.DescriptionEng : internshipTypeFrom.DescriptionEng;
             }
@@ -126,7 +128,8 @@ namespace InternshipSystem.Api.Controllers
             {
                 var newInternshipType = new InternshipType
                 {
-                    Type = internshipTypeFrom.Type,
+                    Label = internshipTypeFrom.Label,
+                    LabelEng = internshipTypeFrom.LabelEng,
                     Description = internshipTypeFrom.Description,
                     DescriptionEng = internshipTypeFrom.DescriptionEng,
                 };
diff --git a/src/InternshipSystem.Api/Queries/InternshipTypeFrom.cs b/src/InternshipSystem.Api/Queries/InternshipTypeFrom.cs
index 14abd25..5e746ff 100644
--- a/src/InternshipSystem.Api/Queries/InternshipTypeFrom.cs
+++ b/src/InternshipSystem.Api/Queries/InternshipTypeFrom.cs
@@ -5,7 +5,8 @@ namespace InternshipSystem.Api.Queries
     public class InternshipTypeFrom
     {
         public long? Id { get; set; }
-        public string Type { get; set; }
+        public string Label { get; set; }
+        public string LabelEng { get; set; }
         public string Description { get; set; }
         public string DescriptionEng { get; set; }
         
@@ -15,12 +16,10 @@ namespace InternshipSystem.Api.Queries
             {
                 RuleFor(t => t.Id).NotNull()
                     .When(t =>
-                        string.IsNullOrEmpty(t.Description) || string.IsNullOrEmpty(t.Type) || string.IsNullOrEmpty(t.DescriptionEng));
-                RuleFor(t => t.Type).NotEmpty()
+                        string.IsNullOrEmpty(t.Label) || string.IsNullOrEmpty(t.LabelEng));
+                RuleFor(t => t.Label).NotEmpty()
                     .When(t => !t.Id.HasValue);
-                RuleFor(t => t.Description).NotEmpty()
-                    .When(t => !t.Id.HasValue);
-                RuleFor(t => t.DescriptionEng).NotEmpty()
+                RuleFor(t => t.LabelEng).NotEmpty()
                     .When(t => !t.Id.HasValue);
             }
         }
diff --git a/src/InternshipSystem.Api/Queries/SearchQuery/InternshipTypeSearchQuery.cs b/src/InternshipSystem.Api/Queries/SearchQuery/InternshipTypeSearchQuery.cs
index b8034b7..16bb4c1 100644
--- a/src/InternshipSystem.Api/Queries/SearchQuery/InternshipTypeSearchQuery.cs
+++ b/src/InternshipSystem.Api/Queries/SearchQuery/InternshipTypeSearchQuery.cs
@@ -4,6 +4,7 @@ namespace InternshipSystem.Api.Controllers
 {
     public class InternshipTypeSearchQuery : SearchQuery
     {
-        public string Type { get; set; } = "";
+        public string Label { get; set; } = "";
+        public string LabelEng { get; set; } = "";
     }
 }
\ No newline at end of file
diff --git a/src/InternshipSystem.Core/Entity/Internship/InternshipType.cs b/src/InternshipSystem.Core/Entity/Internship/InternshipType.cs
index 0056c4a..f6a5627 100644
--- a/src/InternshipSystem.Core/Entity/Internship/InternshipType.cs
+++ b/src/InternshipSystem.Core/Entity/Internship/InternshipType.cs
@@ -3,7 +3,8 @@
     public class InternshipType
     {        
         public long Id { get; set; }
-        public string Type { get; set; }
+        public string Label { get; set; }
+        public string LabelEng { get; set; }
         public string Description { get; set; }
         public string DescriptionEng { get; set; }
     }
diff --git a/src/InternshipSystem.Repository/DatabaseFiller.cs b/src/InternshipSystem.Repository/DatabaseFiller.cs
index 5745a8f..6ce607c 100644
--- a/src/InternshipSystem.Repository/DatabaseFiller.cs
+++ b/src/InternshipSystem.Repository/DatabaseFiller.cs
@@ -114,51 +114,40 @@ namespace InternshipSystem.Repository
             {
                 new InternshipType
                 {
-                    Type = "FreeInternship",
-                    Description = "Praktyka bezpłatna",
-                    DescriptionEng = "Free internship",
+                    Label = "Praktyka bezpłatna",
+                    LabelEng = "Free internship",
                 },
                 new InternshipType
                 {
-                    Type = "GraduateInternship",
-                    Description = "Praktyka absolwencka",
-                    DescriptionEng = "Graduate internship",
+                    Label = "Praktyka absolwencka",
+                    LabelEng = "Graduate internship",
                 },
                 new InternshipType
                 {
-                    Type = "FreeApprenticeship",
-                    Description = "Praktyka bezpłatna",
-                    DescriptionEng = "Free apprenticeship",
+                    Label = "Praktyka bezpłatna",
+                    LabelEng = "Free apprenticeship",
                 },
                 new InternshipType
                 {
-                    Type = "PaidApprenticeship",
-                    Description = "np. przemysłowy",
-                    DescriptionEng = "Paid apprenticeship",
+                    Label = "Praktyka Zagraniczna",
+                    LabelEng = "Foreign Internship",
+                    Description = "IAESTE, ERASMUS",
+                    DescriptionEng = "IAESTE, ERASMUS",
                 },
                 new InternshipType
                 {
-                    Type = "ForeignInternship",
-                    Description = "np. IAESTE, ERASMUS",
-                    DescriptionEng = "Foreign internship",
+                    Label = "Umowa o pracę",
+                    LabelEng = "contract of employment",
                 },
                 new InternshipType
                 {
-                    Type = "UOP",
-                    Description = "umowa o pracę",
-                    DescriptionEng = "contract of employment",
+                    Label = "Umowa o dzieło",
+                    LabelEng = "contract work",
                 },
                 new InternshipType
                 {
-                    Type = "UD",
-                    Description = "umowa o dzieło",
-                    DescriptionEng = "contract work",
-                },
-                new InternshipType
-                {
-                    Type = "UZ",
-                    Description = "umowa zlecenie",
-                    DescriptionEng = "contract of mandate"
+                    Label = "Umowa zlecenie",
+                    LabelEng = "contract of mandate"
                 },  
             };
             await Context.InternshipTypes.AddRangeAsync(internshipTypes);
@@ -210,19 +199,19 @@ namespace InternshipSystem.Repository
                     {
                         new EditionInternshipType
                         {
-                            InternshipType = Context.InternshipTypes.First(t => t.Type.Equals("UOP"))
+                            InternshipType = Context.InternshipTypes.First(t => t.Label.Equals("Umowa o pracę"))
                         },
                         new EditionInternshipType
                         {
-                            InternshipType = Context.InternshipTypes.First(t => t.Type.Equals("UZ"))
+                            InternshipType = Context.InternshipTypes.First(t => t.Label.Equals("Umowa zlecenie"))
                         },
                         new EditionInternshipType
                         {
-                            InternshipType = Context.InternshipTypes.First(t => t.Type.Equals("UD"))
+                            InternshipType = Context.InternshipTypes.First(t => t.Label.Equals("Umowa o dzieło"))
                         },
                         new EditionInternshipType
                         {
-                            InternshipType = Context.InternshipTypes.First(t => t.Type.Equals("FreeInternship"))
+                            InternshipType = Context.InternshipTypes.First(t => t.Label.Equals("Praktyka bezpłatna"))
                         }
                     },
                     Internships = new List<Internship>(),
@@ -245,7 +234,7 @@ namespace InternshipSystem.Repository
                         InternshipRegistration = new InternshipRegistration
                         {
                             Company = Context.Companies.First(c => c.Name.Equals("Intel")),
-                            Type = Context.InternshipTypes.First(t => t.Type.Equals("UOP")),
+                            Type = Context.InternshipTypes.First(t => t.Label.Equals("Umowa o pracę")),
                             Start = new DateTime(2000, 7, 1),
                             End = new DateTime(2000, 8, 30),
                             State = DocumentState.Submitted,
@@ -291,7 +280,7 @@ namespace InternshipSystem.Repository
                         InternshipRegistration = new InternshipRegistration
                         {
                             Company = Context.Companies.First(c => c.Name.Equals("Asseco Poland")),
-                            Type =  Context.InternshipTypes.First(t => t.Type.Equals("UZ")),
+                            Type =  Context.InternshipTypes.First(t => t.Label.Equals("Umowa zlecenie")),
                             Start = new DateTime(2000, 7, 1),
                             End = new DateTime(2000, 8, 30),
                             State = DocumentState.Submitted,
diff --git a/src/InternshipSystem.Repository/Migrations/20201002222652_Initial.Designer.cs b/src/InternshipSystem.Repository/Migrations/20201002222652_Initial.Designer.cs
deleted file mode 100644
index 75a0794..0000000
--- a/src/InternshipSystem.Repository/Migrations/20201002222652_Initial.Designer.cs
+++ /dev/null
@@ -1,664 +0,0 @@
-// <auto-generated />
-using System;
-using InternshipSystem.Repository;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-namespace InternshipSystem.Repository.Migrations
-{
-    [DbContext(typeof(InternshipDbContext))]
-    [Migration("20201002222652_Initial")]
-    partial class Initial
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
-                .HasAnnotation("ProductVersion", "3.1.4")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<long?>("CompanyId")
-                        .HasColumnName("company_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long>("Provider")
-                        .HasColumnName("provider")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_branch_office");
-
-                    b.HasIndex("CompanyId")
-                        .HasName("ix_branch_office_company_id");
-
-                    b.ToTable("branch_office");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Company", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Name")
-                        .HasColumnName("name")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Nip")
-                        .HasColumnName("nip")
-                        .HasColumnType("text");
-
-                    b.Property<long>("Provider")
-                        .HasColumnName("provider")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_companies");
-
-                    b.ToTable("companies");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Course", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Name")
-                        .HasColumnName("name")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_course");
-
-                    b.ToTable("course");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Description")
-                        .HasColumnName("description")
-                        .HasColumnType("text");
-
-                    b.Property<long?>("InternshipId")
-                        .HasColumnName("internship_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("InternshipId1")
-                        .HasColumnName("internship_id1")
-                        .HasColumnType("bigint");
-
-                    b.Property<string>("RejectionReason")
-                        .HasColumnName("rejection_reason")
-                        .HasColumnType("text");
-
-                    b.Property<byte[]>("Scan")
-                        .HasColumnName("scan")
-                        .HasColumnType("bytea");
-
-                    b.Property<int>("State")
-                        .HasColumnName("state")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("Type")
-                        .HasColumnName("type")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id")
-                        .HasName("pk_document");
-
-                    b.HasIndex("InternshipId")
-                        .HasName("ix_document_internship_id");
-
-                    b.HasIndex("InternshipId1")
-                        .HasName("ix_document_internship_id1");
-
-                    b.ToTable("document");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("uuid");
-
-                    b.Property<long?>("CourseId")
-                        .HasColumnName("course_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<DateTime>("EditionFinish")
-                        .HasColumnName("edition_finish")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime>("EditionStart")
-                        .HasColumnName("edition_start")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime>("ReportingStart")
-                        .HasColumnName("reporting_start")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.HasKey("Id")
-                        .HasName("pk_editions");
-
-                    b.HasIndex("CourseId")
-                        .HasName("ix_editions_course_id");
-
-                    b.ToTable("editions");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<Guid?>("EditionId")
-                        .HasColumnName("edition_id")
-                        .HasColumnType("uuid");
-
-                    b.Property<float?>("Grade")
-                        .HasColumnName("grade")
-                        .HasColumnType("real");
-
-                    b.Property<long?>("InternshipRegistrationId")
-                        .HasColumnName("internship_registration_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("ReportId")
-                        .HasColumnName("report_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("StudentId")
-                        .HasColumnName("student_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship");
-
-                    b.HasIndex("EditionId")
-                        .HasName("ix_internship_edition_id");
-
-                    b.HasIndex("InternshipRegistrationId")
-                        .HasName("ix_internship_internship_registration_id");
-
-                    b.HasIndex("ReportId")
-                        .HasName("ix_internship_report_id");
-
-                    b.HasIndex("StudentId")
-                        .HasName("ix_internship_student_id");
-
-                    b.ToTable("internship");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<long?>("BranchAddressId")
-                        .HasColumnName("branch_address_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("CompanyId")
-                        .HasColumnName("company_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<DateTime>("End")
-                        .HasColumnName("end")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime>("Start")
-                        .HasColumnName("start")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int>("State")
-                        .HasColumnName("state")
-                        .HasColumnType("integer");
-
-                    b.Property<long?>("TypeId")
-                        .HasColumnName("type_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship_registration");
-
-                    b.HasIndex("BranchAddressId")
-                        .HasName("ix_internship_registration_branch_address_id");
-
-                    b.HasIndex("CompanyId")
-                        .HasName("ix_internship_registration_company_id");
-
-                    b.HasIndex("TypeId")
-                        .HasName("ix_internship_registration_type_id");
-
-                    b.ToTable("internship_registration");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Description")
-                        .HasColumnName("description")
-                        .HasColumnType("text");
-
-                    b.Property<string>("DescriptionEng")
-                        .HasColumnName("description_eng")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship_subject");
-
-                    b.ToTable("internship_subject");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Description")
-                        .HasColumnName("description")
-                        .HasColumnType("text");
-
-                    b.Property<string>("DescriptionEng")
-                        .HasColumnName("description_eng")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .HasColumnName("type")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship_types");
-
-                    b.ToTable("internship_types");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Report", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<int>("Range")
-                        .HasColumnName("range")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("SiteAddress")
-                        .HasColumnName("site_address")
-                        .HasColumnType("text");
-
-                    b.Property<int>("State")
-                        .HasColumnName("state")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id")
-                        .HasName("pk_report");
-
-                    b.ToTable("report");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.StaticPage", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("AccessName")
-                        .HasColumnName("access_name")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Content")
-                        .HasColumnName("content")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ContentEng")
-                        .HasColumnName("content_eng")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .HasColumnName("title")
-                        .HasColumnType("text");
-
-                    b.Property<string>("TitleEng")
-                        .HasColumnName("title_eng")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_static_pages");
-
-                    b.ToTable("static_pages");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Student", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<int>("AlbumNumber")
-                        .HasColumnName("album_number")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Course")
-                        .HasColumnName("course")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasColumnName("email")
-                        .HasColumnType("text");
-
-                    b.Property<string>("FirstName")
-                        .HasColumnName("first_name")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LastName")
-                        .HasColumnName("last_name")
-                        .HasColumnType("text");
-
-                    b.Property<int?>("Semester")
-                        .HasColumnName("semester")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id")
-                        .HasName("pk_students");
-
-                    b.ToTable("students");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
-                {
-                    b.Property<Guid>("EditionId")
-                        .HasColumnName("edition_id")
-                        .HasColumnType("uuid");
-
-                    b.Property<long>("InternshipTypeId")
-                        .HasColumnName("internship_type_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("EditionId", "InternshipTypeId")
-                        .HasName("pk_edition_internship_type");
-
-                    b.HasIndex("InternshipTypeId")
-                        .HasName("ix_edition_internship_type_internship_type_id");
-
-                    b.ToTable("edition_internship_type");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
-                {
-                    b.Property<Guid>("EditionId")
-                        .HasColumnName("edition_id")
-                        .HasColumnType("uuid");
-
-                    b.Property<long>("InternshipSubjectId")
-                        .HasColumnName("internship_subject_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("EditionId", "InternshipSubjectId")
-                        .HasName("pk_edition_subject");
-
-                    b.HasIndex("InternshipSubjectId")
-                        .HasName("ix_edition_subject_internship_subject_id");
-
-                    b.ToTable("edition_subject");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
-                {
-                    b.Property<long>("InternshipRegistrationId")
-                        .HasColumnName("internship_registration_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long>("InternshipSubjectId")
-                        .HasColumnName("internship_subject_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("InternshipRegistrationId", "InternshipSubjectId")
-                        .HasName("pk_program_subject");
-
-                    b.HasIndex("InternshipSubjectId")
-                        .HasName("ix_program_subject_internship_subject_id");
-
-                    b.ToTable("program_subject");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Company", null)
-                        .WithMany("Branches")
-                        .HasForeignKey("CompanyId")
-                        .HasConstraintName("fk_branch_office_companies_company_id");
-
-                    b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 =>
-                        {
-                            b1.Property<long>("BranchOfficeId")
-                                .ValueGeneratedOnAdd()
-                                .HasColumnName("id")
-                                .HasColumnType("bigint")
-                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                            b1.Property<string>("Building")
-                                .HasColumnName("building")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("City")
-                                .HasColumnName("city")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("Country")
-                                .HasColumnName("country")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("PostalCode")
-                                .HasColumnName("postal_code")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("Street")
-                                .HasColumnName("street")
-                                .HasColumnType("text");
-
-                            b1.HasKey("BranchOfficeId")
-                                .HasName("pk_branch_office");
-
-                            b1.ToTable("branch_office");
-
-                            b1.WithOwner()
-                                .HasForeignKey("BranchOfficeId")
-                                .HasConstraintName("fk_branch_address_branch_office_branch_office_id");
-                        });
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
-                        .WithMany("Approvals")
-                        .HasForeignKey("InternshipId")
-                        .HasConstraintName("fk_document_internship_internship_id");
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
-                        .WithMany("Documentation")
-                        .HasForeignKey("InternshipId1")
-                        .HasConstraintName("fk_document_internship_internship_id1");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Course", "Course")
-                        .WithMany()
-                        .HasForeignKey("CourseId")
-                        .HasConstraintName("fk_editions_course_course_id");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
-                        .WithMany("Internships")
-                        .HasForeignKey("EditionId")
-                        .HasConstraintName("fk_internship_editions_edition_id");
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration")
-                        .WithMany()
-                        .HasForeignKey("InternshipRegistrationId")
-                        .HasConstraintName("fk_internship_internship_registration_internship_registration_");
-
-                    b.HasOne("InternshipSystem.Core.Report", "Report")
-                        .WithMany()
-                        .HasForeignKey("ReportId")
-                        .HasConstraintName("fk_internship_report_report_id");
-
-                    b.HasOne("InternshipSystem.Core.Student", "Student")
-                        .WithMany()
-                        .HasForeignKey("StudentId")
-                        .HasConstraintName("fk_internship_students_student_id");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress")
-                        .WithMany()
-                        .HasForeignKey("BranchAddressId")
-                        .HasConstraintName("fk_internship_registration_branch_office_branch_address_id");
-
-                    b.HasOne("InternshipSystem.Core.Company", "Company")
-                        .WithMany()
-                        .HasForeignKey("CompanyId")
-                        .HasConstraintName("fk_internship_registration_companies_company_id");
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type")
-                        .WithMany()
-                        .HasForeignKey("TypeId")
-                        .HasConstraintName("fk_internship_registration_internship_types_type_id");
-
-                    b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 =>
-                        {
-                            b1.Property<long>("InternshipRegistrationId")
-                                .ValueGeneratedOnAdd()
-                                .HasColumnName("id")
-                                .HasColumnType("bigint")
-                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                            b1.Property<string>("Email")
-                                .HasColumnName("email")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("FirstName")
-                                .HasColumnName("first_name")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("LastName")
-                                .HasColumnName("last_name")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("PhoneNumber")
-                                .HasColumnName("phone_number")
-                                .HasColumnType("text");
-
-                            b1.HasKey("InternshipRegistrationId")
-                                .HasName("pk_internship_registration");
-
-                            b1.ToTable("internship_registration");
-
-                            b1.WithOwner()
-                                .HasForeignKey("InternshipRegistrationId")
-                                .HasConstraintName("fk_mentor_internship_registration_internship_registration_id");
-                        });
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
-                        .WithMany("AvailableInternshipTypes")
-                        .HasForeignKey("EditionId")
-                        .HasConstraintName("fk_edition_internship_type_editions_edition_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType")
-                        .WithMany()
-                        .HasForeignKey("InternshipTypeId")
-                        .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
-                        .WithMany("AvailableSubjects")
-                        .HasForeignKey("EditionId")
-                        .HasConstraintName("fk_edition_subject_editions_edition_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
-                        .WithMany()
-                        .HasForeignKey("InternshipSubjectId")
-                        .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration")
-                        .WithMany("Subjects")
-                        .HasForeignKey("InternshipRegistrationId")
-                        .HasConstraintName("fk_program_subject_internship_registration_internship_registrat")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
-                        .WithMany()
-                        .HasForeignKey("InternshipSubjectId")
-                        .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
diff --git a/src/InternshipSystem.Repository/Migrations/20201002222652_Initial.cs b/src/InternshipSystem.Repository/Migrations/20201002222652_Initial.cs
deleted file mode 100644
index 74d742d..0000000
--- a/src/InternshipSystem.Repository/Migrations/20201002222652_Initial.cs
+++ /dev/null
@@ -1,467 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-namespace InternshipSystem.Repository.Migrations
-{
-    public partial class Initial : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "companies",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    nip = table.Column<string>(nullable: true),
-                    name = table.Column<string>(nullable: true),
-                    provider = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_companies", x => x.id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "course",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    name = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_course", x => x.id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "internship_subject",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    description = table.Column<string>(nullable: true),
-                    description_eng = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_internship_subject", x => x.id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "internship_types",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    type = table.Column<string>(nullable: true),
-                    description = table.Column<string>(nullable: true),
-                    description_eng = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_internship_types", x => x.id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "report",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    state = table.Column<int>(nullable: false),
-                    range = table.Column<int>(nullable: false),
-                    site_address = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_report", x => x.id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "static_pages",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    access_name = table.Column<string>(nullable: true),
-                    title = table.Column<string>(nullable: true),
-                    title_eng = table.Column<string>(nullable: true),
-                    content = table.Column<string>(nullable: true),
-                    content_eng = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_static_pages", x => x.id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "students",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    album_number = table.Column<int>(nullable: false),
-                    first_name = table.Column<string>(nullable: true),
-                    last_name = table.Column<string>(nullable: true),
-                    email = table.Column<string>(nullable: true),
-                    course = table.Column<string>(nullable: true),
-                    semester = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_students", x => x.id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "branch_office",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    street = table.Column<string>(nullable: true),
-                    building = table.Column<string>(nullable: true),
-                    city = table.Column<string>(nullable: true),
-                    postal_code = table.Column<string>(nullable: true),
-                    country = table.Column<string>(nullable: true),
-                    provider = table.Column<long>(nullable: false),
-                    company_id = table.Column<long>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_branch_office", x => x.id);
-                    table.ForeignKey(
-                        name: "fk_branch_office_companies_company_id",
-                        column: x => x.company_id,
-                        principalTable: "companies",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "editions",
-                columns: table => new
-                {
-                    id = table.Column<Guid>(nullable: false),
-                    edition_start = table.Column<DateTime>(nullable: false),
-                    edition_finish = table.Column<DateTime>(nullable: false),
-                    reporting_start = table.Column<DateTime>(nullable: false),
-                    course_id = table.Column<long>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_editions", x => x.id);
-                    table.ForeignKey(
-                        name: "fk_editions_course_course_id",
-                        column: x => x.course_id,
-                        principalTable: "course",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "internship_registration",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    company_id = table.Column<long>(nullable: true),
-                    branch_address_id = table.Column<long>(nullable: true),
-                    start = table.Column<DateTime>(nullable: false),
-                    end = table.Column<DateTime>(nullable: false),
-                    first_name = table.Column<string>(nullable: true),
-                    last_name = table.Column<string>(nullable: true),
-                    email = table.Column<string>(nullable: true),
-                    phone_number = table.Column<string>(nullable: true),
-                    type_id = table.Column<long>(nullable: true),
-                    state = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_internship_registration", x => x.id);
-                    table.ForeignKey(
-                        name: "fk_internship_registration_branch_office_branch_address_id",
-                        column: x => x.branch_address_id,
-                        principalTable: "branch_office",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "fk_internship_registration_companies_company_id",
-                        column: x => x.company_id,
-                        principalTable: "companies",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "fk_internship_registration_internship_types_type_id",
-                        column: x => x.type_id,
-                        principalTable: "internship_types",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "edition_internship_type",
-                columns: table => new
-                {
-                    edition_id = table.Column<Guid>(nullable: false),
-                    internship_type_id = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_edition_internship_type", x => new { x.edition_id, x.internship_type_id });
-                    table.ForeignKey(
-                        name: "fk_edition_internship_type_editions_edition_id",
-                        column: x => x.edition_id,
-                        principalTable: "editions",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "fk_edition_internship_type_internship_types_internship_type_id",
-                        column: x => x.internship_type_id,
-                        principalTable: "internship_types",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "edition_subject",
-                columns: table => new
-                {
-                    edition_id = table.Column<Guid>(nullable: false),
-                    internship_subject_id = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_edition_subject", x => new { x.edition_id, x.internship_subject_id });
-                    table.ForeignKey(
-                        name: "fk_edition_subject_editions_edition_id",
-                        column: x => x.edition_id,
-                        principalTable: "editions",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "fk_edition_subject_internship_subject_internship_subject_id",
-                        column: x => x.internship_subject_id,
-                        principalTable: "internship_subject",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "internship",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    student_id = table.Column<long>(nullable: true),
-                    internship_registration_id = table.Column<long>(nullable: true),
-                    report_id = table.Column<long>(nullable: true),
-                    edition_id = table.Column<Guid>(nullable: true),
-                    grade = table.Column<float>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_internship", x => x.id);
-                    table.ForeignKey(
-                        name: "fk_internship_editions_edition_id",
-                        column: x => x.edition_id,
-                        principalTable: "editions",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "fk_internship_internship_registration_internship_registration_",
-                        column: x => x.internship_registration_id,
-                        principalTable: "internship_registration",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "fk_internship_report_report_id",
-                        column: x => x.report_id,
-                        principalTable: "report",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "fk_internship_students_student_id",
-                        column: x => x.student_id,
-                        principalTable: "students",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "program_subject",
-                columns: table => new
-                {
-                    internship_registration_id = table.Column<long>(nullable: false),
-                    internship_subject_id = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_program_subject", x => new { x.internship_registration_id, x.internship_subject_id });
-                    table.ForeignKey(
-                        name: "fk_program_subject_internship_registration_internship_registrat",
-                        column: x => x.internship_registration_id,
-                        principalTable: "internship_registration",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "fk_program_subject_internship_subject_internship_subject_id",
-                        column: x => x.internship_subject_id,
-                        principalTable: "internship_subject",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "document",
-                columns: table => new
-                {
-                    id = table.Column<long>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    description = table.Column<string>(nullable: true),
-                    scan = table.Column<byte[]>(nullable: true),
-                    type = table.Column<int>(nullable: false),
-                    state = table.Column<int>(nullable: false),
-                    rejection_reason = table.Column<string>(nullable: true),
-                    internship_id = table.Column<long>(nullable: true),
-                    internship_id1 = table.Column<long>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("pk_document", x => x.id);
-                    table.ForeignKey(
-                        name: "fk_document_internship_internship_id",
-                        column: x => x.internship_id,
-                        principalTable: "internship",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "fk_document_internship_internship_id1",
-                        column: x => x.internship_id1,
-                        principalTable: "internship",
-                        principalColumn: "id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "ix_branch_office_company_id",
-                table: "branch_office",
-                column: "company_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_document_internship_id",
-                table: "document",
-                column: "internship_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_document_internship_id1",
-                table: "document",
-                column: "internship_id1");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_edition_internship_type_internship_type_id",
-                table: "edition_internship_type",
-                column: "internship_type_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_edition_subject_internship_subject_id",
-                table: "edition_subject",
-                column: "internship_subject_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_editions_course_id",
-                table: "editions",
-                column: "course_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_internship_edition_id",
-                table: "internship",
-                column: "edition_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_internship_internship_registration_id",
-                table: "internship",
-                column: "internship_registration_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_internship_report_id",
-                table: "internship",
-                column: "report_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_internship_student_id",
-                table: "internship",
-                column: "student_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_internship_registration_branch_address_id",
-                table: "internship_registration",
-                column: "branch_address_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_internship_registration_company_id",
-                table: "internship_registration",
-                column: "company_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_internship_registration_type_id",
-                table: "internship_registration",
-                column: "type_id");
-
-            migrationBuilder.CreateIndex(
-                name: "ix_program_subject_internship_subject_id",
-                table: "program_subject",
-                column: "internship_subject_id");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "document");
-
-            migrationBuilder.DropTable(
-                name: "edition_internship_type");
-
-            migrationBuilder.DropTable(
-                name: "edition_subject");
-
-            migrationBuilder.DropTable(
-                name: "program_subject");
-
-            migrationBuilder.DropTable(
-                name: "static_pages");
-
-            migrationBuilder.DropTable(
-                name: "internship");
-
-            migrationBuilder.DropTable(
-                name: "internship_subject");
-
-            migrationBuilder.DropTable(
-                name: "editions");
-
-            migrationBuilder.DropTable(
-                name: "internship_registration");
-
-            migrationBuilder.DropTable(
-                name: "report");
-
-            migrationBuilder.DropTable(
-                name: "students");
-
-            migrationBuilder.DropTable(
-                name: "course");
-
-            migrationBuilder.DropTable(
-                name: "branch_office");
-
-            migrationBuilder.DropTable(
-                name: "internship_types");
-
-            migrationBuilder.DropTable(
-                name: "companies");
-        }
-    }
-}
diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs
deleted file mode 100644
index e78d3af..0000000
--- a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs
+++ /dev/null
@@ -1,662 +0,0 @@
-// <auto-generated />
-using System;
-using InternshipSystem.Repository;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-namespace InternshipSystem.Repository.Migrations
-{
-    [DbContext(typeof(InternshipDbContext))]
-    partial class InternshipDbContextModelSnapshot : ModelSnapshot
-    {
-        protected override void BuildModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
-                .HasAnnotation("ProductVersion", "3.1.4")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<long?>("CompanyId")
-                        .HasColumnName("company_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long>("Provider")
-                        .HasColumnName("provider")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_branch_office");
-
-                    b.HasIndex("CompanyId")
-                        .HasName("ix_branch_office_company_id");
-
-                    b.ToTable("branch_office");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Company", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Name")
-                        .HasColumnName("name")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Nip")
-                        .HasColumnName("nip")
-                        .HasColumnType("text");
-
-                    b.Property<long>("Provider")
-                        .HasColumnName("provider")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_companies");
-
-                    b.ToTable("companies");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Course", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Name")
-                        .HasColumnName("name")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_course");
-
-                    b.ToTable("course");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Description")
-                        .HasColumnName("description")
-                        .HasColumnType("text");
-
-                    b.Property<long?>("InternshipId")
-                        .HasColumnName("internship_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("InternshipId1")
-                        .HasColumnName("internship_id1")
-                        .HasColumnType("bigint");
-
-                    b.Property<string>("RejectionReason")
-                        .HasColumnName("rejection_reason")
-                        .HasColumnType("text");
-
-                    b.Property<byte[]>("Scan")
-                        .HasColumnName("scan")
-                        .HasColumnType("bytea");
-
-                    b.Property<int>("State")
-                        .HasColumnName("state")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("Type")
-                        .HasColumnName("type")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id")
-                        .HasName("pk_document");
-
-                    b.HasIndex("InternshipId")
-                        .HasName("ix_document_internship_id");
-
-                    b.HasIndex("InternshipId1")
-                        .HasName("ix_document_internship_id1");
-
-                    b.ToTable("document");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("uuid");
-
-                    b.Property<long?>("CourseId")
-                        .HasColumnName("course_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<DateTime>("EditionFinish")
-                        .HasColumnName("edition_finish")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime>("EditionStart")
-                        .HasColumnName("edition_start")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime>("ReportingStart")
-                        .HasColumnName("reporting_start")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.HasKey("Id")
-                        .HasName("pk_editions");
-
-                    b.HasIndex("CourseId")
-                        .HasName("ix_editions_course_id");
-
-                    b.ToTable("editions");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<Guid?>("EditionId")
-                        .HasColumnName("edition_id")
-                        .HasColumnType("uuid");
-
-                    b.Property<float?>("Grade")
-                        .HasColumnName("grade")
-                        .HasColumnType("real");
-
-                    b.Property<long?>("InternshipRegistrationId")
-                        .HasColumnName("internship_registration_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("ReportId")
-                        .HasColumnName("report_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("StudentId")
-                        .HasColumnName("student_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship");
-
-                    b.HasIndex("EditionId")
-                        .HasName("ix_internship_edition_id");
-
-                    b.HasIndex("InternshipRegistrationId")
-                        .HasName("ix_internship_internship_registration_id");
-
-                    b.HasIndex("ReportId")
-                        .HasName("ix_internship_report_id");
-
-                    b.HasIndex("StudentId")
-                        .HasName("ix_internship_student_id");
-
-                    b.ToTable("internship");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<long?>("BranchAddressId")
-                        .HasColumnName("branch_address_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long?>("CompanyId")
-                        .HasColumnName("company_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<DateTime>("End")
-                        .HasColumnName("end")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime>("Start")
-                        .HasColumnName("start")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int>("State")
-                        .HasColumnName("state")
-                        .HasColumnType("integer");
-
-                    b.Property<long?>("TypeId")
-                        .HasColumnName("type_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship_registration");
-
-                    b.HasIndex("BranchAddressId")
-                        .HasName("ix_internship_registration_branch_address_id");
-
-                    b.HasIndex("CompanyId")
-                        .HasName("ix_internship_registration_company_id");
-
-                    b.HasIndex("TypeId")
-                        .HasName("ix_internship_registration_type_id");
-
-                    b.ToTable("internship_registration");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Description")
-                        .HasColumnName("description")
-                        .HasColumnType("text");
-
-                    b.Property<string>("DescriptionEng")
-                        .HasColumnName("description_eng")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship_subject");
-
-                    b.ToTable("internship_subject");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("Description")
-                        .HasColumnName("description")
-                        .HasColumnType("text");
-
-                    b.Property<string>("DescriptionEng")
-                        .HasColumnName("description_eng")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .HasColumnName("type")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_internship_types");
-
-                    b.ToTable("internship_types");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Report", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<int>("Range")
-                        .HasColumnName("range")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("SiteAddress")
-                        .HasColumnName("site_address")
-                        .HasColumnType("text");
-
-                    b.Property<int>("State")
-                        .HasColumnName("state")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id")
-                        .HasName("pk_report");
-
-                    b.ToTable("report");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.StaticPage", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<string>("AccessName")
-                        .HasColumnName("access_name")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Content")
-                        .HasColumnName("content")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ContentEng")
-                        .HasColumnName("content_eng")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .HasColumnName("title")
-                        .HasColumnType("text");
-
-                    b.Property<string>("TitleEng")
-                        .HasColumnName("title_eng")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id")
-                        .HasName("pk_static_pages");
-
-                    b.ToTable("static_pages");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Student", b =>
-                {
-                    b.Property<long>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnName("id")
-                        .HasColumnType("bigint")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                    b.Property<int>("AlbumNumber")
-                        .HasColumnName("album_number")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Course")
-                        .HasColumnName("course")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasColumnName("email")
-                        .HasColumnType("text");
-
-                    b.Property<string>("FirstName")
-                        .HasColumnName("first_name")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LastName")
-                        .HasColumnName("last_name")
-                        .HasColumnType("text");
-
-                    b.Property<int?>("Semester")
-                        .HasColumnName("semester")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id")
-                        .HasName("pk_students");
-
-                    b.ToTable("students");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
-                {
-                    b.Property<Guid>("EditionId")
-                        .HasColumnName("edition_id")
-                        .HasColumnType("uuid");
-
-                    b.Property<long>("InternshipTypeId")
-                        .HasColumnName("internship_type_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("EditionId", "InternshipTypeId")
-                        .HasName("pk_edition_internship_type");
-
-                    b.HasIndex("InternshipTypeId")
-                        .HasName("ix_edition_internship_type_internship_type_id");
-
-                    b.ToTable("edition_internship_type");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
-                {
-                    b.Property<Guid>("EditionId")
-                        .HasColumnName("edition_id")
-                        .HasColumnType("uuid");
-
-                    b.Property<long>("InternshipSubjectId")
-                        .HasColumnName("internship_subject_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("EditionId", "InternshipSubjectId")
-                        .HasName("pk_edition_subject");
-
-                    b.HasIndex("InternshipSubjectId")
-                        .HasName("ix_edition_subject_internship_subject_id");
-
-                    b.ToTable("edition_subject");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
-                {
-                    b.Property<long>("InternshipRegistrationId")
-                        .HasColumnName("internship_registration_id")
-                        .HasColumnType("bigint");
-
-                    b.Property<long>("InternshipSubjectId")
-                        .HasColumnName("internship_subject_id")
-                        .HasColumnType("bigint");
-
-                    b.HasKey("InternshipRegistrationId", "InternshipSubjectId")
-                        .HasName("pk_program_subject");
-
-                    b.HasIndex("InternshipSubjectId")
-                        .HasName("ix_program_subject_internship_subject_id");
-
-                    b.ToTable("program_subject");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Company", null)
-                        .WithMany("Branches")
-                        .HasForeignKey("CompanyId")
-                        .HasConstraintName("fk_branch_office_companies_company_id");
-
-                    b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 =>
-                        {
-                            b1.Property<long>("BranchOfficeId")
-                                .ValueGeneratedOnAdd()
-                                .HasColumnName("id")
-                                .HasColumnType("bigint")
-                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                            b1.Property<string>("Building")
-                                .HasColumnName("building")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("City")
-                                .HasColumnName("city")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("Country")
-                                .HasColumnName("country")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("PostalCode")
-                                .HasColumnName("postal_code")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("Street")
-                                .HasColumnName("street")
-                                .HasColumnType("text");
-
-                            b1.HasKey("BranchOfficeId")
-                                .HasName("pk_branch_office");
-
-                            b1.ToTable("branch_office");
-
-                            b1.WithOwner()
-                                .HasForeignKey("BranchOfficeId")
-                                .HasConstraintName("fk_branch_address_branch_office_branch_office_id");
-                        });
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
-                        .WithMany("Approvals")
-                        .HasForeignKey("InternshipId")
-                        .HasConstraintName("fk_document_internship_internship_id");
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
-                        .WithMany("Documentation")
-                        .HasForeignKey("InternshipId1")
-                        .HasConstraintName("fk_document_internship_internship_id1");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Course", "Course")
-                        .WithMany()
-                        .HasForeignKey("CourseId")
-                        .HasConstraintName("fk_editions_course_course_id");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
-                        .WithMany("Internships")
-                        .HasForeignKey("EditionId")
-                        .HasConstraintName("fk_internship_editions_edition_id");
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration")
-                        .WithMany()
-                        .HasForeignKey("InternshipRegistrationId")
-                        .HasConstraintName("fk_internship_internship_registration_internship_registration_");
-
-                    b.HasOne("InternshipSystem.Core.Report", "Report")
-                        .WithMany()
-                        .HasForeignKey("ReportId")
-                        .HasConstraintName("fk_internship_report_report_id");
-
-                    b.HasOne("InternshipSystem.Core.Student", "Student")
-                        .WithMany()
-                        .HasForeignKey("StudentId")
-                        .HasConstraintName("fk_internship_students_student_id");
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress")
-                        .WithMany()
-                        .HasForeignKey("BranchAddressId")
-                        .HasConstraintName("fk_internship_registration_branch_office_branch_address_id");
-
-                    b.HasOne("InternshipSystem.Core.Company", "Company")
-                        .WithMany()
-                        .HasForeignKey("CompanyId")
-                        .HasConstraintName("fk_internship_registration_companies_company_id");
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type")
-                        .WithMany()
-                        .HasForeignKey("TypeId")
-                        .HasConstraintName("fk_internship_registration_internship_types_type_id");
-
-                    b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 =>
-                        {
-                            b1.Property<long>("InternshipRegistrationId")
-                                .ValueGeneratedOnAdd()
-                                .HasColumnName("id")
-                                .HasColumnType("bigint")
-                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
-
-                            b1.Property<string>("Email")
-                                .HasColumnName("email")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("FirstName")
-                                .HasColumnName("first_name")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("LastName")
-                                .HasColumnName("last_name")
-                                .HasColumnType("text");
-
-                            b1.Property<string>("PhoneNumber")
-                                .HasColumnName("phone_number")
-                                .HasColumnType("text");
-
-                            b1.HasKey("InternshipRegistrationId")
-                                .HasName("pk_internship_registration");
-
-                            b1.ToTable("internship_registration");
-
-                            b1.WithOwner()
-                                .HasForeignKey("InternshipRegistrationId")
-                                .HasConstraintName("fk_mentor_internship_registration_internship_registration_id");
-                        });
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
-                        .WithMany("AvailableInternshipTypes")
-                        .HasForeignKey("EditionId")
-                        .HasConstraintName("fk_edition_internship_type_editions_edition_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType")
-                        .WithMany()
-                        .HasForeignKey("InternshipTypeId")
-                        .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
-                        .WithMany("AvailableSubjects")
-                        .HasForeignKey("EditionId")
-                        .HasConstraintName("fk_edition_subject_editions_edition_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
-                        .WithMany()
-                        .HasForeignKey("InternshipSubjectId")
-                        .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
-                {
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration")
-                        .WithMany("Subjects")
-                        .HasForeignKey("InternshipRegistrationId")
-                        .HasConstraintName("fk_program_subject_internship_registration_internship_registrat")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
-                        .WithMany()
-                        .HasForeignKey("InternshipSubjectId")
-                        .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}

From 589b6a7a0481226a744745e6688a3c088ac26b66 Mon Sep 17 00:00:00 2001
From: mborzyszkowski <maciej.borzyszkowski@gmail.com>
Date: Sat, 3 Oct 2020 22:32:10 +0200
Subject: [PATCH 2/2] new migration

---
 .../20201003202928_init.Designer.cs           | 668 ++++++++++++++++++
 .../Migrations/20201003202928_init.cs         | 468 ++++++++++++
 .../InternshipDbContextModelSnapshot.cs       | 666 +++++++++++++++++
 3 files changed, 1802 insertions(+)
 create mode 100644 src/InternshipSystem.Repository/Migrations/20201003202928_init.Designer.cs
 create mode 100644 src/InternshipSystem.Repository/Migrations/20201003202928_init.cs
 create mode 100644 src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs

diff --git a/src/InternshipSystem.Repository/Migrations/20201003202928_init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20201003202928_init.Designer.cs
new file mode 100644
index 0000000..47844d7
--- /dev/null
+++ b/src/InternshipSystem.Repository/Migrations/20201003202928_init.Designer.cs
@@ -0,0 +1,668 @@
+// <auto-generated />
+using System;
+using InternshipSystem.Repository;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+namespace InternshipSystem.Repository.Migrations
+{
+    [DbContext(typeof(InternshipDbContext))]
+    [Migration("20201003202928_init")]
+    partial class init
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
+                .HasAnnotation("ProductVersion", "3.1.4")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<long?>("CompanyId")
+                        .HasColumnName("company_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("Provider")
+                        .HasColumnName("provider")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_branch_office");
+
+                    b.HasIndex("CompanyId")
+                        .HasName("ix_branch_office_company_id");
+
+                    b.ToTable("branch_office");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Company", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Name")
+                        .HasColumnName("name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Nip")
+                        .HasColumnName("nip")
+                        .HasColumnType("text");
+
+                    b.Property<long>("Provider")
+                        .HasColumnName("provider")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_companies");
+
+                    b.ToTable("companies");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Course", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Name")
+                        .HasColumnName("name")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_course");
+
+                    b.ToTable("course");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Description")
+                        .HasColumnName("description")
+                        .HasColumnType("text");
+
+                    b.Property<long?>("InternshipId")
+                        .HasColumnName("internship_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("InternshipId1")
+                        .HasColumnName("internship_id1")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("RejectionReason")
+                        .HasColumnName("rejection_reason")
+                        .HasColumnType("text");
+
+                    b.Property<byte[]>("Scan")
+                        .HasColumnName("scan")
+                        .HasColumnType("bytea");
+
+                    b.Property<int>("State")
+                        .HasColumnName("state")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Type")
+                        .HasColumnName("type")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id")
+                        .HasName("pk_document");
+
+                    b.HasIndex("InternshipId")
+                        .HasName("ix_document_internship_id");
+
+                    b.HasIndex("InternshipId1")
+                        .HasName("ix_document_internship_id1");
+
+                    b.ToTable("document");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("uuid");
+
+                    b.Property<long?>("CourseId")
+                        .HasColumnName("course_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime>("EditionFinish")
+                        .HasColumnName("edition_finish")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<DateTime>("EditionStart")
+                        .HasColumnName("edition_start")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<DateTime>("ReportingStart")
+                        .HasColumnName("reporting_start")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.HasKey("Id")
+                        .HasName("pk_editions");
+
+                    b.HasIndex("CourseId")
+                        .HasName("ix_editions_course_id");
+
+                    b.ToTable("editions");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<Guid?>("EditionId")
+                        .HasColumnName("edition_id")
+                        .HasColumnType("uuid");
+
+                    b.Property<float?>("Grade")
+                        .HasColumnName("grade")
+                        .HasColumnType("real");
+
+                    b.Property<long?>("InternshipRegistrationId")
+                        .HasColumnName("internship_registration_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("ReportId")
+                        .HasColumnName("report_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("StudentId")
+                        .HasColumnName("student_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship");
+
+                    b.HasIndex("EditionId")
+                        .HasName("ix_internship_edition_id");
+
+                    b.HasIndex("InternshipRegistrationId")
+                        .HasName("ix_internship_internship_registration_id");
+
+                    b.HasIndex("ReportId")
+                        .HasName("ix_internship_report_id");
+
+                    b.HasIndex("StudentId")
+                        .HasName("ix_internship_student_id");
+
+                    b.ToTable("internship");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<long?>("BranchAddressId")
+                        .HasColumnName("branch_address_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("CompanyId")
+                        .HasColumnName("company_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime>("End")
+                        .HasColumnName("end")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<DateTime>("Start")
+                        .HasColumnName("start")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<int>("State")
+                        .HasColumnName("state")
+                        .HasColumnType("integer");
+
+                    b.Property<long?>("TypeId")
+                        .HasColumnName("type_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship_registration");
+
+                    b.HasIndex("BranchAddressId")
+                        .HasName("ix_internship_registration_branch_address_id");
+
+                    b.HasIndex("CompanyId")
+                        .HasName("ix_internship_registration_company_id");
+
+                    b.HasIndex("TypeId")
+                        .HasName("ix_internship_registration_type_id");
+
+                    b.ToTable("internship_registration");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Description")
+                        .HasColumnName("description")
+                        .HasColumnType("text");
+
+                    b.Property<string>("DescriptionEng")
+                        .HasColumnName("description_eng")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship_subject");
+
+                    b.ToTable("internship_subject");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Description")
+                        .HasColumnName("description")
+                        .HasColumnType("text");
+
+                    b.Property<string>("DescriptionEng")
+                        .HasColumnName("description_eng")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Label")
+                        .HasColumnName("label")
+                        .HasColumnType("text");
+
+                    b.Property<string>("LabelEng")
+                        .HasColumnName("label_eng")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship_types");
+
+                    b.ToTable("internship_types");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Report", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<int>("Range")
+                        .HasColumnName("range")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("SiteAddress")
+                        .HasColumnName("site_address")
+                        .HasColumnType("text");
+
+                    b.Property<int>("State")
+                        .HasColumnName("state")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id")
+                        .HasName("pk_report");
+
+                    b.ToTable("report");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.StaticPage", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("AccessName")
+                        .HasColumnName("access_name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Content")
+                        .HasColumnName("content")
+                        .HasColumnType("text");
+
+                    b.Property<string>("ContentEng")
+                        .HasColumnName("content_eng")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Title")
+                        .HasColumnName("title")
+                        .HasColumnType("text");
+
+                    b.Property<string>("TitleEng")
+                        .HasColumnName("title_eng")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_static_pages");
+
+                    b.ToTable("static_pages");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Student", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<int>("AlbumNumber")
+                        .HasColumnName("album_number")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Course")
+                        .HasColumnName("course")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Email")
+                        .HasColumnName("email")
+                        .HasColumnType("text");
+
+                    b.Property<string>("FirstName")
+                        .HasColumnName("first_name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("LastName")
+                        .HasColumnName("last_name")
+                        .HasColumnType("text");
+
+                    b.Property<int?>("Semester")
+                        .HasColumnName("semester")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id")
+                        .HasName("pk_students");
+
+                    b.ToTable("students");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
+                {
+                    b.Property<Guid>("EditionId")
+                        .HasColumnName("edition_id")
+                        .HasColumnType("uuid");
+
+                    b.Property<long>("InternshipTypeId")
+                        .HasColumnName("internship_type_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("EditionId", "InternshipTypeId")
+                        .HasName("pk_edition_internship_type");
+
+                    b.HasIndex("InternshipTypeId")
+                        .HasName("ix_edition_internship_type_internship_type_id");
+
+                    b.ToTable("edition_internship_type");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
+                {
+                    b.Property<Guid>("EditionId")
+                        .HasColumnName("edition_id")
+                        .HasColumnType("uuid");
+
+                    b.Property<long>("InternshipSubjectId")
+                        .HasColumnName("internship_subject_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("EditionId", "InternshipSubjectId")
+                        .HasName("pk_edition_subject");
+
+                    b.HasIndex("InternshipSubjectId")
+                        .HasName("ix_edition_subject_internship_subject_id");
+
+                    b.ToTable("edition_subject");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
+                {
+                    b.Property<long>("InternshipRegistrationId")
+                        .HasColumnName("internship_registration_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("InternshipSubjectId")
+                        .HasColumnName("internship_subject_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("InternshipRegistrationId", "InternshipSubjectId")
+                        .HasName("pk_program_subject");
+
+                    b.HasIndex("InternshipSubjectId")
+                        .HasName("ix_program_subject_internship_subject_id");
+
+                    b.ToTable("program_subject");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Company", null)
+                        .WithMany("Branches")
+                        .HasForeignKey("CompanyId")
+                        .HasConstraintName("fk_branch_office_companies_company_id");
+
+                    b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 =>
+                        {
+                            b1.Property<long>("BranchOfficeId")
+                                .ValueGeneratedOnAdd()
+                                .HasColumnName("id")
+                                .HasColumnType("bigint")
+                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                            b1.Property<string>("Building")
+                                .HasColumnName("building")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("City")
+                                .HasColumnName("city")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("Country")
+                                .HasColumnName("country")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("PostalCode")
+                                .HasColumnName("postal_code")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("Street")
+                                .HasColumnName("street")
+                                .HasColumnType("text");
+
+                            b1.HasKey("BranchOfficeId")
+                                .HasName("pk_branch_office");
+
+                            b1.ToTable("branch_office");
+
+                            b1.WithOwner()
+                                .HasForeignKey("BranchOfficeId")
+                                .HasConstraintName("fk_branch_address_branch_office_branch_office_id");
+                        });
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
+                        .WithMany("Approvals")
+                        .HasForeignKey("InternshipId")
+                        .HasConstraintName("fk_document_internship_internship_id");
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
+                        .WithMany("Documentation")
+                        .HasForeignKey("InternshipId1")
+                        .HasConstraintName("fk_document_internship_internship_id1");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Course", "Course")
+                        .WithMany()
+                        .HasForeignKey("CourseId")
+                        .HasConstraintName("fk_editions_course_course_id");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
+                        .WithMany("Internships")
+                        .HasForeignKey("EditionId")
+                        .HasConstraintName("fk_internship_editions_edition_id");
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration")
+                        .WithMany()
+                        .HasForeignKey("InternshipRegistrationId")
+                        .HasConstraintName("fk_internship_internship_registration_internship_registration_");
+
+                    b.HasOne("InternshipSystem.Core.Report", "Report")
+                        .WithMany()
+                        .HasForeignKey("ReportId")
+                        .HasConstraintName("fk_internship_report_report_id");
+
+                    b.HasOne("InternshipSystem.Core.Student", "Student")
+                        .WithMany()
+                        .HasForeignKey("StudentId")
+                        .HasConstraintName("fk_internship_students_student_id");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress")
+                        .WithMany()
+                        .HasForeignKey("BranchAddressId")
+                        .HasConstraintName("fk_internship_registration_branch_office_branch_address_id");
+
+                    b.HasOne("InternshipSystem.Core.Company", "Company")
+                        .WithMany()
+                        .HasForeignKey("CompanyId")
+                        .HasConstraintName("fk_internship_registration_companies_company_id");
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type")
+                        .WithMany()
+                        .HasForeignKey("TypeId")
+                        .HasConstraintName("fk_internship_registration_internship_types_type_id");
+
+                    b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 =>
+                        {
+                            b1.Property<long>("InternshipRegistrationId")
+                                .ValueGeneratedOnAdd()
+                                .HasColumnName("id")
+                                .HasColumnType("bigint")
+                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                            b1.Property<string>("Email")
+                                .HasColumnName("email")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("FirstName")
+                                .HasColumnName("first_name")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("LastName")
+                                .HasColumnName("last_name")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("PhoneNumber")
+                                .HasColumnName("phone_number")
+                                .HasColumnType("text");
+
+                            b1.HasKey("InternshipRegistrationId")
+                                .HasName("pk_internship_registration");
+
+                            b1.ToTable("internship_registration");
+
+                            b1.WithOwner()
+                                .HasForeignKey("InternshipRegistrationId")
+                                .HasConstraintName("fk_mentor_internship_registration_internship_registration_id");
+                        });
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
+                        .WithMany("AvailableInternshipTypes")
+                        .HasForeignKey("EditionId")
+                        .HasConstraintName("fk_edition_internship_type_editions_edition_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType")
+                        .WithMany()
+                        .HasForeignKey("InternshipTypeId")
+                        .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
+                        .WithMany("AvailableSubjects")
+                        .HasForeignKey("EditionId")
+                        .HasConstraintName("fk_edition_subject_editions_edition_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
+                        .WithMany()
+                        .HasForeignKey("InternshipSubjectId")
+                        .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration")
+                        .WithMany("Subjects")
+                        .HasForeignKey("InternshipRegistrationId")
+                        .HasConstraintName("fk_program_subject_internship_registration_internship_registrat")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
+                        .WithMany()
+                        .HasForeignKey("InternshipSubjectId")
+                        .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/src/InternshipSystem.Repository/Migrations/20201003202928_init.cs b/src/InternshipSystem.Repository/Migrations/20201003202928_init.cs
new file mode 100644
index 0000000..b950b85
--- /dev/null
+++ b/src/InternshipSystem.Repository/Migrations/20201003202928_init.cs
@@ -0,0 +1,468 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+namespace InternshipSystem.Repository.Migrations
+{
+    public partial class init : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "companies",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    nip = table.Column<string>(nullable: true),
+                    name = table.Column<string>(nullable: true),
+                    provider = table.Column<long>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_companies", x => x.id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "course",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    name = table.Column<string>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_course", x => x.id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "internship_subject",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    description = table.Column<string>(nullable: true),
+                    description_eng = table.Column<string>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_internship_subject", x => x.id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "internship_types",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    label = table.Column<string>(nullable: true),
+                    label_eng = table.Column<string>(nullable: true),
+                    description = table.Column<string>(nullable: true),
+                    description_eng = table.Column<string>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_internship_types", x => x.id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "report",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    state = table.Column<int>(nullable: false),
+                    range = table.Column<int>(nullable: false),
+                    site_address = table.Column<string>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_report", x => x.id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "static_pages",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    access_name = table.Column<string>(nullable: true),
+                    title = table.Column<string>(nullable: true),
+                    title_eng = table.Column<string>(nullable: true),
+                    content = table.Column<string>(nullable: true),
+                    content_eng = table.Column<string>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_static_pages", x => x.id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "students",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    album_number = table.Column<int>(nullable: false),
+                    first_name = table.Column<string>(nullable: true),
+                    last_name = table.Column<string>(nullable: true),
+                    email = table.Column<string>(nullable: true),
+                    course = table.Column<string>(nullable: true),
+                    semester = table.Column<int>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_students", x => x.id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "branch_office",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    street = table.Column<string>(nullable: true),
+                    building = table.Column<string>(nullable: true),
+                    city = table.Column<string>(nullable: true),
+                    postal_code = table.Column<string>(nullable: true),
+                    country = table.Column<string>(nullable: true),
+                    provider = table.Column<long>(nullable: false),
+                    company_id = table.Column<long>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_branch_office", x => x.id);
+                    table.ForeignKey(
+                        name: "fk_branch_office_companies_company_id",
+                        column: x => x.company_id,
+                        principalTable: "companies",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "editions",
+                columns: table => new
+                {
+                    id = table.Column<Guid>(nullable: false),
+                    edition_start = table.Column<DateTime>(nullable: false),
+                    edition_finish = table.Column<DateTime>(nullable: false),
+                    reporting_start = table.Column<DateTime>(nullable: false),
+                    course_id = table.Column<long>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_editions", x => x.id);
+                    table.ForeignKey(
+                        name: "fk_editions_course_course_id",
+                        column: x => x.course_id,
+                        principalTable: "course",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "internship_registration",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    company_id = table.Column<long>(nullable: true),
+                    branch_address_id = table.Column<long>(nullable: true),
+                    start = table.Column<DateTime>(nullable: false),
+                    end = table.Column<DateTime>(nullable: false),
+                    first_name = table.Column<string>(nullable: true),
+                    last_name = table.Column<string>(nullable: true),
+                    email = table.Column<string>(nullable: true),
+                    phone_number = table.Column<string>(nullable: true),
+                    type_id = table.Column<long>(nullable: true),
+                    state = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_internship_registration", x => x.id);
+                    table.ForeignKey(
+                        name: "fk_internship_registration_branch_office_branch_address_id",
+                        column: x => x.branch_address_id,
+                        principalTable: "branch_office",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "fk_internship_registration_companies_company_id",
+                        column: x => x.company_id,
+                        principalTable: "companies",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "fk_internship_registration_internship_types_type_id",
+                        column: x => x.type_id,
+                        principalTable: "internship_types",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "edition_internship_type",
+                columns: table => new
+                {
+                    edition_id = table.Column<Guid>(nullable: false),
+                    internship_type_id = table.Column<long>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_edition_internship_type", x => new { x.edition_id, x.internship_type_id });
+                    table.ForeignKey(
+                        name: "fk_edition_internship_type_editions_edition_id",
+                        column: x => x.edition_id,
+                        principalTable: "editions",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "fk_edition_internship_type_internship_types_internship_type_id",
+                        column: x => x.internship_type_id,
+                        principalTable: "internship_types",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "edition_subject",
+                columns: table => new
+                {
+                    edition_id = table.Column<Guid>(nullable: false),
+                    internship_subject_id = table.Column<long>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_edition_subject", x => new { x.edition_id, x.internship_subject_id });
+                    table.ForeignKey(
+                        name: "fk_edition_subject_editions_edition_id",
+                        column: x => x.edition_id,
+                        principalTable: "editions",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "fk_edition_subject_internship_subject_internship_subject_id",
+                        column: x => x.internship_subject_id,
+                        principalTable: "internship_subject",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "internship",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    student_id = table.Column<long>(nullable: true),
+                    internship_registration_id = table.Column<long>(nullable: true),
+                    report_id = table.Column<long>(nullable: true),
+                    edition_id = table.Column<Guid>(nullable: true),
+                    grade = table.Column<float>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_internship", x => x.id);
+                    table.ForeignKey(
+                        name: "fk_internship_editions_edition_id",
+                        column: x => x.edition_id,
+                        principalTable: "editions",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "fk_internship_internship_registration_internship_registration_",
+                        column: x => x.internship_registration_id,
+                        principalTable: "internship_registration",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "fk_internship_report_report_id",
+                        column: x => x.report_id,
+                        principalTable: "report",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "fk_internship_students_student_id",
+                        column: x => x.student_id,
+                        principalTable: "students",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "program_subject",
+                columns: table => new
+                {
+                    internship_registration_id = table.Column<long>(nullable: false),
+                    internship_subject_id = table.Column<long>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_program_subject", x => new { x.internship_registration_id, x.internship_subject_id });
+                    table.ForeignKey(
+                        name: "fk_program_subject_internship_registration_internship_registrat",
+                        column: x => x.internship_registration_id,
+                        principalTable: "internship_registration",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "fk_program_subject_internship_subject_internship_subject_id",
+                        column: x => x.internship_subject_id,
+                        principalTable: "internship_subject",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "document",
+                columns: table => new
+                {
+                    id = table.Column<long>(nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    description = table.Column<string>(nullable: true),
+                    scan = table.Column<byte[]>(nullable: true),
+                    type = table.Column<int>(nullable: false),
+                    state = table.Column<int>(nullable: false),
+                    rejection_reason = table.Column<string>(nullable: true),
+                    internship_id = table.Column<long>(nullable: true),
+                    internship_id1 = table.Column<long>(nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_document", x => x.id);
+                    table.ForeignKey(
+                        name: "fk_document_internship_internship_id",
+                        column: x => x.internship_id,
+                        principalTable: "internship",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "fk_document_internship_internship_id1",
+                        column: x => x.internship_id1,
+                        principalTable: "internship",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "ix_branch_office_company_id",
+                table: "branch_office",
+                column: "company_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_document_internship_id",
+                table: "document",
+                column: "internship_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_document_internship_id1",
+                table: "document",
+                column: "internship_id1");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_edition_internship_type_internship_type_id",
+                table: "edition_internship_type",
+                column: "internship_type_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_edition_subject_internship_subject_id",
+                table: "edition_subject",
+                column: "internship_subject_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_editions_course_id",
+                table: "editions",
+                column: "course_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_internship_edition_id",
+                table: "internship",
+                column: "edition_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_internship_internship_registration_id",
+                table: "internship",
+                column: "internship_registration_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_internship_report_id",
+                table: "internship",
+                column: "report_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_internship_student_id",
+                table: "internship",
+                column: "student_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_internship_registration_branch_address_id",
+                table: "internship_registration",
+                column: "branch_address_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_internship_registration_company_id",
+                table: "internship_registration",
+                column: "company_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_internship_registration_type_id",
+                table: "internship_registration",
+                column: "type_id");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_program_subject_internship_subject_id",
+                table: "program_subject",
+                column: "internship_subject_id");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "document");
+
+            migrationBuilder.DropTable(
+                name: "edition_internship_type");
+
+            migrationBuilder.DropTable(
+                name: "edition_subject");
+
+            migrationBuilder.DropTable(
+                name: "program_subject");
+
+            migrationBuilder.DropTable(
+                name: "static_pages");
+
+            migrationBuilder.DropTable(
+                name: "internship");
+
+            migrationBuilder.DropTable(
+                name: "internship_subject");
+
+            migrationBuilder.DropTable(
+                name: "editions");
+
+            migrationBuilder.DropTable(
+                name: "internship_registration");
+
+            migrationBuilder.DropTable(
+                name: "report");
+
+            migrationBuilder.DropTable(
+                name: "students");
+
+            migrationBuilder.DropTable(
+                name: "course");
+
+            migrationBuilder.DropTable(
+                name: "branch_office");
+
+            migrationBuilder.DropTable(
+                name: "internship_types");
+
+            migrationBuilder.DropTable(
+                name: "companies");
+        }
+    }
+}
diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs
new file mode 100644
index 0000000..b43220e
--- /dev/null
+++ b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs
@@ -0,0 +1,666 @@
+// <auto-generated />
+using System;
+using InternshipSystem.Repository;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+namespace InternshipSystem.Repository.Migrations
+{
+    [DbContext(typeof(InternshipDbContext))]
+    partial class InternshipDbContextModelSnapshot : ModelSnapshot
+    {
+        protected override void BuildModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
+                .HasAnnotation("ProductVersion", "3.1.4")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<long?>("CompanyId")
+                        .HasColumnName("company_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("Provider")
+                        .HasColumnName("provider")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_branch_office");
+
+                    b.HasIndex("CompanyId")
+                        .HasName("ix_branch_office_company_id");
+
+                    b.ToTable("branch_office");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Company", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Name")
+                        .HasColumnName("name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Nip")
+                        .HasColumnName("nip")
+                        .HasColumnType("text");
+
+                    b.Property<long>("Provider")
+                        .HasColumnName("provider")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_companies");
+
+                    b.ToTable("companies");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Course", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Name")
+                        .HasColumnName("name")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_course");
+
+                    b.ToTable("course");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Description")
+                        .HasColumnName("description")
+                        .HasColumnType("text");
+
+                    b.Property<long?>("InternshipId")
+                        .HasColumnName("internship_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("InternshipId1")
+                        .HasColumnName("internship_id1")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("RejectionReason")
+                        .HasColumnName("rejection_reason")
+                        .HasColumnType("text");
+
+                    b.Property<byte[]>("Scan")
+                        .HasColumnName("scan")
+                        .HasColumnType("bytea");
+
+                    b.Property<int>("State")
+                        .HasColumnName("state")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Type")
+                        .HasColumnName("type")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id")
+                        .HasName("pk_document");
+
+                    b.HasIndex("InternshipId")
+                        .HasName("ix_document_internship_id");
+
+                    b.HasIndex("InternshipId1")
+                        .HasName("ix_document_internship_id1");
+
+                    b.ToTable("document");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("uuid");
+
+                    b.Property<long?>("CourseId")
+                        .HasColumnName("course_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime>("EditionFinish")
+                        .HasColumnName("edition_finish")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<DateTime>("EditionStart")
+                        .HasColumnName("edition_start")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<DateTime>("ReportingStart")
+                        .HasColumnName("reporting_start")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.HasKey("Id")
+                        .HasName("pk_editions");
+
+                    b.HasIndex("CourseId")
+                        .HasName("ix_editions_course_id");
+
+                    b.ToTable("editions");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<Guid?>("EditionId")
+                        .HasColumnName("edition_id")
+                        .HasColumnType("uuid");
+
+                    b.Property<float?>("Grade")
+                        .HasColumnName("grade")
+                        .HasColumnType("real");
+
+                    b.Property<long?>("InternshipRegistrationId")
+                        .HasColumnName("internship_registration_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("ReportId")
+                        .HasColumnName("report_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("StudentId")
+                        .HasColumnName("student_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship");
+
+                    b.HasIndex("EditionId")
+                        .HasName("ix_internship_edition_id");
+
+                    b.HasIndex("InternshipRegistrationId")
+                        .HasName("ix_internship_internship_registration_id");
+
+                    b.HasIndex("ReportId")
+                        .HasName("ix_internship_report_id");
+
+                    b.HasIndex("StudentId")
+                        .HasName("ix_internship_student_id");
+
+                    b.ToTable("internship");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<long?>("BranchAddressId")
+                        .HasColumnName("branch_address_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long?>("CompanyId")
+                        .HasColumnName("company_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime>("End")
+                        .HasColumnName("end")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<DateTime>("Start")
+                        .HasColumnName("start")
+                        .HasColumnType("timestamp without time zone");
+
+                    b.Property<int>("State")
+                        .HasColumnName("state")
+                        .HasColumnType("integer");
+
+                    b.Property<long?>("TypeId")
+                        .HasColumnName("type_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship_registration");
+
+                    b.HasIndex("BranchAddressId")
+                        .HasName("ix_internship_registration_branch_address_id");
+
+                    b.HasIndex("CompanyId")
+                        .HasName("ix_internship_registration_company_id");
+
+                    b.HasIndex("TypeId")
+                        .HasName("ix_internship_registration_type_id");
+
+                    b.ToTable("internship_registration");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Description")
+                        .HasColumnName("description")
+                        .HasColumnType("text");
+
+                    b.Property<string>("DescriptionEng")
+                        .HasColumnName("description_eng")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship_subject");
+
+                    b.ToTable("internship_subject");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("Description")
+                        .HasColumnName("description")
+                        .HasColumnType("text");
+
+                    b.Property<string>("DescriptionEng")
+                        .HasColumnName("description_eng")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Label")
+                        .HasColumnName("label")
+                        .HasColumnType("text");
+
+                    b.Property<string>("LabelEng")
+                        .HasColumnName("label_eng")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_internship_types");
+
+                    b.ToTable("internship_types");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Report", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<int>("Range")
+                        .HasColumnName("range")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("SiteAddress")
+                        .HasColumnName("site_address")
+                        .HasColumnType("text");
+
+                    b.Property<int>("State")
+                        .HasColumnName("state")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id")
+                        .HasName("pk_report");
+
+                    b.ToTable("report");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.StaticPage", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<string>("AccessName")
+                        .HasColumnName("access_name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Content")
+                        .HasColumnName("content")
+                        .HasColumnType("text");
+
+                    b.Property<string>("ContentEng")
+                        .HasColumnName("content_eng")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Title")
+                        .HasColumnName("title")
+                        .HasColumnType("text");
+
+                    b.Property<string>("TitleEng")
+                        .HasColumnName("title_eng")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_static_pages");
+
+                    b.ToTable("static_pages");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Student", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnName("id")
+                        .HasColumnType("bigint")
+                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                    b.Property<int>("AlbumNumber")
+                        .HasColumnName("album_number")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Course")
+                        .HasColumnName("course")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Email")
+                        .HasColumnName("email")
+                        .HasColumnType("text");
+
+                    b.Property<string>("FirstName")
+                        .HasColumnName("first_name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("LastName")
+                        .HasColumnName("last_name")
+                        .HasColumnType("text");
+
+                    b.Property<int?>("Semester")
+                        .HasColumnName("semester")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id")
+                        .HasName("pk_students");
+
+                    b.ToTable("students");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
+                {
+                    b.Property<Guid>("EditionId")
+                        .HasColumnName("edition_id")
+                        .HasColumnType("uuid");
+
+                    b.Property<long>("InternshipTypeId")
+                        .HasColumnName("internship_type_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("EditionId", "InternshipTypeId")
+                        .HasName("pk_edition_internship_type");
+
+                    b.HasIndex("InternshipTypeId")
+                        .HasName("ix_edition_internship_type_internship_type_id");
+
+                    b.ToTable("edition_internship_type");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
+                {
+                    b.Property<Guid>("EditionId")
+                        .HasColumnName("edition_id")
+                        .HasColumnType("uuid");
+
+                    b.Property<long>("InternshipSubjectId")
+                        .HasColumnName("internship_subject_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("EditionId", "InternshipSubjectId")
+                        .HasName("pk_edition_subject");
+
+                    b.HasIndex("InternshipSubjectId")
+                        .HasName("ix_edition_subject_internship_subject_id");
+
+                    b.ToTable("edition_subject");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
+                {
+                    b.Property<long>("InternshipRegistrationId")
+                        .HasColumnName("internship_registration_id")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("InternshipSubjectId")
+                        .HasColumnName("internship_subject_id")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("InternshipRegistrationId", "InternshipSubjectId")
+                        .HasName("pk_program_subject");
+
+                    b.HasIndex("InternshipSubjectId")
+                        .HasName("ix_program_subject_internship_subject_id");
+
+                    b.ToTable("program_subject");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Company", null)
+                        .WithMany("Branches")
+                        .HasForeignKey("CompanyId")
+                        .HasConstraintName("fk_branch_office_companies_company_id");
+
+                    b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 =>
+                        {
+                            b1.Property<long>("BranchOfficeId")
+                                .ValueGeneratedOnAdd()
+                                .HasColumnName("id")
+                                .HasColumnType("bigint")
+                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                            b1.Property<string>("Building")
+                                .HasColumnName("building")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("City")
+                                .HasColumnName("city")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("Country")
+                                .HasColumnName("country")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("PostalCode")
+                                .HasColumnName("postal_code")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("Street")
+                                .HasColumnName("street")
+                                .HasColumnType("text");
+
+                            b1.HasKey("BranchOfficeId")
+                                .HasName("pk_branch_office");
+
+                            b1.ToTable("branch_office");
+
+                            b1.WithOwner()
+                                .HasForeignKey("BranchOfficeId")
+                                .HasConstraintName("fk_branch_address_branch_office_branch_office_id");
+                        });
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Document", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
+                        .WithMany("Approvals")
+                        .HasForeignKey("InternshipId")
+                        .HasConstraintName("fk_document_internship_internship_id");
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null)
+                        .WithMany("Documentation")
+                        .HasForeignKey("InternshipId1")
+                        .HasConstraintName("fk_document_internship_internship_id1");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Edition", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Course", "Course")
+                        .WithMany()
+                        .HasForeignKey("CourseId")
+                        .HasConstraintName("fk_editions_course_course_id");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
+                        .WithMany("Internships")
+                        .HasForeignKey("EditionId")
+                        .HasConstraintName("fk_internship_editions_edition_id");
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration")
+                        .WithMany()
+                        .HasForeignKey("InternshipRegistrationId")
+                        .HasConstraintName("fk_internship_internship_registration_internship_registration_");
+
+                    b.HasOne("InternshipSystem.Core.Report", "Report")
+                        .WithMany()
+                        .HasForeignKey("ReportId")
+                        .HasConstraintName("fk_internship_report_report_id");
+
+                    b.HasOne("InternshipSystem.Core.Student", "Student")
+                        .WithMany()
+                        .HasForeignKey("StudentId")
+                        .HasConstraintName("fk_internship_students_student_id");
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress")
+                        .WithMany()
+                        .HasForeignKey("BranchAddressId")
+                        .HasConstraintName("fk_internship_registration_branch_office_branch_address_id");
+
+                    b.HasOne("InternshipSystem.Core.Company", "Company")
+                        .WithMany()
+                        .HasForeignKey("CompanyId")
+                        .HasConstraintName("fk_internship_registration_companies_company_id");
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type")
+                        .WithMany()
+                        .HasForeignKey("TypeId")
+                        .HasConstraintName("fk_internship_registration_internship_types_type_id");
+
+                    b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 =>
+                        {
+                            b1.Property<long>("InternshipRegistrationId")
+                                .ValueGeneratedOnAdd()
+                                .HasColumnName("id")
+                                .HasColumnType("bigint")
+                                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+                            b1.Property<string>("Email")
+                                .HasColumnName("email")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("FirstName")
+                                .HasColumnName("first_name")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("LastName")
+                                .HasColumnName("last_name")
+                                .HasColumnType("text");
+
+                            b1.Property<string>("PhoneNumber")
+                                .HasColumnName("phone_number")
+                                .HasColumnType("text");
+
+                            b1.HasKey("InternshipRegistrationId")
+                                .HasName("pk_internship_registration");
+
+                            b1.ToTable("internship_registration");
+
+                            b1.WithOwner()
+                                .HasForeignKey("InternshipRegistrationId")
+                                .HasConstraintName("fk_mentor_internship_registration_internship_registration_id");
+                        });
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
+                        .WithMany("AvailableInternshipTypes")
+                        .HasForeignKey("EditionId")
+                        .HasConstraintName("fk_edition_internship_type_editions_edition_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType")
+                        .WithMany()
+                        .HasForeignKey("InternshipTypeId")
+                        .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Edition", "Edition")
+                        .WithMany("AvailableSubjects")
+                        .HasForeignKey("EditionId")
+                        .HasConstraintName("fk_edition_subject_editions_edition_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
+                        .WithMany()
+                        .HasForeignKey("InternshipSubjectId")
+                        .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b =>
+                {
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration")
+                        .WithMany("Subjects")
+                        .HasForeignKey("InternshipRegistrationId")
+                        .HasConstraintName("fk_program_subject_internship_registration_internship_registrat")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject")
+                        .WithMany()
+                        .HasForeignKey("InternshipSubjectId")
+                        .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}