Index: iknow-api/Repository/Implementations/UserRepository.cs
===================================================================
--- iknow-api/Repository/Implementations/UserRepository.cs	(revision 615f18db50c22de8bb4d828806226a241ce22efe)
+++ iknow-api/Repository/Implementations/UserRepository.cs	(revision 2e17229353155473cf2d2d9d350c50ee7be12fe2)
@@ -66,6 +66,28 @@
         {
             return await _context.EnrolledSemesters
+                .AsNoTracking()
                 .Include(es => es.Major)
+                .Include(es => es.Semester)
+                .Include(es => es.SemesterSubjects)
+                    .ThenInclude(ss => ss.Subject)
+                .Include(es => es.SemesterSubjects)
+                    .ThenInclude(ss => ss.Professor)
                 .Where(es => es.UserId == id)
+                .AsSplitQuery() // This helps avoid cartesian explosion
+                .ToListAsync();
+        }
+
+        public async Task<List<PassedSubject>> GetUserPassedSubjectsAsync(int id)
+        {
+            return await _context.PassedSubjects
+                .AsNoTracking()
+                .Include(ps => ps.SemesterSubject)
+                    .ThenInclude(ss => ss.Subject)
+                .Include(ps => ps.SemesterSubject)
+                    .ThenInclude(ss => ss.EnrolledSemester)
+                        .ThenInclude(es => es.Semester)
+                .Include(ps => ps.SemesterSubject)
+                    .ThenInclude(ss => ss.Professor)
+                .Where(ps => ps.SemesterSubject.UserId == id)
                 .ToListAsync();
         }
Index: iknow-api/Repository/Interface/IUserRepository.cs
===================================================================
--- iknow-api/Repository/Interface/IUserRepository.cs	(revision 615f18db50c22de8bb4d828806226a241ce22efe)
+++ iknow-api/Repository/Interface/IUserRepository.cs	(revision 2e17229353155473cf2d2d9d350c50ee7be12fe2)
@@ -14,5 +14,5 @@
         Task<List<EnrolledSemesters>?> GetUserSemestersAsync(int id);
         Task<User?> GetOnlyUserByIdAsync(int id);
-
+        Task<List<PassedSubject>> GetUserPassedSubjectsAsync(int id);
     }
 }
