Exemple #1
0
        public async Task <IActionResult> SendPrivateMessage([FromBody] SendPrivateMessageModel sendPrivateMessageModel)
        {
            var currentUserId = GetUserId();

            var privateMessage = await _messageService.AddPrivateMessage(
                currentUserId,
                sendPrivateMessageModel.ReceiverId,
                sendPrivateMessageModel.Sended,
                sendPrivateMessageModel.Content);

            var todoSender = CreateMessageSendingTasks(
                _onlineUsers.GetChatHubConnections(currentUserId),
                ChatMessageViewModel.ForMessageSender(privateMessage),
                _hubContext);

            var todoReceiver = CreateMessageSendingTasks(
                _onlineUsers.GetChatHubConnections(privateMessage.ReceiverId),
                ChatMessageViewModel.ForMessageReceiver(privateMessage),
                _hubContext);

            await Task.WhenAll(todoSender.Concat(todoReceiver));

            return(Ok());
        }