Ignore:
Timestamp:
12/10/25 13:44:07 (10 months ago)
Author:
Stefan-Saveski <stefansaveski19@…>
Branches:
master
Children:
33c69d6
Parents:
2d64b2e
Message:

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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • iknow-api/Controllers/UserController.cs

    r2d64b2e r691f152  
    2929            }
    3030            return null;
    31            
     31
    3232        }
     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                //}
    33139    }
    34140}
Note: See TracChangeset for help on using the changeset viewer.