diff --git a/Tsi1.Api/Tsi1.Api/Controllers/ForumController.cs b/Tsi1.Api/Tsi1.Api/Controllers/ForumController.cs index 38200615365e0890f550c14f98992407d486fb8c..1c15566862d246c184c30bbc6e51721e90254956 100644 --- a/Tsi1.Api/Tsi1.Api/Controllers/ForumController.cs +++ b/Tsi1.Api/Tsi1.Api/Controllers/ForumController.cs @@ -36,20 +36,6 @@ namespace Tsi1.Api.Controllers return Ok(result.Data); } - //[Authorize(Roles = UserTypes.Professor)] - //[HttpPost("Create")] - //public async Task<IActionResult> Create(ForumCreateDto newForum) - //{ - // var result = await _forumService.Create(newForum); - - // if (result.HasError) - // { - // return BadRequest(result.Message); - // } - - // return Ok(result.Data); - //} - [Authorize(Roles = UserTypes.Professor)] [HttpPut("{id}")] public async Task<IActionResult> Modify(int id, ForumModifyDto forum) @@ -99,5 +85,19 @@ namespace Tsi1.Api.Controllers return Ok(); } + [Authorize(Roles = UserTypes.Professor + ", " + UserTypes.Student + ", " + UserTypes.FacultyAdmin)] + [HttpGet("GetById/{forumId}")] + public async Task<IActionResult> GetById(int forumId) + { + var result = await _forumService.GetById(forumId); + + if (result.HasError) + { + return BadRequest(result.Message); + } + + return Ok(result.Data); + } + } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IForumService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IForumService.cs index 3c581da3db87ab3e8899467d5b9d2332f3b4b7f7..3fad38a21a0b3176162448e4c16424da66f1b345 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IForumService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IForumService.cs @@ -16,5 +16,6 @@ namespace Tsi1.BusinessLayer.Interfaces Task<ServiceResult<Forum>> Delete(int forumId); Task<ServiceResult<List<string>>> GetSubscribedUsers(int forumId); Task<ServiceResult<List<bool>>> Subscribe(int forumId, int userId); + Task<ServiceResult<ForumPreviewDto>> GetById(int forumId); } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/ForumService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/ForumService.cs index 70eae1917c7c48c32dac30bb52003071c4c1c46d..7d8be8f56d7833a393e6f84cdf541c45d72289e9 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Services/ForumService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/ForumService.cs @@ -190,5 +190,23 @@ namespace Tsi1.BusinessLayer.Services return result; } + + public async Task<ServiceResult<ForumPreviewDto>> GetById(int forumId) + { + var result = new ServiceResult<ForumPreviewDto>(); + + var forum = await _context.Forums.AsNoTracking().FirstOrDefaultAsync(x => x.Id == forumId); + + if (forum == null) + { + result.HasError = true; + result.Message = string.Format(ErrorMessages.ForumDoesNotExist, forumId); + return result; + } + + result.Data = _mapper.Map<ForumPreviewDto>(forum); + + return result; + } } }