using IM_API.Dtos; using IM_API.Interface.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.ComponentModel.DataAnnotations; using System.Security.Claims; namespace IM_API.Controllers { [Authorize] [Route("api/[controller]/[action]")] [ApiController] public class MessageController : ControllerBase { private readonly IMessageSevice _messageService; private readonly ILogger _logger; public MessageController(IMessageSevice messageService, ILogger logger) { _messageService = messageService; _logger = logger; } [HttpPost] public async Task SendPrivateMessage(MessageBaseDto dto) { var userIdstr = User.FindFirstValue(ClaimTypes.NameIdentifier); await _messageService.SendPrivateMessageAsync(int.Parse(userIdstr), dto.ReceiverId, dto); return Ok(new BaseResponse()); } [HttpPost] public async Task SendGroupMessage(MessageBaseDto dto) { var userIdstr = User.FindFirstValue(ClaimTypes.NameIdentifier); await _messageService.SendGroupMessageAsync(int.Parse(userIdstr), dto.ReceiverId, dto); return Ok(new BaseResponse()); } [HttpGet] public async Task GetMessageList([Required]int conversationId, int? msgId, int? pageSize) { var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); var msgList = await _messageService.GetMessagesAsync(int.Parse(userIdStr), conversationId, msgId, pageSize, false); var res = new BaseResponse>(msgList); return Ok(res); } } }