Example #1
0
 private MessageRecipient AddUser(string userId, string userName)
 {
     var user = new MessageRecipient();
     user.messageRecipientId = userId;
     user.messageRecipientName = userName;
     user.connectionId = Context.ConnectionId;
     _chatUsers[userId] = user;
     return user;
 }
Example #2
0
 private Boolean CheckIfRoomExists(MessageRecipient fromUser, MessageRecipient toUser)
 {
     foreach (string chatRoomId in fromUser.chatRoomIds)
     {
         Int32 count = (from mr in _chatRooms[chatRoomId].messageRecipients
                        where mr.messageRecipientId == toUser.messageRecipientId
                        select mr).Count();
         if (count > 0)
         {
             return true;
         }
     }
     foreach (string chatRoomId in toUser.chatRoomIds)
     {
         Int32 count = (from mr in _chatRooms[chatRoomId].messageRecipients
                        where mr.messageRecipientId == fromUser.messageRecipientId
                        select mr).Count();
         if (count > 0)
         {
             return true;
         }
     }
     return false;
 }
Example #3
0
 public bool EndChat(ChatMessage chatMessage)
 {
     try
     {
         ChatRoom chatRoom;
         if (_chatRooms.TryGetValue(chatMessage.conversationId, out chatRoom))
         {
             if (_chatRooms[chatRoom.chatRoomId].chatRoomInitiatedBy == chatMessage.senderId)
             {
                 chatMessage.messageText = string.Format("{0} left the chat. Chat Ended!", chatMessage.senderName);
                 if (_chatRooms.TryRemove(chatRoom.chatRoomId, out chatRoom))
                 {
                     Clients[chatRoom.chatRoomId].receiveEndChatMessage(chatMessage);
                     foreach (MessageRecipient messageReceipient in chatRoom.messageRecipients)
                     {
                         if (messageReceipient.chatRoomIds.Contains(chatRoom.chatRoomId))
                         {
                             messageReceipient.chatRoomIds.Remove(chatRoom.chatRoomId);
                             Groups.Remove(messageReceipient.connectionId, chatRoom.chatRoomId);
                         }
                     }
                 }
             }
             else
             {
                 MessageRecipient messageRecipient = GetChatUserByUserId(chatMessage.senderId);
                 if (messageRecipient != null && messageRecipient.chatRoomIds.Contains(chatRoom.chatRoomId))
                 {
                     chatRoom.messageRecipients.Remove(messageRecipient);
                     messageRecipient.chatRoomIds.Remove(chatRoom.chatRoomId);
                     if (chatRoom.messageRecipients.Count < 2)
                     {
                         chatMessage.messageText = string.Format("{0} left the chat. Chat Ended!", chatMessage.senderName);
                         if (_chatRooms.TryRemove(chatRoom.chatRoomId, out chatRoom))
                         {
                             Clients[chatRoom.chatRoomId].receiveEndChatMessage(chatMessage);
                             foreach (MessageRecipient messageReceipient in chatRoom.messageRecipients)
                             {
                                 if (messageReceipient.chatRoomIds.Contains(chatRoom.chatRoomId))
                                 {
                                     messageReceipient.chatRoomIds.Remove(chatRoom.chatRoomId);
                                     Groups.Remove(messageReceipient.connectionId, chatRoom.chatRoomId);
                                 }
                             }
                         }
                     }
                     else
                     {
                         chatMessage.messageText = string.Format("{0} left the chat.", chatMessage.senderName);
                         Groups.Remove(messageRecipient.connectionId, chatRoom.chatRoomId);
                         Clients[messageRecipient.connectionId].receiveEndChatMessage(chatMessage);
                         Clients[chatRoom.chatRoomId].receiveLeftChatMessage(chatMessage);
                         Clients[chatRoom.chatRoomId].updateChatUI(chatRoom);
                     }
                 }
             }
         }
         else
         {
             throw new InvalidOperationException("Problem in ending chat!");
         }
         return(true);
     }
     catch (Exception ex)
     {
         return(false);
         //throw new InvalidOperationException("Problem in ending chat!");
     }
 }