From 58fc93bfba8ce9f36df85af7f6dc8c2e35d49eb3 Mon Sep 17 00:00:00 2001
From: esantangelo <enzo020895@gmail.com>
Date: Sat, 7 Nov 2020 13:46:45 -0300
Subject: [PATCH] add endpoints GetStudents and GetProfessors

---
 .../Tsi1.Api/Controllers/UserController.cs    | 33 +++++++++++++++++++
 .../Interfaces/IUserService.cs                |  4 +++
 .../Services/UserService.cs                   | 30 +++++++++++++++++
 3 files changed, 67 insertions(+)

diff --git a/Tsi1.Api/Tsi1.Api/Controllers/UserController.cs b/Tsi1.Api/Tsi1.Api/Controllers/UserController.cs
index ac1b1b8..e2abf68 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 c031f87..1fbf3d8 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 d664244..f7710da 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;
+        }
     }
 }
-- 
GitLab