- Timestamp:
- 10/30/25 17:22:08 (11 months ago)
- Branches:
- master
- Children:
- f0fc386
- Parents:
- 586825e
- Location:
- iknow-api
- Files:
-
- 9 added
- 5 edited
-
DTOs/UserDTO.cs (modified) (1 diff)
-
Data/AppDbContext.cs (modified) (1 diff)
-
Models/DependencySubject.cs (added)
-
Models/Documents.cs (added)
-
Models/EnrolledSemesters.cs (added)
-
Models/EnrollmentInfo.cs (modified) (2 diffs)
-
Models/Major.cs (added)
-
Models/MajorSubjects.cs (added)
-
Models/Payment.cs (added)
-
Models/SemesterSubjects.cs (added)
-
Models/Subjects.cs (added)
-
Models/User.cs (modified) (1 diff)
-
Models/UserDocuments.cs (added)
-
Services/Implementations/AuthService.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/DTOs/UserDTO.cs
r586825e r5e22720 33 33 public int enrollmentYear { get; set; } 34 34 public Quota quotaType { get; set; } 35 public MajormajorType { get; set; }35 public int majorType { get; set; } 36 36 37 37 } -
iknow-api/Data/AppDbContext.cs
r586825e r5e22720 14 14 public DbSet<EnrollmentInfo> EnrollmentInfo { get; set; } 15 15 public DbSet<RefreshToken> RefreshToken { get; set; } 16 17 public DbSet<Subject> Subjects { get; set; } 18 public DbSet<DependencySubject> DependencySubjects { get; set; } 19 20 21 protected override void OnModelCreating(ModelBuilder modelBuilder) 22 { 23 base.OnModelCreating(modelBuilder); 24 25 // ------------------------- 26 // DependencySubject (self-referencing many-to-many) 27 // ------------------------- 28 modelBuilder.Entity<DependencySubject>() 29 .HasKey(ds => new { ds.SubjectId, ds.DependencyId }); 30 31 modelBuilder.Entity<DependencySubject>() 32 .HasOne(ds => ds.Subject) 33 .WithMany(s => s.Dependencies) 34 .HasForeignKey(ds => ds.SubjectId) 35 .OnDelete(DeleteBehavior.Restrict); 36 37 modelBuilder.Entity<DependencySubject>() 38 .HasOne(ds => ds.Dependency) 39 .WithMany(s => s.Dependents) 40 .HasForeignKey(ds => ds.DependencyId) 41 .OnDelete(DeleteBehavior.Restrict); 42 43 // ------------------------- 44 // MajorSubjects (many-to-many) 45 // ------------------------- 46 modelBuilder.Entity<MajorSubjects>() 47 .HasKey(ab => new { ab.MajorId, ab.SubjectId }); 48 49 modelBuilder.Entity<MajorSubjects>() 50 .HasOne(ab => ab.Majors) 51 .WithMany(a => a.Subjects) 52 .HasForeignKey(ab => ab.MajorId) 53 .OnDelete(DeleteBehavior.Cascade); 54 55 modelBuilder.Entity<MajorSubjects>() 56 .HasOne(ab => ab.Subjects) 57 .WithMany(b => b.Majors) 58 .HasForeignKey(ab => ab.SubjectId) 59 .OnDelete(DeleteBehavior.Cascade); 60 61 // ------------------------- 62 // UserDocuments (many-to-many) 63 // ------------------------- 64 modelBuilder.Entity<UserDocuments>() 65 .HasKey(ab => new { ab.UserId, ab.DocumentId }); 66 67 modelBuilder.Entity<UserDocuments>() 68 .HasOne(ab => ab.User) 69 .WithMany(a => a.Documents) 70 .HasForeignKey(ab => ab.UserId) 71 .OnDelete(DeleteBehavior.Cascade); 72 73 modelBuilder.Entity<UserDocuments>() 74 .HasOne(ab => ab.Documents) 75 .WithMany(b => b.User) 76 .HasForeignKey(ab => ab.DocumentId) 77 .OnDelete(DeleteBehavior.Cascade); 78 79 // ------------------------- 80 // Payment (user enrollment) 81 // ------------------------- 82 modelBuilder.Entity<Payment>() 83 .HasKey(ab => new { ab.UserId, ab.EnrollmentInfoId }); 84 85 modelBuilder.Entity<Payment>() 86 .HasOne(ab => ab.User) 87 .WithMany(a => a.EnrolledSemesters) 88 .HasForeignKey(ab => ab.UserId) 89 .OnDelete(DeleteBehavior.Cascade); 90 91 modelBuilder.Entity<Payment>() 92 .HasOne(ab => ab.EnrolledSemesters) 93 .WithMany(b => b.Users) 94 .HasForeignKey(ab => ab.EnrollmentInfoId) 95 .OnDelete(DeleteBehavior.Cascade); 96 97 // ------------------------- 98 // SemesterSubject (student enrollments and professor assignments) 99 // ------------------------- 100 modelBuilder.Entity<SemesterSubject>() 101 .HasKey(ss => ss.Id); // or composite key if you prefer {UserId, EnrolledSemesterId, SubjectId} 102 103 // Student enrollment 104 modelBuilder.Entity<SemesterSubject>() 105 .HasOne(ss => ss.User) 106 .WithMany(u => u.EnrolledSemesterUserSubjects) 107 .HasForeignKey(ss => ss.UserId) 108 .OnDelete(DeleteBehavior.Restrict); 109 110 // Professor teaching 111 modelBuilder.Entity<SemesterSubject>() 112 .HasOne(ss => ss.Professor) 113 .WithMany(u => u.TeachingSubjects) 114 .HasForeignKey(ss => ss.ProfessorId) 115 .OnDelete(DeleteBehavior.Restrict); 116 117 // Subject relation 118 modelBuilder.Entity<SemesterSubject>() 119 .HasOne(ss => ss.Subject) 120 .WithMany(s => s.SemesterSubjects) 121 .HasForeignKey(ss => ss.SubjectId) 122 .OnDelete(DeleteBehavior.Restrict); 123 124 // EnrolledSemester relation 125 modelBuilder.Entity<SemesterSubject>() 126 .HasOne(ss => ss.EnrolledSemester) 127 .WithMany(es => es.SemesterSubjects) 128 .HasForeignKey(ss => ss.EnrolledSemesterId) 129 .OnDelete(DeleteBehavior.Restrict); 130 } 131 16 132 } 17 133 } -
iknow-api/Models/EnrollmentInfo.cs
r586825e r5e22720 7 7 drzavna, privatna, stipendija 8 8 } 9 public enum Major10 {11 SIIS, PIT, KN, KI, IMB, IE, SSP, SEIS12 }13 9 public class EnrollmentInfo 14 10 { … … 16 12 public int enrollmentYear { get; set; } 17 13 public Quota quota; 18 public Major major { get; set; } 14 public int MajorId { get; set; } 15 public Major? Major { get; set; } 19 16 public int UserId { get; set; } 20 17 public User? User { get; set; } 18 21 19 } 22 20 } -
iknow-api/Models/User.cs
r586825e r5e22720 25 25 public ContactInfo? ContactInfo { get; set; } 26 26 public EnrollmentInfo? EnrollmentInfo { get; set; } 27 public ICollection<UserDocuments>? Documents { get; set; } 28 public ICollection<Payment>? EnrolledSemesters { get; set; } 29 public ICollection<SemesterSubject>? EnrolledSemesterUserSubjects { get; set; } 30 31 public ICollection<SemesterSubject>? TeachingSubjects { get; set; } 27 32 28 33 } -
iknow-api/Services/Implementations/AuthService.cs
r586825e r5e22720 62 62 enrollmentYear = registerDto.enrollmentYear, 63 63 quota = (Models.Quota)registerDto.quotaType, 64 major = (Models.Major)registerDto.majorType64 MajorId = registerDto.majorType 65 65 }; 66 66 await _userRepository.AddEnrollmentAsync(enrollmentInfo);
Note:
See TracChangeset
for help on using the changeset viewer.
