Index: iknow-api/DTOs/UserDTO.cs
===================================================================
--- iknow-api/DTOs/UserDTO.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/DTOs/UserDTO.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -19,4 +19,5 @@
     {
         public string Name { get; set; } = string.Empty;
+        public string? MiddleName { get; set; }
         public string Surname { get; set; } = string.Empty;
         public string EMBG { get; set; } = string.Empty;
@@ -36,5 +37,9 @@
         public Quota quotaType { get; set; }
         public int majorType { get; set; }
-
+        public string? gender { get; set; }
+        public string? nationality { get; set; }
+        public string? citizenship { get; set; }
+        public string? studyType { get; set; }
+        public string? studyStatus { get; set; }
     }
 
Index: now-api/Migrations/20251209115716_InitialCreate.Designer.cs
===================================================================
--- iknow-api/Migrations/20251209115716_InitialCreate.Designer.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ 	(revision )
@@ -1,673 +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("20251209115716_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: now-api/Migrations/20251209115716_InitialCreate.cs
===================================================================
--- iknow-api/Migrations/20251209115716_InitialCreate.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ 	(revision )
@@ -1,511 +1,0 @@
-﻿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/20251209133847_InitalCreate.Designer.cs
===================================================================
--- iknow-api/Migrations/20251209133847_InitalCreate.Designer.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
+++ iknow-api/Migrations/20251209133847_InitalCreate.Designer.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -0,0 +1,694 @@
+﻿// <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("20251209133847_InitalCreate")]
+    partial class InitalCreate
+    {
+        /// <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<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.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    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<string>("StudyStatus")
+                        .HasColumnType("text");
+
+                    b.Property<string>("StudyType")
+                        .HasColumnType("text");
+
+                    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>("HighSchoolType")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("StudyLanguage")
+                        .HasColumnType("text");
+
+                    b.Property<int>("UserId")
+                        .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>("Accreditation")
+                        .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<string>("Citizenship")
+                        .HasColumnType("text");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("EMBG")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Email")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Gender")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Index")
+                        .HasColumnType("text");
+
+                    b.Property<string>("MiddleName")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Nationality")
+                        .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/20251209133847_InitalCreate.cs
===================================================================
--- iknow-api/Migrations/20251209133847_InitalCreate.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
+++ iknow-api/Migrations/20251209133847_InitalCreate.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -0,0 +1,518 @@
+﻿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 InitalCreate : 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),
+                    MiddleName = table.Column<string>(type: "text", nullable: true),
+                    Gender = table.Column<string>(type: "text", nullable: true),
+                    Nationality = table.Column<string>(type: "text", nullable: true),
+                    Citizenship = 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),
+                    Accreditation = 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),
+                    StudyType = table.Column<string>(type: "text", nullable: true),
+                    StudyStatus = table.Column<string>(type: "text", nullable: true)
+                },
+                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),
+                    HighSchoolType = table.Column<int>(type: "integer", nullable: false),
+                    UserId = table.Column<int>(type: "integer", nullable: false),
+                    StudyLanguage = table.Column<string>(type: "text", nullable: true)
+                },
+                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 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Migrations/AppDbContextModelSnapshot.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -31,21 +31,21 @@
                     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.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.Property<int>("UserId")
+                        .HasColumnType("integer");
 
                     b.HasKey("Id");
@@ -80,11 +80,11 @@
                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                    b.Property<string>("body")
-                        .HasColumnType("text");
-
-                    b.Property<int>("cost")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("name")
+                    b.Property<string>("Body")
+                        .HasColumnType("text");
+
+                    b.Property<int>("Cost")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Name")
                         .HasColumnType("text");
 
@@ -136,4 +136,10 @@
                     b.Property<int>("MajorId")
                         .HasColumnType("integer");
+
+                    b.Property<string>("StudyStatus")
+                        .HasColumnType("text");
+
+                    b.Property<string>("StudyType")
+                        .HasColumnType("text");
 
                     b.Property<int>("UserId")
@@ -167,8 +173,11 @@
                         .HasColumnType("real");
 
-                    b.Property<int>("UserId")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("tip")
+                    b.Property<int>("HighSchoolType")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("StudyLanguage")
+                        .HasColumnType("text");
+
+                    b.Property<int>("UserId")
                         .HasColumnType("integer");
 
@@ -227,5 +236,5 @@
                         .HasColumnType("integer");
 
-                    b.Property<int>("Akreditacija")
+                    b.Property<int>("Accreditation")
                         .HasColumnType("integer");
 
@@ -379,4 +388,7 @@
                         .HasColumnType("timestamp with time zone");
 
+                    b.Property<string>("Citizenship")
+                        .HasColumnType("text");
+
                     b.Property<DateTime>("CreatedAt")
                         .HasColumnType("timestamp with time zone");
@@ -388,8 +400,17 @@
                         .HasColumnType("text");
 
+                    b.Property<string>("Gender")
+                        .HasColumnType("text");
+
                     b.Property<string>("Index")
                         .HasColumnType("text");
 
+                    b.Property<string>("MiddleName")
+                        .HasColumnType("text");
+
                     b.Property<string>("Name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Nationality")
                         .HasColumnType("text");
 
