Changeset 2e17229 for iknow-api/Controllers/UserController.cs
- Timestamp:
- 12/16/25 23:05:19 (9 months ago)
- Branches:
- master
- Children:
- bf18ca4
- Parents:
- 9f7a52e
- File:
-
- 1 edited
-
iknow-api/Controllers/UserController.cs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/Controllers/UserController.cs
r9f7a52e r2e17229 31 31 32 32 } 33 //"semesters": [34 // {35 // "id": 1,36 // "semester": "Зимски(2025/2026)",37 // "direction": "PIT23(2023)",38 // "quota": "Не плаќа-Редовен(2023)",39 // "note": "",40 // "studentCom": "Ги имам си...",41 // "sum": "0,30",42 // "paid": "0,00",43 // "ukim": "",44 // "createdOn": "22.09.2025",45 // "dateChanged": "22.09.2025",46 // "credits": "0,01",47 // "type": "Ред.",48 // "doc": "Не",49 // "doc1": "Не",50 // "verified": "Не",51 // "taxes": "0,00",52 // "signatures": "0/5",53 // "status": "валиден",54 // "completed": "Не"55 // },56 // ]57 //}58 33 [Authorize] 59 34 [HttpGet("getSemesters")] … … 67 42 var userData = await _userService.GetUserSemesters(token); 68 43 var results = new List<object>(); 69 70 for (int i=0; i<userData.Count; i++)44 45 for (int i = 0; i < userData.Count; i++) 71 46 { 72 47 var newResult = new 73 48 { 74 49 id = userData[i].Id, 75 //semester = (userData[i].Type == 0 ? "Зимски" : "Летен") + $"({userData[i].Year}/{userData[i].Year + 1})",50 semester = (userData[i].Semester.Type == 0 ? "Зимски" : "Летен") + $"({userData[i].Semester.Year}/{userData[i].Semester.Year + 1})", 76 51 direction = userData[i].Major?.Name ?? "", 77 52 quota = userData[i].QuotaType.ToString(), … … 99 74 } 100 75 return null; 101 102 } 103 // { 104 // "user": [ 105 // { 106 // "id": 2, 107 // "userId": 1, 108 // "user": null, 109 // "year": 2025, 110 // "type": 1, 111 // "quotaType": "privatna", 112 // "majorId": 1, 113 // "major": { 114 // "id": 1, 115 // "name": "PIT(2023)", 116 // "subjects": null 117 // }, 118 // "users": null, 119 // "semesterSubjects": null 120 // }, 121 // { 122 // "id": 1, 123 // "userId": 1, 124 // "user": null, 125 // "year": 2025, 126 // "type": 0, 127 // "quotaType": "privatna", 128 // "majorId": 1, 129 // "major": { 130 // "id": 1, 131 // "name": "PIT(2023)", 132 // "subjects": null 133 // }, 134 // "users": null, 135 // "semesterSubjects": null 136 // } 137 // ] 138 //} 76 } 77 78 [Authorize] 79 [HttpGet("getSubjects")] 80 public async Task<IActionResult> getSubjects() 81 { 82 var authHeader = Request.Headers["Authorization"].ToString(); 83 var token = authHeader.Substring("Bearer ".Length).Trim(); 84 // token = your JWT 85 var userData = await _userService.GetUserSemesters(token); 86 var results = new List<object>(); 87 var random = new Random(); 88 for (int i = 0; i < userData.Count; i++) 89 { 90 var newResult = new 91 { 92 id = userData[i].Id, 93 name = (userData[i].Semester.Type == 0 ? "Зимски" : "Летен") + $"({userData[i].Semester.Year}/{userData[i].Semester.Year + 1})", 94 status = "валиден", 95 serviceNumber = 1000000 + random.Next(10000, 100000) 96 }; 97 results.Add(newResult); 98 } 99 100 101 var subjectsBySemester = new Dictionary<string, List<object>>(); 102 103 foreach (var enrollment in userData) 104 { 105 // Create semester key like "winter_2025_2026" or "summer_2025_2026" 106 var semesterType = enrollment.Semester.Type == 0 ? "winter" : "summer"; 107 var semesterKey = $"{semesterType}_{enrollment.Semester.Year}_{enrollment.Semester.Year + 1}"; 108 109 // Initialize list if this semester key doesn't exist 110 if (!subjectsBySemester.ContainsKey(semesterKey)) 111 { 112 subjectsBySemester[semesterKey] = new List<object>(); 113 } 114 115 // Add subjects from this semester enrollment 116 if (enrollment.SemesterSubjects != null) 117 { 118 foreach (var semesterSubject in enrollment.SemesterSubjects) 119 { 120 var subject = semesterSubject.Subject; 121 if (subject != null) 122 { 123 var subjectData = new 124 { 125 id = subject.Id, 126 code = subject.Code ?? "", 127 hours = "2+4", // You may need to add this to your Subject model 128 kojPat = 1, // You may need to add this field 129 name = subject.Name ?? "", 130 semester = 5, // You may need to calculate or add this field 131 status = "Зад.", // Determine based on PassedSubject or other logic 132 signature = semesterSubject.Signature ? "Да" : "Не", 133 group = "", // You may need to add this field 134 professor = semesterSubject.Professor?.Name + " " + semesterSubject.Professor?.Surname ?? "", 135 }; 136 subjectsBySemester[semesterKey].Add(subjectData); 137 } 138 } 139 } 140 141 } 142 var currentSemester = userData.FirstOrDefault(); // Get the most recent/current semester 143 var semesterTypeGlobal = currentSemester.Semester.Type == 0 ? "winter" : "summer"; 144 var semesterData = new 145 { 146 id = $"{semesterTypeGlobal}_{currentSemester.Semester.Year}_{currentSemester.Semester.Year + 1}", 147 name = (currentSemester.Semester.Type == 0 ? "Зимски" : "Летен") + $" ({currentSemester.Semester.Year}/{currentSemester.Semester.Year + 1})", 148 status = "валиден", 149 serviceNumber = (1000000 + random.Next(10000, 100000)).ToString(), 150 ticketNumber = random.Next(100000, 1000000).ToString(), 151 debt = "0,00", 152 financialInfo = new 153 { 154 sum = 1, 155 paid = "0,00", 156 due = "0,00", 157 materialCosts = "Осигурување, Административна такса, Тетратки (испити), зимски семестар: 1000,00", 158 credits = "30,00", 159 totalCredits = "30,00", 160 MKSA = "750,00", 161 electronicRegistration = "100,00", 162 eUKIM = "350,00", 163 bankProvision = "25,00", 164 total = "2226,00" 165 } 166 }; 167 if (userData == null) return Ok(new { info = "can't get info" }); 168 //return Ok(new { semester = userData }); 169 return Ok(new { semesters = results, currentSemestar = semesterData, subjectsBySemester = subjectsBySemester }); 170 } 171 172 [Authorize] 173 [HttpGet("getPassedSubjects")] 174 public async Task<IActionResult> getPassedSubjects() 175 { 176 var authHeader = Request.Headers["Authorization"].ToString(); 177 if (!authHeader.StartsWith("Bearer ")) 178 return Unauthorized(); 179 180 var token = authHeader.Substring("Bearer ".Length).Trim(); 181 var passedSubjects = await _userService.GetUserPassedSubjects(token); 182 183 if (passedSubjects == null || !passedSubjects.Any()) 184 return Ok(new { info = "No passed subjects found", passedSubjects = new List<object>() }); 185 186 var results = new List<object>(); 187 188 foreach (var passed in passedSubjects) 189 { 190 if (passed.SemesterSubject?.Subject != null) 191 { 192 var result = new 193 { 194 id = passed.Id, 195 subjectId = passed.SemesterSubject.Subject.Id, 196 code = passed.SemesterSubject.Subject.Code ?? "", 197 subject = passed.SemesterSubject.Subject.Name ?? "", 198 credits = passed.SemesterSubject.Subject.AwardedCredits ?? 0, 199 grade = (int)passed.Grade, 200 gradeText = passed.Grade.ToString(), 201 date = passed.DatePassed.ToString("dd.MM.yyyy"), 202 semester = passed.SemesterSubject.EnrolledSemester?.Semester != null 203 ? (passed.SemesterSubject.EnrolledSemester.Semester.Type == 0 ? "Зимски" : "Летен") + 204 $" ({passed.SemesterSubject.EnrolledSemester.Semester.Year}/{passed.SemesterSubject.EnrolledSemester.Semester.Year + 1})" 205 : "", 206 professor = passed.SemesterSubject.Professor != null 207 ? $"{passed.SemesterSubject.Professor.Name} {passed.SemesterSubject.Professor.Surname}".Trim() 208 : "" 209 }; 210 results.Add(result); 211 } 212 } 213 214 return Ok(new { passedSubjects = results }); 215 } 216 139 217 } 140 218 }
Note:
See TracChangeset
for help on using the changeset viewer.
