Index: iknow-api/Controllers/AuthController.cs
===================================================================
--- iknow-api/Controllers/AuthController.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Controllers/AuthController.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -37,7 +37,19 @@
         public async Task<IActionResult> Register([FromBody] RegisterDto request)
         {
-            var result = await _authService.RegisterAsync(request);
-            if (!result) return BadRequest("User already exists");
-            return Ok("User registered successfully");
+            //Console.WriteLine(request);
+
+            try
+            {
+                var result = await _authService.RegisterAsync(request);
+                return Ok("User registered successfully");
+            }
+            catch (InvalidOperationException ex)
+            {
+                return BadRequest(new { message = ex.Message });
+            }
+            catch (Exception ex)
+            {
+                return StatusCode(500, new { message = "An error occurred during registration", error = ex.Message });
+            }
         }
 
@@ -65,4 +77,5 @@
             { return BadRequest(new { message = "No token found!" }); }
         }
+
     }
 }
Index: iknow-api/DTOs/UserDTO.cs
===================================================================
--- iknow-api/DTOs/UserDTO.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/DTOs/UserDTO.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -1,3 +1,5 @@
-﻿namespace iknow_api.DTOs
+﻿using System.Text.Json.Serialization;
+
+namespace iknow_api.DTOs
 {
     // Login DTO
@@ -25,5 +27,5 @@
         public UserRole Role { get; set; }
         public float gpa { get; set; }
-        public Type tip { get; set; }
+        public HighSchoolType tip { get; set; }
         public string city { get; set; } = string.Empty;
         public string address { get; set; } = string.Empty;
@@ -57,5 +59,5 @@
         Student
     }
-    public enum Type
+    public enum HighSchoolType
     {
         strucen, gimnazija
@@ -65,7 +67,3 @@
         drzavna, privatna, stipendija
     }
-    public enum Major
-    {
-        SIIS, PIT, KN, KI, IMB, IE, SSP, SEIS
-    }
 }
Index: iknow-api/Data/AppDbContext.cs
===================================================================
--- iknow-api/Data/AppDbContext.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Data/AppDbContext.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -17,4 +17,6 @@
         public DbSet<Subject> Subjects { get; set; }
         public DbSet<DependencySubject> DependencySubjects { get; set; }
+        public DbSet<Major> Majors { get; set; }
+        public DbSet<PassedSubject> PassedSubjects { get; set; }
 
 
@@ -22,4 +24,12 @@
         {
             base.OnModelCreating(modelBuilder);
+
+            modelBuilder.Entity<Major>().HasData(
+                new Major { Id = 1, Name = "PIT" },
+                new Major { Id = 2, Name = "SIIS" },
+                new Major { Id = 3, Name = "SEIS" },
+                new Major { Id = 4, Name = "KN" }
+            );
+
 
             // -------------------------
@@ -128,4 +138,16 @@
                 .HasForeignKey(ss => ss.EnrolledSemesterId)
                 .OnDelete(DeleteBehavior.Restrict);
+
+            // -------------------------
+            // PassedSubject (one-to-one with SemesterSubject)
+            // -------------------------
+            modelBuilder.Entity<PassedSubject>()
+                .HasKey(ps => ps.Id);
+
+            modelBuilder.Entity<PassedSubject>()
+                .HasOne(ps => ps.SemesterSubject)
+                .WithOne(ss => ss.PassedSubject)
+                .HasForeignKey<PassedSubject>(ps => ps.SemesterSubjectId)
+                .OnDelete(DeleteBehavior.Cascade);
         }
 
