public async Task <IActionResult> Post(MessagePostDto message) { var currentUserId = await _userService.GetUserIdByLogin(User.Identity.Name); var targetUser = await _userService.GetUserById(message.ReceiverId); if (targetUser == null) { return(BadRequest("Target user doesnt exist !")); } if (currentUserId.Value == targetUser.Id) { return(BadRequest("Cannot send message to yourself!")); } var result = await _messageService.AddMessage(currentUserId.Value, message); if (result.IsSuccessful) { var connectionId = MessagesHub.TryGetUserConnection(targetUser.Login); if (!string.IsNullOrEmpty(connectionId)) { await _hubContext.Clients.Client(connectionId).SendAsync("Recieve", message); } return(Ok()); } return(StatusCode(500, result.Message)); }
public async Task <OperationResult> AddMessage(int currentUserId, MessagePostDto message) { var messageModel = new Message() { Content = message.Content, DateCreated = DateTime.Now, IsDelivered = false, ReceiverId = message.ReceiverId, SenderId = currentUserId }; await repository.AddAsync(messageModel); var response = await repository.SaveChangesAsync(); if (response > 0) { return(new OperationResult() { IsSuccessful = true, Payload = messageModel }); } else { return(OtherServices.GetIncorrectDatabaseConnectionResult()); } }
public async Task <IActionResult> PostMessageToChannelAsync(int id, MessagePostDto messagePostDto) { await _channelCommandService.NotifyTypingAsync(id, User.GetUserId(), true); await _messageCommandService.PostMessageToChannelAsync(messagePostDto.MessageContent, id, User.GetUserId(), User.GetWorkspaceId(), messagePostDto.MentionUserIds); return(Ok()); }
public async Task <IActionResult> SendPrivateMessage([FromBody] MessagePostDto message) { if (await _userManager.FindByIdAsync(message.ReceiverId) == null) { return(BadRequest(new { Message = $"No user with provided ID { message.ReceiverId } has been found." })); } if (!await _messageService.AddAsync(message, User.FindFirstValue(ClaimTypes.NameIdentifier))) { return(Conflict(new { Error = "Request unsuccessfull." })); } await _messageHub.SendPrivateMessage(HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier), message); return(NoContent()); }
public async Task SendPrivateMessage(string senderId, MessagePostDto message) { var sender = await _userManager.FindByIdAsync(senderId); var receiver = await _userManager.FindByIdAsync(message.ReceiverId); await _hubContext.Clients.User(message.ReceiverId).SendAsync("sendMessage", new { receiverId = message.ReceiverId, receiverName = receiver.UserName, senderId = senderId, senderName = sender.UserName, sent = DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"), text = message.Text }); }
public async Task <IActionResult> UpdateMessageInChannelAsync(int channelId, int messageId, MessagePostDto messagePostDto) { await _messageCommandService.UpdateMessageInChannelAsync(messagePostDto.MessageContent, channelId, messageId, User.GetUserId(), User.GetWorkspaceId(), messagePostDto.MentionUserIds); return(Ok()); }
public async Task <IActionResult> UpdateMessageInConversationAsync(int conversationId, int messageId, MessagePostDto messagePostDto) { await _messageCommandService.UpdateMessageInConversationAsync(messagePostDto.MessageContent, conversationId, messageId, User.GetUserId()); return(Ok()); }