Changeset f735dac for iknow-api


Ignore:
Timestamp:
12/10/25 13:45:42 (10 months ago)
Author:
GitHub <noreply@…>
Branches:
master
Children:
39f76a9
Parents:
ab652ff (diff), 615f18d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Stefan Saveski <76560180+stefansaveski@…> (12/10/25 13:45:42)
git-committer:
GitHub <noreply@…> (12/10/25 13:45:42)
Message:

Merge pull request #7 from stefansaveski/feature/get-semesters

Add getSemesters endpoint and related data access

Location:
iknow-api
Files:
6 edited

Legend:

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

    rab652ff rf735dac  
    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}
  • iknow-api/Data/AppDbContext.cs

    rab652ff rf735dac  
    1919        public DbSet<Major> Majors { get; set; }
    2020        public DbSet<PassedSubject> PassedSubjects { get; set; }
     21        public DbSet<EnrolledSemesters> EnrolledSemesters { get; set; }
    2122
    2223
  • iknow-api/Repository/Implementations/UserRepository.cs

    rab652ff rf735dac  
    6363            return await _context.User.CountAsync();
    6464        }
     65        public async Task<List<EnrolledSemesters>> GetUserSemestersAsync(int id)
     66        {
     67            return await _context.EnrolledSemesters
     68                .Include(es => es.Major)
     69                .Where(es => es.UserId == id)
     70                .ToListAsync();
     71        }
    6572
    6673    }
  • iknow-api/Repository/Interface/IUserRepository.cs

    rab652ff rf735dac  
    1212        Task<int> GetUsersCountAsync();
    1313        Task<User?> GetUserByIdAsync(int id);
     14        Task<List<EnrolledSemesters>?> GetUserSemestersAsync(int id);
    1415        Task<User?> GetOnlyUserByIdAsync(int id);
    1516
  • iknow-api/Services/Implementations/UserService.cs

    rab652ff rf735dac  
    3333            else
    3434                return user;
     35        }
     36        public async Task<List<EnrolledSemesters>> GetUserSemesters(string JWT)
     37        {
     38            var userId = ExtractUserIdFromJwt(JWT);
     39            if (userId == null)
     40                return null;
     41
     42            // Now you can use userId to fetch user data
     43            var semesters = await _userRepository.GetUserSemestersAsync(userId.Value);
     44            if (semesters == null)
     45                return null;
     46            else
     47                return semesters;
    3548        }
    3649
  • iknow-api/Services/Interfaces/IUserService.cs

    rab652ff rf735dac  
    66    {
    77        Task<User> GetUserData(string userId);
     8        Task<List<EnrolledSemesters>> GetUserSemesters(string userId);
    89    }
    910}
Note: See TracChangeset for help on using the changeset viewer.