diff --git a/BLL/Interfaces/Discussion.cs b/BLL/Interfaces/Discussion.cs index 43fc709..394ef88 100644 --- a/BLL/Interfaces/Discussion.cs +++ b/BLL/Interfaces/Discussion.cs @@ -12,6 +12,7 @@ public interface IDiscussionService Task AddNewDiscussionAsync(CreateDiscussionDTO Discussion); Task DeleteAsync(int id); Task GetByIdAsync(int id); + Task> GetListCommentByIdDiscussionAsync(int id); Task> GetAllDiscussionsAsync(); Task UpdateAsync(CreateDiscussionDTO Discussion); } diff --git a/BLL/Services/Discussion.cs b/BLL/Services/Discussion.cs index c0a7c0e..9daf1ce 100644 --- a/BLL/Services/Discussion.cs +++ b/BLL/Services/Discussion.cs @@ -86,6 +86,12 @@ public async Task GetByIdAsync(int id) } } + public async Task> GetListCommentByIdDiscussionAsync(int id) + { + var answer = await DiscussionRepository.GetListCommentByIdDiscussionAsync(id); + return mapper.Map>(answer); + } + public async Task UpdateAsync(CreateDiscussionDTO e) { try diff --git a/DAL/Interfaces/Discussion.cs b/DAL/Interfaces/Discussion.cs index 6e01d56..9850df6 100644 --- a/DAL/Interfaces/Discussion.cs +++ b/DAL/Interfaces/Discussion.cs @@ -10,6 +10,7 @@ namespace DAL.Interfaces public interface IDiscussionRepository { Task> GetAllAsync(); + Task> GetListCommentByIdDiscussionAsync(int id); Task GetByIdAsync(int id); Task UpdateAsync(Discussion entity); Task AddAsync(Discussion entity); diff --git a/DAL/Repositories/Discussion.cs b/DAL/Repositories/Discussion.cs index f57c6fc..0fca6d5 100644 --- a/DAL/Repositories/Discussion.cs +++ b/DAL/Repositories/Discussion.cs @@ -94,6 +94,33 @@ public async Task GetByIdAsync(int Id) throw; } } + public async Task> GetListCommentByIdDiscussionAsync(int Id) + { + try + { + var discussion = await GetByIdAsync(Id); + if (discussion == null) + { + throw new ArgumentNullException(nameof(discussion), "The Id Discussion is null"); + } + else + { + List comments = new List(); + foreach (var item in discussion.Comments) + { + + if (item.DiscussionId == Id) + comments.Add(item); + } + return discussion.Comments.Where(item => item.DiscussionId == Id).ToList(); + } + } + catch (Exception ex) + { + logger.LogError("failed to get Comment To Discussion" + ex.Message.ToString()); + throw; + } + } public async Task UpdateAsync(Discussion entity) { diff --git a/WebApi/Controllers/DiscussionController.cs b/WebApi/Controllers/DiscussionController.cs index 221237a..98683ae 100644 --- a/WebApi/Controllers/DiscussionController.cs +++ b/WebApi/Controllers/DiscussionController.cs @@ -65,6 +65,29 @@ public async Task GetById(int id) return StatusCode(500, "Internal Server Error"); // HTTP 500 } } + [HttpGet("GetListComment/{id}")] + public async Task GetListCommentById(int id) + { + try + { + var comment = await DiscussionService.GetListCommentByIdDiscussionAsync(id); + if (comment == null) + { + return NotFound($"Discussion with ID {id} not found"); // HTTP 404 + } + return Ok(comment); // HTTP 200 OK + } + catch (ArgumentException ex) + { + logger.LogError($"Invalid argument: {ex.Message}"); + return BadRequest(ex.Message); // HTTP 400 + } + catch (Exception ex) + { + logger.LogError($"Failed to get discussion with ID {id}: {ex.Message}"); + return StatusCode(500, "Internal Server Error"); // HTTP 500 + } + } [HttpPost] public async Task Add([FromBody] CreateDiscussionDTO newDiscussion)