source: iknow-api/Controllers/UserController.cs@ 33c69d6

Last change on this file since 33c69d6 was 691f152, checked in by Stefan-Saveski <stefansaveski19@…>, 10 months ago

Add getSemesters endpoint and related data access

Introduce a new getSemesters endpoint in UserController.cs to retrieve user semester data using JWT authentication.

Add DbSet<EnrolledSemesters> to AppDbContext.cs for database interaction.

Implement GetUserSemestersAsync in UserRepository.cs to fetch semesters by user ID, and update IUserRepository.cs to declare this method.

Add GetUserSemesters method in UserService.cs to extract user ID from JWT and retrieve semesters, updating IUserService.cs accordingly.

  • Property mode set to 100644
File size: 5.2 KB
Line 
1using iknow_api.DTOs;
2using Microsoft.AspNetCore.Authorization;
3using Microsoft.AspNetCore.Mvc;
4using iknow_api.Services;
5
6namespace iknow_api.Controllers
7{
8 [ApiController]
9 [Route("api/[controller]")]
10 public class UserController : Controller
11 {
12 IUserService _userService;
13 public UserController(IUserService userService)
14 {
15 _userService = userService;
16 }
17 [Authorize]
18 [HttpGet("getUser")]
19 public async Task<IActionResult> getUser()
20 {
21 var authHeader = Request.Headers["Authorization"].ToString();
22 if (authHeader.StartsWith("Bearer "))
23 {
24 var token = authHeader.Substring("Bearer ".Length).Trim();
25 // token = your JWT
26 var userData = await _userService.GetUserData(token);
27 if (userData == null) return Ok(new { info = "can't get info" });
28 return Ok(new { User = userData });
29 }
30 return null;
31
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 [Authorize]
59 [HttpGet("getSemesters")]
60 public async Task<IActionResult> getSemesters()
61 {
62 var authHeader = Request.Headers["Authorization"].ToString();
63 if (authHeader.StartsWith("Bearer "))
64 {
65 var token = authHeader.Substring("Bearer ".Length).Trim();
66 // token = your JWT
67 var userData = await _userService.GetUserSemesters(token);
68 var results = new List<object>();
69
70 for(int i=0; i<userData.Count; i++)
71 {
72 var newResult = new
73 {
74 id = userData[i].Id,
75 semester = (userData[i].Type == 0 ? "Зимски" : "Летен") + $"({userData[i].Year}/{userData[i].Year + 1})",
76 direction = userData[i].Major?.Name ?? "",
77 quota = userData[i].QuotaType.ToString(),
78 note = "",
79 studentCom = "",
80 sum = "0,00",
81 paid = "0,00",
82 ukim = "",
83 createdOn = DateTime.Now.ToString("dd.MM.yyyy"),
84 dateChanged = DateTime.Now.ToString("dd.MM.yyyy"),
85 credits = "0,00",
86 type = "Ред.",
87 doc = "Не",
88 doc1 = "Не",
89 verified = "Не",
90 taxes = "0,00",
91 signatures = "0/5",
92 status = "валиден",
93 completed = "Не"
94 };
95 results.Add(newResult);
96 }
97 if (userData == null) return Ok(new { info = "can't get info" });
98 return Ok(new { semesters = results });
99 }
100 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 //}
139 }
140}
Note: See TracBrowser for help on using the repository browser.