diff --git a/server/Controllers/ChatHttpController.cs b/server/Controllers/ChatHttpController.cs index bc5e47a..ce2f832 100644 --- a/server/Controllers/ChatHttpController.cs +++ b/server/Controllers/ChatHttpController.cs @@ -34,4 +34,25 @@ public async Task Join([FromBody] ChatJoinRequest chatJoinRequest) return Ok(); } + + [HttpGet] + public async Task ChatLog(long roomId) + { + var chatLogResponse = await _chatHttpService.ChatLog(roomId); + + if (chatLogResponse == null) return NotFound(); + + JwtSecurityToken jwtToken = HttpContext.GetJwtToken(); + long id = long.Parse(jwtToken.GetClaimByType("id")); + + foreach (var response in chatLogResponse) + { + if (response.sender == id) + { + return Ok(chatLogResponse); + } + } + + return Unauthorized(); + } } diff --git a/server/DTOs/chat/ChatLogResponse.cs b/server/DTOs/chat/ChatLogResponse.cs new file mode 100644 index 0000000..41d1893 --- /dev/null +++ b/server/DTOs/chat/ChatLogResponse.cs @@ -0,0 +1,10 @@ +namespace server.DTOs; + +public class ChatLogResponse +{ + public long sender { get; set; } + + public string message { get; set; } + + public DateTime datetime { get; set; } +} diff --git a/server/Entities/ChatLogsEntity.cs b/server/Entities/ChatLogsEntity.cs index e43c16b..c1a0836 100644 --- a/server/Entities/ChatLogsEntity.cs +++ b/server/Entities/ChatLogsEntity.cs @@ -11,7 +11,7 @@ public class ChatLogsEntity : BaseEntity public long Receiver { get; set; } [Required] - public string DateTime { get; set; } + public DateTime DateTime { get; set; } [Required] public string Message { get; set; } @@ -21,7 +21,6 @@ public class ChatLogsEntity : BaseEntity public ChatLogsEntity() { - DateTime = ""; Message = ""; } } diff --git a/server/Services/ChatHttpService.cs b/server/Services/ChatHttpService.cs index 7dbc6ec..4fb2348 100644 --- a/server/Services/ChatHttpService.cs +++ b/server/Services/ChatHttpService.cs @@ -1,4 +1,5 @@ -using server.DTOs; +using System.Data.Entity; +using server.DTOs; using server.Entities; using server.Interface; @@ -33,4 +34,29 @@ public ChatHttpService(ApplicationDbContext context) return true; } + + public async Task> ChatLog(long roomId) + { + // RoomId가 동일한 채팅 기록들을 모두 받아옴 + var chatLogs = this._context.ChatLogsEntities.Where(log => log.RoomId == roomId).ToList(); + List chatLogResponses = new List(); + + // RoomId가 동일한 채팅 기록이 없는 경우 null을 반환함. + if (chatLogs == null || !chatLogs.Any()) return null; + + foreach (var chatLog in chatLogs) + { + ChatLogResponse response = new ChatLogResponse + { + sender = chatLog.Sender, + message = chatLog.Message, + datetime = chatLog.DateTime + }; + + chatLogResponses.Add(response); + } + + return chatLogResponses; + } + }