Index: iknow-api/Migrations/20251030124902_new.Designer.cs
===================================================================
--- iknow-api/Migrations/20251030124902_new.Designer.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ 	(revision )
@@ -1,234 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using iknow_api.Data;
-
-#nullable disable
-
-namespace iknow_api.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251030124902_new")]
-    partial class @new
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.10")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("UserId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("address")
-                        .HasColumnType("text");
-
-                    b.Property<string>("city")
-                        .HasColumnType("text");
-
-                    b.Property<string>("microsoftEmail")
-                        .HasColumnType("text");
-
-                    b.Property<string>("municipality")
-                        .HasColumnType("text");
-
-                    b.Property<string>("phoneNumber")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("ContactInfo");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("UserId")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("enrollmentYear")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("major")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("EnrollmentInfo");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("GPA")
-                        .HasColumnType("real");
-
-                    b.Property<int>("UserId")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("tip")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("HighSchool");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("ExpiresAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsValid")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Token")
-                        .HasColumnType("text");
-
-                    b.Property<int>("UserId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("RefreshToken");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.User", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("Bday")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("EMBG")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Index")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<int>("Role")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Surname")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("User");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
-                {
-                    b.HasOne("iknow_api.Models.User", "User")
-                        .WithOne("ContactInfo")
-                        .HasForeignKey("iknow_api.Models.ContactInfo", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
-                {
-                    b.HasOne("iknow_api.Models.User", "User")
-                        .WithOne("EnrollmentInfo")
-                        .HasForeignKey("iknow_api.Models.EnrollmentInfo", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
-                {
-                    b.HasOne("iknow_api.Models.User", "User")
-                        .WithOne("HighSchool")
-                        .HasForeignKey("iknow_api.Models.HighSchool", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
-                {
-                    b.HasOne("iknow_api.Models.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("iknow_api.Models.User", b =>
-                {
-                    b.Navigation("ContactInfo");
-
-                    b.Navigation("EnrollmentInfo");
-
-                    b.Navigation("HighSchool");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: iknow-api/Migrations/20251030124902_new.cs
===================================================================
--- iknow-api/Migrations/20251030124902_new.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ 	(revision )
@@ -1,167 +1,0 @@
-﻿using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace iknow_api.Migrations
-{
-    /// <inheritdoc />
-    public partial class @new : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "User",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Name = table.Column<string>(type: "text", nullable: true),
-                    EMBG = table.Column<string>(type: "text", nullable: true),
-                    Surname = table.Column<string>(type: "text", nullable: true),
-                    Index = table.Column<string>(type: "text", nullable: true),
-                    Email = table.Column<string>(type: "text", nullable: true),
-                    PasswordHash = table.Column<string>(type: "text", nullable: true),
-                    Bday = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
-                    CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
-                    Role = table.Column<int>(type: "integer", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_User", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "ContactInfo",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    city = table.Column<string>(type: "text", nullable: true),
-                    address = table.Column<string>(type: "text", nullable: true),
-                    municipality = table.Column<string>(type: "text", nullable: true),
-                    phoneNumber = table.Column<string>(type: "text", nullable: true),
-                    microsoftEmail = table.Column<string>(type: "text", nullable: true),
-                    UserId = table.Column<int>(type: "integer", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_ContactInfo", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_ContactInfo_User_UserId",
-                        column: x => x.UserId,
-                        principalTable: "User",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "EnrollmentInfo",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    enrollmentYear = table.Column<int>(type: "integer", nullable: false),
-                    major = table.Column<int>(type: "integer", nullable: false),
-                    UserId = table.Column<int>(type: "integer", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_EnrollmentInfo", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_EnrollmentInfo_User_UserId",
-                        column: x => x.UserId,
-                        principalTable: "User",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "HighSchool",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    GPA = table.Column<float>(type: "real", nullable: false),
-                    tip = table.Column<int>(type: "integer", nullable: false),
-                    UserId = table.Column<int>(type: "integer", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_HighSchool", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_HighSchool_User_UserId",
-                        column: x => x.UserId,
-                        principalTable: "User",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "RefreshToken",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    UserId = table.Column<int>(type: "integer", nullable: false),
-                    Token = table.Column<string>(type: "text", nullable: true),
-                    ExpiresAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
-                    IsValid = table.Column<bool>(type: "boolean", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_RefreshToken", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_RefreshToken_User_UserId",
-                        column: x => x.UserId,
-                        principalTable: "User",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ContactInfo_UserId",
-                table: "ContactInfo",
-                column: "UserId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_EnrollmentInfo_UserId",
-                table: "EnrollmentInfo",
-                column: "UserId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_HighSchool_UserId",
-                table: "HighSchool",
-                column: "UserId",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_RefreshToken_UserId",
-                table: "RefreshToken",
-                column: "UserId");
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "ContactInfo");
-
-            migrationBuilder.DropTable(
-                name: "EnrollmentInfo");
-
-            migrationBuilder.DropTable(
-                name: "HighSchool");
-
-            migrationBuilder.DropTable(
-                name: "RefreshToken");
-
-            migrationBuilder.DropTable(
-                name: "User");
-        }
-    }
-}
Index: iknow-api/Migrations/20251208203846_InitialCreate.Designer.cs
===================================================================
--- iknow-api/Migrations/20251208203846_InitialCreate.Designer.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
+++ iknow-api/Migrations/20251208203846_InitialCreate.Designer.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -0,0 +1,673 @@
+﻿// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using iknow_api.Data;
+
+#nullable disable
+
+namespace iknow_api.Migrations
+{
+    [DbContext(typeof(AppDbContext))]
+    [Migration("20251208203846_InitialCreate")]
+    partial class InitialCreate
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "9.0.10")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("address")
+                        .HasColumnType("text");
+
+                    b.Property<string>("city")
+                        .HasColumnType("text");
+
+                    b.Property<string>("microsoftEmail")
+                        .HasColumnType("text");
+
+                    b.Property<string>("municipality")
+                        .HasColumnType("text");
+
+                    b.Property<string>("phoneNumber")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("ContactInfo");
+                });
+
+            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 =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("MajorId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("enrollmentYear")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("quota")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MajorId");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("EnrollmentInfo");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<float>("GPA")
+                        .HasColumnType("real");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("tip")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("HighSchool");
+                });
+
+            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 =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("ExpiresAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<bool>("IsValid")
+                        .HasColumnType("boolean");
+
+                    b.Property<string>("Token")
+                        .HasColumnType("text");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("RefreshToken");
+                });
+
+            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 =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("Bday")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("EMBG")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Email")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Index")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("PasswordHash")
+                        .HasColumnType("text");
+
+                    b.Property<int>("Role")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Surname")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("User");
+                });
+
+            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 =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("ContactInfo")
+                        .HasForeignKey("iknow_api.Models.ContactInfo", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            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")
+                        .HasForeignKey("iknow_api.Models.EnrollmentInfo", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Major");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("HighSchool")
+                        .HasForeignKey("iknow_api.Models.HighSchool", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            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 =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            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
+        }
+    }
+}
Index: iknow-api/Migrations/20251208203846_InitialCreate.cs
===================================================================
--- iknow-api/Migrations/20251208203846_InitialCreate.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
+++ iknow-api/Migrations/20251208203846_InitialCreate.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -0,0 +1,511 @@
+﻿using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
+
+namespace iknow_api.Migrations
+{
+    /// <inheritdoc />
+    public partial class InitialCreate : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "Documents",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    name = table.Column<string>(type: "text", nullable: true),
+                    body = table.Column<string>(type: "text", nullable: true),
+                    cost = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Documents", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Majors",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    Name = table.Column<string>(type: "text", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Majors", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Subjects",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    Name = table.Column<string>(type: "text", nullable: true),
+                    Code = table.Column<string>(type: "text", nullable: true),
+                    AwardedCredits = table.Column<int>(type: "integer", nullable: true),
+                    DependencyCredit = table.Column<int>(type: "integer", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Subjects", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "User",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    Name = table.Column<string>(type: "text", nullable: true),
+                    EMBG = table.Column<string>(type: "text", nullable: true),
+                    Surname = table.Column<string>(type: "text", nullable: true),
+                    Index = table.Column<string>(type: "text", nullable: true),
+                    Email = table.Column<string>(type: "text", nullable: true),
+                    PasswordHash = table.Column<string>(type: "text", nullable: true),
+                    Bday = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
+                    CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
+                    Role = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_User", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "DependencySubjects",
+                columns: table => new
+                {
+                    SubjectId = table.Column<int>(type: "integer", nullable: false),
+                    DependencyId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_DependencySubjects", x => new { x.SubjectId, x.DependencyId });
+                    table.ForeignKey(
+                        name: "FK_DependencySubjects_Subjects_DependencyId",
+                        column: x => x.DependencyId,
+                        principalTable: "Subjects",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "FK_DependencySubjects_Subjects_SubjectId",
+                        column: x => x.SubjectId,
+                        principalTable: "Subjects",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "MajorSubjects",
+                columns: table => new
+                {
+                    MajorId = table.Column<int>(type: "integer", nullable: false),
+                    SubjectId = table.Column<int>(type: "integer", nullable: false),
+                    MandatorySemester = table.Column<int>(type: "integer", nullable: false),
+                    Akreditacija = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_MajorSubjects", x => new { x.MajorId, x.SubjectId });
+                    table.ForeignKey(
+                        name: "FK_MajorSubjects_Majors_MajorId",
+                        column: x => x.MajorId,
+                        principalTable: "Majors",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_MajorSubjects_Subjects_SubjectId",
+                        column: x => x.SubjectId,
+                        principalTable: "Subjects",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "ContactInfo",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    city = table.Column<string>(type: "text", nullable: true),
+                    address = table.Column<string>(type: "text", nullable: true),
+                    municipality = table.Column<string>(type: "text", nullable: true),
+                    phoneNumber = table.Column<string>(type: "text", nullable: true),
+                    microsoftEmail = table.Column<string>(type: "text", nullable: true),
+                    UserId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ContactInfo", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_ContactInfo_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "EnrolledSemesters",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    UserId = table.Column<int>(type: "integer", nullable: false),
+                    Year = table.Column<int>(type: "integer", nullable: false),
+                    Type = table.Column<int>(type: "integer", nullable: false),
+                    QuotaType = table.Column<int>(type: "integer", nullable: false),
+                    MajorId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_EnrolledSemesters", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_EnrolledSemesters_Majors_MajorId",
+                        column: x => x.MajorId,
+                        principalTable: "Majors",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_EnrolledSemesters_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "EnrollmentInfo",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    enrollmentYear = table.Column<int>(type: "integer", nullable: false),
+                    quota = table.Column<int>(type: "integer", nullable: false),
+                    MajorId = table.Column<int>(type: "integer", nullable: false),
+                    UserId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_EnrollmentInfo", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_EnrollmentInfo_Majors_MajorId",
+                        column: x => x.MajorId,
+                        principalTable: "Majors",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_EnrollmentInfo_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "HighSchool",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    GPA = table.Column<float>(type: "real", nullable: false),
+                    tip = table.Column<int>(type: "integer", nullable: false),
+                    UserId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_HighSchool", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_HighSchool_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "RefreshToken",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    UserId = table.Column<int>(type: "integer", nullable: false),
+                    Token = table.Column<string>(type: "text", nullable: true),
+                    ExpiresAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
+                    IsValid = table.Column<bool>(type: "boolean", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_RefreshToken", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_RefreshToken_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "UserDocuments",
+                columns: table => new
+                {
+                    UserId = table.Column<int>(type: "integer", nullable: false),
+                    DocumentId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_UserDocuments", x => new { x.UserId, x.DocumentId });
+                    table.ForeignKey(
+                        name: "FK_UserDocuments_Documents_DocumentId",
+                        column: x => x.DocumentId,
+                        principalTable: "Documents",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_UserDocuments_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Payment",
+                columns: table => new
+                {
+                    UserId = table.Column<int>(type: "integer", nullable: false),
+                    EnrollmentInfoId = table.Column<int>(type: "integer", nullable: false),
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Payment", x => new { x.UserId, x.EnrollmentInfoId });
+                    table.ForeignKey(
+                        name: "FK_Payment_EnrolledSemesters_EnrollmentInfoId",
+                        column: x => x.EnrollmentInfoId,
+                        principalTable: "EnrolledSemesters",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_Payment_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "SemesterSubject",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    UserId = table.Column<int>(type: "integer", nullable: false),
+                    EnrolledSemesterId = table.Column<int>(type: "integer", nullable: false),
+                    SubjectId = table.Column<int>(type: "integer", nullable: false),
+                    ProfessorId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_SemesterSubject", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_SemesterSubject_EnrolledSemesters_EnrolledSemesterId",
+                        column: x => x.EnrolledSemesterId,
+                        principalTable: "EnrolledSemesters",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "FK_SemesterSubject_Subjects_SubjectId",
+                        column: x => x.SubjectId,
+                        principalTable: "Subjects",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "FK_SemesterSubject_User_ProfessorId",
+                        column: x => x.ProfessorId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "FK_SemesterSubject_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "PassedSubjects",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    SemesterSubjectId = table.Column<int>(type: "integer", nullable: false),
+                    Grade = table.Column<int>(type: "integer", nullable: false),
+                    DatePassed = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_PassedSubjects", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_PassedSubjects_SemesterSubject_SemesterSubjectId",
+                        column: x => x.SemesterSubjectId,
+                        principalTable: "SemesterSubject",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.InsertData(
+                table: "Majors",
+                columns: new[] { "Id", "Name" },
+                values: new object[,]
+                {
+                    { 1, "PIT" },
+                    { 2, "SIIS" },
+                    { 3, "SEIS" },
+                    { 4, "KN" }
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ContactInfo_UserId",
+                table: "ContactInfo",
+                column: "UserId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_DependencySubjects_DependencyId",
+                table: "DependencySubjects",
+                column: "DependencyId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_EnrolledSemesters_MajorId",
+                table: "EnrolledSemesters",
+                column: "MajorId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_EnrolledSemesters_UserId",
+                table: "EnrolledSemesters",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_EnrollmentInfo_MajorId",
+                table: "EnrollmentInfo",
+                column: "MajorId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_EnrollmentInfo_UserId",
+                table: "EnrollmentInfo",
+                column: "UserId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_HighSchool_UserId",
+                table: "HighSchool",
+                column: "UserId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_MajorSubjects_SubjectId",
+                table: "MajorSubjects",
+                column: "SubjectId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_PassedSubjects_SemesterSubjectId",
+                table: "PassedSubjects",
+                column: "SemesterSubjectId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_Payment_EnrollmentInfoId",
+                table: "Payment",
+                column: "EnrollmentInfoId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_RefreshToken_UserId",
+                table: "RefreshToken",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_SemesterSubject_EnrolledSemesterId",
+                table: "SemesterSubject",
+                column: "EnrolledSemesterId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_SemesterSubject_ProfessorId",
+                table: "SemesterSubject",
+                column: "ProfessorId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_SemesterSubject_SubjectId",
+                table: "SemesterSubject",
+                column: "SubjectId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_SemesterSubject_UserId",
+                table: "SemesterSubject",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_UserDocuments_DocumentId",
+                table: "UserDocuments",
+                column: "DocumentId");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ContactInfo");
+
+            migrationBuilder.DropTable(
+                name: "DependencySubjects");
+
+            migrationBuilder.DropTable(
+                name: "EnrollmentInfo");
+
+            migrationBuilder.DropTable(
+                name: "HighSchool");
+
+            migrationBuilder.DropTable(
+                name: "MajorSubjects");
+
+            migrationBuilder.DropTable(
+                name: "PassedSubjects");
+
+            migrationBuilder.DropTable(
+                name: "Payment");
+
+            migrationBuilder.DropTable(
+                name: "RefreshToken");
+
+            migrationBuilder.DropTable(
+                name: "UserDocuments");
+
+            migrationBuilder.DropTable(
+                name: "SemesterSubject");
+
+            migrationBuilder.DropTable(
+                name: "Documents");
+
+            migrationBuilder.DropTable(
+                name: "EnrolledSemesters");
+
+            migrationBuilder.DropTable(
+                name: "Subjects");
+
+            migrationBuilder.DropTable(
+                name: "Majors");
+
+            migrationBuilder.DropTable(
+                name: "User");
+        }
+    }
+}
Index: iknow-api/Migrations/AppDbContextModelSnapshot.cs
===================================================================
--- iknow-api/Migrations/AppDbContextModelSnapshot.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ 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
Index: iknow-api/Models/EnrollmentInfo.cs
===================================================================
--- iknow-api/Models/EnrollmentInfo.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/EnrollmentInfo.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -11,5 +11,6 @@
         public int Id { get; set; }
         public int enrollmentYear { get; set; }
-        public Quota quota;
+        // CS1597 fix: no semicolon after accessor block
+        public Quota quota { get; set; }
         public int MajorId { get; set; }
         public Major? Major { get; set; }
Index: iknow-api/Models/PassedSubject.cs
===================================================================
--- iknow-api/Models/PassedSubject.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
+++ iknow-api/Models/PassedSubject.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -0,0 +1,20 @@
+namespace iknow_api.Models
+{
+    public enum Grade
+    {
+        Six = 6,
+        Seven = 7,
+        Eight = 8,
+        Nine = 9,
+        Ten = 10
+    }
+
+    public class PassedSubject
+    {
+        public int Id { get; set; }
+        public int SemesterSubjectId { get; set; }
+        public SemesterSubject? SemesterSubject { get; set; }
+        public Grade Grade { get; set; }
+        public DateTime DatePassed { get; set; }
+    }
+}
Index: iknow-api/Models/SemesterSubjects.cs
===================================================================
--- iknow-api/Models/SemesterSubjects.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/SemesterSubjects.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -14,4 +14,5 @@
         public Subject? Subject { get; set; }
         public User? Professor { get; set; }           
+        public PassedSubject? PassedSubject { get; set; }
     }
 }
Index: iknow-api/Models/User.cs
===================================================================
--- iknow-api/Models/User.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/User.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -7,5 +7,5 @@
         Admin,
         Professor,
-        Strudent
+        Student
     }
 
Index: iknow-api/Program.cs
===================================================================
--- iknow-api/Program.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Program.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -38,4 +38,6 @@
     {
         options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
+        options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
+        options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
     });
 builder.Services.AddOpenApi();
Index: iknow-api/Repository/Implementations/UserRepository.cs
===================================================================
--- iknow-api/Repository/Implementations/UserRepository.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Repository/Implementations/UserRepository.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -1,5 +1,4 @@
 using iknow_api.Models;
 using iknow_api.Data;
-using iknow_api.Models;
 using Microsoft.EntityFrameworkCore;
 
@@ -64,4 +63,5 @@
             return await _context.User.CountAsync();
         }
+
     }
 }
Index: iknow-api/Repository/Interface/IUserRepository.cs
===================================================================
--- iknow-api/Repository/Interface/IUserRepository.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Repository/Interface/IUserRepository.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -1,3 +1,3 @@
-using iknow_api.Models;
+﻿using iknow_api.Models;
 namespace iknow_api.Repositories
 {
@@ -11,5 +11,5 @@
         Task AddHighSchoolAsync(HighSchool highSchool);
         Task<int> GetUsersCountAsync();
-        Task<User> GetUserByIdAsync(int id);
+        Task<User?> GetUserByIdAsync(int id);
         Task<User?> GetOnlyUserByIdAsync(int id);
 
Index: iknow-api/Services/Implementations/AuthService.cs
===================================================================
--- iknow-api/Services/Implementations/AuthService.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Services/Implementations/AuthService.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -29,6 +29,18 @@
         public async Task<bool> RegisterAsync(RegisterDto registerDto)
         {
+            // Debug: Log all incoming DTO values
+            Console.WriteLine("=== RegisterDto Debug Info ===");
+            Console.WriteLine($"Name: {registerDto.Name}");
+            Console.WriteLine($"Email: {registerDto.Email}");
+            Console.WriteLine($"majorType: {registerDto.majorType}");
+            Console.WriteLine($"enrollmentYear: {registerDto.enrollmentYear}");
+            Console.WriteLine($"quotaType: {registerDto.quotaType}");
+            Console.WriteLine($"Role: {registerDto.Role}");
+            Console.WriteLine($"tip: {registerDto.tip}");
+            Console.WriteLine("==============================");
+
+            // Check if user already exists
             if (await _userRepository.UserExistsAsync(registerDto.Email))
-                return false;
+                throw new InvalidOperationException("User with this email already exists");
 
             var user = new User
Index: iknow-api/Services/Interfaces/IAuthService.cs
===================================================================
--- iknow-api/Services/Interfaces/IAuthService.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Services/Interfaces/IAuthService.cs	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -1,4 +1,4 @@
 ﻿using iknow_api.DTOs;
-using iknow_api.DTOs;
+using iknow_api.Models;
 namespace iknow_api.Services
 {
@@ -9,4 +9,5 @@
         Task<int> GetUsersCountAsync();
         Task<AuthResultDto> GenerateNewJWT(VerifyRefreshTokenDto token);
+       
     }
 }
Index: iknow-api/appsettings.Development.json
===================================================================
--- iknow-api/appsettings.Development.json	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/appsettings.Development.json	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -7,5 +7,5 @@
   },
     "ConnectionStrings": {
-        "DefaultConnection": "Host=localhost;Port=5432;Database=myappdb;Username=postgres;Password=newpassword"
+        "DefaultConnection": "Host=localhost;Port=5432;Database=myappdb;Username=postgres;Password=user"
     }
 }
Index: iknow-api/appsettings.json
===================================================================
--- iknow-api/appsettings.json	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/appsettings.json	(revision c2f79d73d7219c8c8bcc00f5badba27a707b22be)
@@ -7,5 +7,5 @@
   },
   "ConnectionStrings": {
-    "DefaultConnection": "Host=localhost;Port=55432;Database=myappdb;Username=postgres;Password=newpassword"
+    "DefaultConnection": "Host=localhost;Port=5432;Database=myappdb;Username=postgres;Password=user"
   },
   "Jwt": {
