public UserResponse(CurrentUser user)
 {
     Guid           = user.GUID;
     Names          = new UsersNames(user);
     ProfileURL     = "Todo";
     ProfilePicture = user.ProfilePicture;
 }
 public void SignIn(string name)
 {
     lock (_lockObj10)
     {
         UsersConnections.Add(Context.ConnectionId, name);
         UsersNames.Add(name, Context.ConnectionId);
         foreach (var user in UsersWithStatus.Where(u => u.UserName == name))
         {
             user.Status = StatusOfConnection.Available;
         }
         UpdateAllUsersNamesAndConnectionStatus();
     }
 }
        public override Task OnDisconnected(bool stopCalled)
        {
            if (stopCalled)
            {
                var    con          = Context.ConnectionId;
                string nameToRemove = UsersConnections[con];
                UsersNames.Remove(nameToRemove);
                UsersConnections.Remove(Clients.Caller);

                foreach (var item in UsersWithStatus)
                {
                    if ((item.UserName).Equals(nameToRemove))
                    {
                        item.Status = StatusOfConnection.Offline;
                    }
                }
                UpdateAllUsersNamesAndConnectionStatus();
            }
            return(base.OnDisconnected(stopCalled));
        }
        public bool ValidateAvailabilityOfOtherUser(string userToConnectTo, GameOrChatRequestEnum request)
        {
            string connectionId;

            if (UsersNames.TryGetValue(userToConnectTo, out connectionId))
            {
                foreach (UserWithStatus user in UsersWithStatus)
                {
                    if (user.UserName.Equals(userToConnectTo))
                    {
                        if ((user.Status == StatusOfConnection.Available || user.Status == StatusOfConnection.BusyOnGame) && request == GameOrChatRequestEnum.Chat)
                        {
                            return(true);
                        }
                        if ((user.Status == StatusOfConnection.Available || user.Status == StatusOfConnection.BusyOnChat) && request == GameOrChatRequestEnum.Game)
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }