// sends a typing signal to a room, conversation or user
        public void sendTypingSignal(int roomId, long conversationId, long ToID)
        {
            try
            {
                var ret = new
                {
                    RoomId         = roomId,
                    ConversationId = conversationId,
                    ToID           = ToID,
                    UserFrom       = GetMyChatInfo(roomId)
                };

                IList <string> connectionIDs = new BusinessLogic.UserAccess().GetFollowerList(CurrentUser.UserID, ToID, Enums.PageType.Profile, Enums.FriendshipStatus.FA)
                                               .Where(x => x.ConnectedBy == (byte)Enums.BroadCastType.Web).Select(x => x.ConnectionID).ToList();


                Clients.Clients(connectionIDs).sendTypingSignal(ret);
            }
            catch (Exception ex)
            {
                ex.HelpLink = "It can be due to database connection error.";
                ex.Data.Add("Location : ", "Exception occured while sending typing signal.");
                ex.Data.Add("Applpication Tier : ", "1. QAConnect");
                ex.Data.Add("Class : ", "Chat Hub");
                ex.Data.Add("Method : ", "sendTypingSignal");
                ex.Data.Add("Input Parameters : ", string.Format("User ID: {0},Friend ID : {1}, Room ID : {2}, Conversation ID : {3}", CurrentUser.UserID, ToID, roomId, conversationId));

                Logs.Error("Error sending typing signal.", ex);
            }
        }
        // sends a message to a room, conversation or user
        public void sendMessage(ChatMessageModel message)//int roomId, long conversationId, long otherUserId, string messageText, string clientGuid)
        {
            try
            {
                message.FromID         = CurrentUser.UserID;
                message.CreatedOn      = DateTime.Now;
                message.PostedByName   = CurrentUser.FullName;
                message.PostedByAvatar = CurrentUser.ProfilePicture;
                message.FromName       = CurrentUser.UserName;

                BroadcastChatMessage model = _hub.SendChatMessage(message);

                IList <string> connectionIDs = new BusinessLogic.UserAccess().GetFollowerList(model.ChatMessage.FromID, model.ChatMessage.ToID, model.ChatMessage.PageType, Enums.FriendshipStatus.FA)
                                               .Where(x => x.ConnectedBy == (byte)Enums.BroadCastType.Web).Select(x => x.ConnectionID).ToList();

                Clients.Clients(connectionIDs).sendMessage(model.ChatMessage);
            }
            catch (Exception ex)
            {
                Logs.Error("Error while sending message.", ex);
            }
        }