private ChatMessageInfo GetChatMessageInfo(ChatMessage chatMessage, string clientGuid) { if (chatMessage == null) throw new ArgumentNullException("chatMessage"); return new ChatMessageInfo { Message = chatMessage.Message, UserFromId = chatMessage.UserFromId, UserToId = chatMessage.UserToId, ConversationId = chatMessage.ConversationId, RoomId = chatMessage.RoomId, ClientGuid = clientGuid }; }
/// <summary> /// Sends a message to a particular user /// </summary> public void SendMessage(int? roomId, int? conversationId, int? userToId, string message, string clientGuid) { var myUserId = this.GetMyUserId(); var dbChatMessage = new ChatMessage { DateTime = DateTime.UtcNow, Message = message, UserFromId = myUserId, RoomId = roomId, ConversationId = conversationId, UserToId = userToId }; this.Db.ChatMessages.Add(dbChatMessage); this.Db.SaveChanges(); // gets the connections that have to receive the message var connectionIds = ChatHubCache.GetConnectionsToTarget(myUserId, roomId, conversationId, userToId); var chatMessage = this.GetChatMessageInfo(dbChatMessage, clientGuid); foreach (var connectionId in connectionIds) this.Clients.Client(connectionId).sendMessage(chatMessage); }