From 2f5e89a2d1fb90fc86973d1755316cf0afae6b6b Mon Sep 17 00:00:00 2001 From: esantangelo <enzo020895@gmail.com> Date: Wed, 4 Nov 2020 21:46:30 -0300 Subject: [PATCH] add endpoint GET api/Courses/GetProfessors/{courseId} --- .../Tsi1.Api/Controllers/CourseController.cs | 14 +++++++++++++ .../Tsi1.BusinessLayer/Dtos/UserDetailDto.cs | 21 +++++++++++++++++++ .../Tsi1.BusinessLayer/Dtos/UserPreviewDto.cs | 6 +----- .../Helpers/MappingProfile.cs | 6 ++++-- .../Interfaces/ICourseService.cs | 1 + .../Interfaces/IUserService.cs | 4 ++-- .../Services/CourseService.cs | 18 ++++++++++++++++ .../Services/UserService.cs | 12 +++++------ 8 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserDetailDto.cs diff --git a/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs b/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs index cb90fae..07e1566 100644 --- a/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs +++ b/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs @@ -14,6 +14,7 @@ using Tsi1.BusinessLayer.Interfaces; namespace Tsi1.Api.Controllers { + [Authorize] [Route("api/[controller]")] [ApiController] public class CourseController : ControllerBase @@ -220,5 +221,18 @@ namespace Tsi1.Api.Controllers return Ok(); } + + [HttpGet("GetProfessors/{courseId}")] + public async Task<IActionResult> GetProfessors(int courseId) + { + var result = await _courseService.GetProfessors(courseId); + if (result.HasError) + { + return BadRequest(result.Message); + } + + return Ok(result.Data); + } + } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserDetailDto.cs b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserDetailDto.cs new file mode 100644 index 0000000..6bf6136 --- /dev/null +++ b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserDetailDto.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tsi1.BusinessLayer.Dtos +{ + public class UserDetailDto + { + public int Id { get; set; } + + public string Username { get; set; } + + public string FirstName { get; set; } + + public string LastName { get; set; } + + public StudentPreviewDto Student { get; set; } + + public ProfessorPreviewDto Professor { get; set; } + } +} diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserPreviewDto.cs b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserPreviewDto.cs index 1c9804b..c29cc74 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserPreviewDto.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/UserPreviewDto.cs @@ -8,14 +8,10 @@ namespace Tsi1.BusinessLayer.Dtos { public int Id { get; set; } - public string Username { get; set; } - public string FirstName { get; set; } public string LastName { get; set; } - public StudentPreviewDto Student { get; set; } - - public ProfessorPreviewDto Professor { get; set; } + public string Email { get; set; } } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Helpers/MappingProfile.cs b/Tsi1.Api/Tsi1.BusinessLayer/Helpers/MappingProfile.cs index 00a67f4..70331a3 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Helpers/MappingProfile.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Helpers/MappingProfile.cs @@ -20,9 +20,10 @@ namespace Tsi1.BusinessLayer.Helpers CreateMap<PostMessage, PostMessagePreviewDto>(); CreateMap<Message, MessagePreviewDto>(); CreateMap<Message, MessageCreateDto>(); - CreateMap<User, UserPreviewDto>(); + CreateMap<User, UserDetailDto>(); CreateMap<User, UserRegisterDto>(); CreateMap<User, UserModifyDto>(); + CreateMap<User, UserPreviewDto>(); CreateMap<Student, StudentPreviewDto>(); CreateMap<Professor, ProfessorPreviewDto>(); CreateMap<Course, CourseCreateDto>(); @@ -41,9 +42,10 @@ namespace Tsi1.BusinessLayer.Helpers CreateMap<PostMessagePreviewDto, PostMessage>(); CreateMap<MessagePreviewDto, Message>(); CreateMap<MessageCreateDto, Message>(); - CreateMap<UserPreviewDto, User>(); + CreateMap<UserDetailDto, User>(); CreateMap<UserRegisterDto, User>(); CreateMap<UserModifyDto, User>(); + CreateMap<UserPreviewDto, User>(); CreateMap<StudentPreviewDto, Student>(); CreateMap<ProfessorPreviewDto, Professor>(); CreateMap<CourseCreateDto, Course>(); diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICourseService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICourseService.cs index f13641f..54b167f 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICourseService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICourseService.cs @@ -27,5 +27,6 @@ namespace Tsi1.BusinessLayer.Interfaces Task<ServiceResult<bool>> DropOutFromCourse(int userId, int courseId); Task<ServiceResult<bool>> RemoveProfessorToCourse(ProfessorCourseDto professorCourseDto); + Task<ServiceResult<List<UserPreviewDto>>> GetProfessors(int courseId); } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs index 5455081..c031f87 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IUserService.cs @@ -14,9 +14,9 @@ namespace Tsi1.BusinessLayer.Interfaces Task<ServiceResult<User>> Create(UserRegisterDto dto, string type, int tenantId); - Task<ServiceResult<List<UserPreviewDto>>> GetAll(int tenantId); + Task<ServiceResult<List<UserDetailDto>>> GetAll(int tenantId); - Task<ServiceResult<UserPreviewDto>> GetById(int userId); + Task<ServiceResult<UserDetailDto>> GetById(int userId); Task<ServiceResult<User>> GetByUsername(string username, int tenantId); diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs index 6930b54..88c4278 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs @@ -323,5 +323,23 @@ namespace Tsi1.BusinessLayer.Services return result; } + + public async Task<ServiceResult<List<UserPreviewDto>>> GetProfessors(int courseId) + { + var result = new ServiceResult<List<UserPreviewDto>>(); + + var users = await _context.ProfessorCourses + .Include(x => x.Professor) + .ThenInclude(x => x.User) + .Where(x => x.CourseId == courseId) + .Select(x => x.Professor.User) + .ToListAsync(); + + var userDtos = _mapper.Map<List<UserPreviewDto>>(users); + + result.Data = userDtos; + + return result; + } } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs index 3a54107..d664244 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/UserService.cs @@ -135,24 +135,24 @@ namespace Tsi1.BusinessLayer.Services return result; } - public async Task<ServiceResult<List<UserPreviewDto>>> GetAll(int tenantId) + public async Task<ServiceResult<List<UserDetailDto>>> GetAll(int tenantId) { - var result = new ServiceResult<List<UserPreviewDto>>(); + var result = new ServiceResult<List<UserDetailDto>>(); var users = await _context.Users .Where(x => x.UserType.Name != UserTypes.FacultyAdmin && x.TenantId == tenantId) .ToListAsync(); - var usersDto = _mapper.Map<List<UserPreviewDto>>(users); + var usersDto = _mapper.Map<List<UserDetailDto>>(users); result.Data = usersDto; return result; } - public async Task<ServiceResult<UserPreviewDto>> GetById(int userId) + public async Task<ServiceResult<UserDetailDto>> GetById(int userId) { - var result = new ServiceResult<UserPreviewDto>(); + var result = new ServiceResult<UserDetailDto>(); var user = await _context.Users .Include(x => x.UserType) @@ -182,7 +182,7 @@ namespace Tsi1.BusinessLayer.Services return result; } - var userDto = _mapper.Map<UserPreviewDto>(user); + var userDto = _mapper.Map<UserDetailDto>(user); result.Data = userDto; -- GitLab