diff --git a/Tsi1.Api/Tsi1.Api/Controllers/UserController.cs b/Tsi1.Api/Tsi1.Api/Controllers/UserController.cs index ac1b1b8b0df52c850b35dd1c4c1c15e5a6153b4f..e2abf687b6751ddbe19028264e3f2444c8b14269 100644 --- a/Tsi1.Api/Tsi1.Api/Controllers/UserController.cs +++ b/Tsi1.Api/Tsi1.Api/Controllers/UserController.cs @@ -300,6 +300,39 @@ namespace Tsi1.Api.Controllers return Ok(result.Data); } + [Authorize(Roles = UserTypes.FacultyAdmin)] + [HttpGet("GetStudents")] + public async Task<IActionResult> GetStudents() + { + var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value); + + var result = await _userService.GetStudents(tenantId); + + if (result.HasError) + { + return BadRequest(result.Message); + } + + return Ok(result.Data); + } + + [Authorize(Roles = UserTypes.FacultyAdmin)] + [HttpGet("GetProfessors")] + public async Task<IActionResult> GetProfessors() + { + var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value); + + var result = await _userService.GetProfessors(tenantId); + + if (result.HasError) + { + return BadRequest(result.Message); + } + + return Ok(result.Data); + } + + [Authorize(Roles = UserTypes.Student + ", " + UserTypes.Professor)] [HttpGet("GetById/{userId}")] public async Task<IActionResult> GetById(int userId) diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs index c031f87e8744a5e7cc82f8d7b610919d9ecd6ceb..1fbf3d8f98fe9bb37e97efba2d5df19c33f524bf 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs @@ -29,5 +29,9 @@ namespace Tsi1.BusinessLayer.Interfaces Task<ServiceResult<bool>> Delete(int userId); Task<ServiceResult<UserTypeDto>> GetUserType(int userId); + + Task<ServiceResult<List<UserPreviewDto>>> GetStudents(int tenantId); + + Task<ServiceResult<List<UserPreviewDto>>> GetProfessors(int tenantId); } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs index d664244f7663cee6040ae15020d65d65dee635a2..f7710da8edce4efe65a498e4a24a6034da930c49 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs @@ -302,5 +302,35 @@ namespace Tsi1.BusinessLayer.Services return result; } + + public async Task<ServiceResult<List<UserPreviewDto>>> GetStudents(int tenantId) + { + var result = new ServiceResult<List<UserPreviewDto>>(); + + var users = await _context.Users + .Where(x => x.UserType.Name == UserTypes.Student && x.TenantId == tenantId) + .ToListAsync(); + + var usersDto = _mapper.Map<List<UserPreviewDto>>(users); + + result.Data = usersDto; + + return result; + } + + public async Task<ServiceResult<List<UserPreviewDto>>> GetProfessors(int tenantId) + { + var result = new ServiceResult<List<UserPreviewDto>>(); + + var users = await _context.Users + .Where(x => x.UserType.Name == UserTypes.Professor && x.TenantId == tenantId) + .ToListAsync(); + + var usersDto = _mapper.Map<List<UserPreviewDto>>(users); + + result.Data = usersDto; + + return result; + } } }