public static void SendTopicMessage(TopicMessage topicMessage, WebSocket receiverWebsocket)
        {
            var message = new TopicMessageDto
            {
                TopicTitle = topicMessage.Topics.Title,
                Sender     = topicMessage.User.Username,
                Text       = topicMessage.Text,
                CreatedAt  = topicMessage.CreatedAt.ToLocalTime().ToString()
            };

            Communication.SendResponse(receiverWebsocket, message);
        }
Esempio n. 2
0
        private void HandleTopicMessage(TopicMessageDto topicMessageDto)
        {
            if (!AuthService.IsLoggedIn(_user))
            {
                Communication.SendError(_webSocket, "You must be logged in to send direct message");
                Log.Warning("Not logged in user tried to send topic message");
                return;
            }

            var topic = TopicService.GetTopics(topicMessageDto.TopicTitle);

            if (topic != null)
            {
                var newTopicMessage = new TopicMessage
                {
                    CreatedAt = DateTimeOffset.Now,
                    Text      = topicMessageDto.Text,
                    UserId    = _user.UserId,
                    TopicsId  = topic.TopicsId
                };

                var topicMessage = MessageService.SaveTopicMessage(newTopicMessage);
                if (topicMessage != null)
                {
                    var userList = TopicService.GetUserForTopic(topic);
                    foreach (var user in userList.Where(user => _connectedClient.ContainsKey(user)))
                    {
                        MessageService.SendTopicMessage(
                            topicMessage,
                            _connectedClient[user]
                            );
                    }
                }
                else
                {
                    Communication.SendError(_webSocket,
                                            $"Could not save message to topic {topicMessageDto.TopicTitle}");
                    Log.Error("Error while saving topic message");
                }
            }
            else
            {
                Communication.SendError(_webSocket, $"Could not send message to topic {topicMessageDto.TopicTitle}");
                Log.Warning($"Topic {topicMessageDto.TopicTitle} do not exist");
            }
        }