Index: iknow-api/Migrations/AppDbContextModelSnapshot.cs
===================================================================
--- iknow-api/Migrations/AppDbContextModelSnapshot.cs	(revision 35924766238e487b4af38d5827bdcda86852bd88)
+++ iknow-api/Migrations/AppDbContextModelSnapshot.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -57,4 +57,73 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.DependencySubject", b =>
+                {
+                    b.Property<int>("SubjectId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("DependencyId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("SubjectId", "DependencyId");
+
+                    b.HasIndex("DependencyId");
+
+                    b.ToTable("DependencySubjects");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.Documents", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("body")
+                        .HasColumnType("text");
+
+                    b.Property<int>("cost")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("name")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Documents");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("MajorId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("QuotaType")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Year")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MajorId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("EnrolledSemesters");
+                });
+
             modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
                 {
@@ -65,4 +134,7 @@
                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
+                    b.Property<int>("MajorId")
+                        .HasColumnType("integer");
+
                     b.Property<int>("UserId")
                         .HasColumnType("integer");
@@ -71,8 +143,10 @@
                         .HasColumnType("integer");
 
-                    b.Property<int>("major")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
+                    b.Property<int>("quota")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MajorId");
 
                     b.HasIndex("UserId")
@@ -107,4 +181,106 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.Major", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Majors");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Name = "PIT"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Name = "SIIS"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Name = "SEIS"
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Name = "KN"
+                        });
+                });
+
+            modelBuilder.Entity("iknow_api.Models.MajorSubjects", b =>
+                {
+                    b.Property<int>("MajorId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("SubjectId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Akreditacija")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("MandatorySemester")
+                        .HasColumnType("integer");
+
+                    b.HasKey("MajorId", "SubjectId");
+
+                    b.HasIndex("SubjectId");
+
+                    b.ToTable("MajorSubjects");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.PassedSubject", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("DatePassed")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<int>("Grade")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("SemesterSubjectId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("SemesterSubjectId")
+                        .IsUnique();
+
+                    b.ToTable("PassedSubjects");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.Payment", b =>
+                {
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("EnrollmentInfoId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Id")
+                        .HasColumnType("integer");
+
+                    b.HasKey("UserId", "EnrollmentInfoId");
+
+                    b.HasIndex("EnrollmentInfoId");
+
+                    b.ToTable("Payment");
+                });
+
             modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
                 {
@@ -134,4 +310,62 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("EnrolledSemesterId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ProfessorId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("SubjectId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnrolledSemesterId");
+
+                    b.HasIndex("ProfessorId");
+
+                    b.HasIndex("SubjectId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("SemesterSubject");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.Subject", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("AwardedCredits")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Code")
+                        .HasColumnType("text");
+
+                    b.Property<int?>("DependencyCredit")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Subjects");
+                });
+
             modelBuilder.Entity("iknow_api.Models.User", b =>
                 {
@@ -174,4 +408,19 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.UserDocuments", b =>
+                {
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("DocumentId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("UserId", "DocumentId");
+
+                    b.HasIndex("DocumentId");
+
+                    b.ToTable("UserDocuments");
+                });
+
             modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
                 {
@@ -185,6 +434,50 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.DependencySubject", b =>
+                {
+                    b.HasOne("iknow_api.Models.Subject", "Dependency")
+                        .WithMany("Dependents")
+                        .HasForeignKey("DependencyId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.Subject", "Subject")
+                        .WithMany("Dependencies")
+                        .HasForeignKey("SubjectId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.Navigation("Dependency");
+
+                    b.Navigation("Subject");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
+                {
+                    b.HasOne("iknow_api.Models.Major", "Major")
+                        .WithMany()
+                        .HasForeignKey("MajorId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Major");
+
+                    b.Navigation("User");
+                });
+
             modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
                 {
+                    b.HasOne("iknow_api.Models.Major", "Major")
+                        .WithMany()
+                        .HasForeignKey("MajorId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
                     b.HasOne("iknow_api.Models.User", "User")
                         .WithOne("EnrollmentInfo")
@@ -193,4 +486,6 @@
                         .IsRequired();
 
+                    b.Navigation("Major");
+
                     b.Navigation("User");
                 });
@@ -207,4 +502,53 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.MajorSubjects", b =>
+                {
+                    b.HasOne("iknow_api.Models.Major", "Majors")
+                        .WithMany("Subjects")
+                        .HasForeignKey("MajorId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.Subject", "Subjects")
+                        .WithMany("Majors")
+                        .HasForeignKey("SubjectId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Majors");
+
+                    b.Navigation("Subjects");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.PassedSubject", b =>
+                {
+                    b.HasOne("iknow_api.Models.SemesterSubject", "SemesterSubject")
+                        .WithOne("PassedSubject")
+                        .HasForeignKey("iknow_api.Models.PassedSubject", "SemesterSubjectId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SemesterSubject");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.Payment", b =>
+                {
+                    b.HasOne("iknow_api.Models.EnrolledSemesters", "EnrolledSemesters")
+                        .WithMany("Users")
+                        .HasForeignKey("EnrollmentInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany("EnrolledSemesters")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("EnrolledSemesters");
+
+                    b.Navigation("User");
+                });
+
             modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
                 {
@@ -218,11 +562,106 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
+                {
+                    b.HasOne("iknow_api.Models.EnrolledSemesters", "EnrolledSemester")
+                        .WithMany("SemesterSubjects")
+                        .HasForeignKey("EnrolledSemesterId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.User", "Professor")
+                        .WithMany("TeachingSubjects")
+                        .HasForeignKey("ProfessorId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.Subject", "Subject")
+                        .WithMany("SemesterSubjects")
+                        .HasForeignKey("SubjectId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany("EnrolledSemesterUserSubjects")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.Navigation("EnrolledSemester");
+
+                    b.Navigation("Professor");
+
+                    b.Navigation("Subject");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.UserDocuments", b =>
+                {
+                    b.HasOne("iknow_api.Models.Documents", "Documents")
+                        .WithMany("User")
+                        .HasForeignKey("DocumentId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany("Documents")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Documents");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.Documents", b =>
+                {
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
+                {
+                    b.Navigation("SemesterSubjects");
+
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.Major", b =>
+                {
+                    b.Navigation("Subjects");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
+                {
+                    b.Navigation("PassedSubject");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.Subject", b =>
+                {
+                    b.Navigation("Dependencies");
+
+                    b.Navigation("Dependents");
+
+                    b.Navigation("Majors");
+
+                    b.Navigation("SemesterSubjects");
+                });
+
             modelBuilder.Entity("iknow_api.Models.User", b =>
                 {
                     b.Navigation("ContactInfo");
 
+                    b.Navigation("Documents");
+
+                    b.Navigation("EnrolledSemesterUserSubjects");
+
+                    b.Navigation("EnrolledSemesters");
+
                     b.Navigation("EnrollmentInfo");
 
                     b.Navigation("HighSchool");
+
+                    b.Navigation("TeachingSubjects");
                 });
 #pragma warning restore 612, 618