Index: iknow-api/Models/ContactInfo.cs
===================================================================
--- iknow-api/Models/ContactInfo.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Models/ContactInfo.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -6,9 +6,9 @@
     {
         public int Id { get; set; }
-        public string? city { get; set; }
-        public string? address { get; set; }
-        public string? municipality { get; set; }
-        public string? phoneNumber { get; set; }
-        public string? microsoftEmail { get; set; }
+        public string? City { get; set; }
+        public string? Address { get; set; }
+        public string? Municipality { get; set; }
+        public string? PhoneNumber { get; set; }
+        public string? MicrosoftEmail { get; set; }
         
         public int UserId { get; set; }
Index: iknow-api/Models/Documents.cs
===================================================================
--- iknow-api/Models/Documents.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Models/Documents.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -4,7 +4,7 @@
     {
         public int Id { get; set; }
-        public string? name { get; set; }
-        public string? body { get; set; }
-        public int cost { get; set; }
+        public string? Name { get; set; }
+        public string? Body { get; set; }
+        public int Cost { get; set; }
         public ICollection<UserDocuments>? User { get; set; }
     }
Index: iknow-api/Models/EnrollmentInfo.cs
===================================================================
--- iknow-api/Models/EnrollmentInfo.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Models/EnrollmentInfo.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -1,3 +1,5 @@
 ﻿using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.AspNetCore.SignalR;
+using Microsoft.Net.Http.Headers;
 
 namespace iknow_api.Models
@@ -11,5 +13,4 @@
         public int Id { get; set; }
         public int enrollmentYear { get; set; }
-        // CS1597 fix: no semicolon after accessor block
         public Quota quota { get; set; }
         public int MajorId { get; set; }
@@ -17,4 +18,6 @@
         public int UserId { get; set; }
         public User? User { get; set; }
+        public string? StudyType { get; set; }
+        public string? StudyStatus { get; set; }
 
     }
Index: iknow-api/Models/HighSchool.cs
===================================================================
--- iknow-api/Models/HighSchool.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Models/HighSchool.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -3,7 +3,7 @@
 namespace iknow_api.Models
 {
-    public enum type
+    public enum HighSchoolType
     {
-        strucen, gimnazija
+        Strucen, Gimnazija
     }
     public class HighSchool
@@ -11,8 +11,8 @@
         public int Id { get; set; }
         public float GPA { get; set; }
-        public type tip { get; set; }
-
+        public HighSchoolType HighSchoolType { get; set; }
         public int UserId { get; set; }
-        public User User { get; set; }
+        public User? User { get; set; }
+        public string? StudyLanguage { get; set; }
     }
 }
Index: iknow-api/Models/MajorSubjects.cs
===================================================================
--- iknow-api/Models/MajorSubjects.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Models/MajorSubjects.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -6,5 +6,5 @@
         public int SubjectId { get; set; }
         public int MandatorySemester { get; set; }
-        public int Akreditacija { get; set; }
+        public int Accreditation { get; set; }
         public Major? Majors { get; set; }
         public Subject? Subjects { get; set; }
Index: iknow-api/Models/RefreshToken.cs
===================================================================
--- iknow-api/Models/RefreshToken.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Models/RefreshToken.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -7,5 +7,5 @@
         public int Id { get; set; }
         public int UserId { get; set; }
-        public User User { get; set; } 
+        public User? User { get; set; } 
         public string? Token { get; set; }
         public DateTime ExpiresAt { get; set; }
Index: iknow-api/Models/User.cs
===================================================================
--- iknow-api/Models/User.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Models/User.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -19,4 +19,8 @@
         public string? Email { get; set; }
         public string? PasswordHash { get; set; }
+        public string? MiddleName { get; set; }
+        public string? Gender { get; set; }
+        public string? Nationality { get; set; }
+        public string? Citizenship { get; set; }
         public DateTime Bday { get; set; }
         public DateTime CreatedAt { get; set; }
Index: iknow-api/Services/Implementations/AuthService.cs
===================================================================
--- iknow-api/Services/Implementations/AuthService.cs	(revision 334981db9832a06f41c3956bc0d4628aac299254)
+++ iknow-api/Services/Implementations/AuthService.cs	(revision ab652ff2cf4420bcf41b4bc55899482afcf8a567)
@@ -56,4 +56,5 @@
                 {
                     Name = registerDto.Name,
+                    MiddleName = registerDto.MiddleName,
                     Surname = registerDto.Surname,
                     Index = registerDto.Index,
@@ -63,5 +64,8 @@
                     CreatedAt = DateTime.UtcNow,
                     Role = (Models.UserRole)registerDto.Role,
-                    EMBG = registerDto.EMBG
+                    EMBG = registerDto.EMBG,
+                    Nationality = registerDto.nationality,
+                    Citizenship = registerDto.citizenship,
+                    Gender = registerDto.gender
                 };
 
@@ -74,9 +78,9 @@
                 {
                     UserId = userId,
-                    city = registerDto.city,
-                    address = registerDto.address,
-                    municipality = registerDto.municipality,
-                    phoneNumber = registerDto.phoneNumber,
-                    microsoftEmail = registerDto.microsoftEmail
+                    City = registerDto.city,
+                    Address = registerDto.address,
+                    Municipality = registerDto.municipality,
+                    PhoneNumber = registerDto.phoneNumber,
+                    MicrosoftEmail = registerDto.microsoftEmail
                 };
                 
@@ -86,5 +90,7 @@
                     enrollmentYear = registerDto.enrollmentYear,
                     quota = (Models.Quota)registerDto.quotaType,
-                    MajorId = registerDto.majorType
+                    MajorId = registerDto.majorType,
+                    StudyStatus = registerDto.studyStatus,
+                    StudyType = registerDto.studyType
                 };
                 
@@ -93,5 +99,5 @@
                     UserId = userId,
                     GPA = registerDto.gpa,
-                    tip = (Models.type)registerDto.tip
+                    HighSchoolType = (Models.HighSchoolType)registerDto.tip
                 };
 
