示例#1
0
 public FriendsAppUser(UserDetailMsg userMsg, uint?roomId, ulong[] friendsList)
 {
     UserId        = userMsg.UserId;
     Username      = userMsg.Username;
     CurrentRoomId = roomId;
     FriendsList   = friendsList;
 }
示例#2
0
 private void RenderPage(int pageNum)
 {
     if (_friends == null || _users == null)
     {
         Refresh();
     }
     _root.GetChildren().ForEach(x => x.Dispose());
     _root.Clear();
     for (int i = 0; i <= ROWS; ++i)
     {
         if (pageNum * ROWS + i >= _users.Count)
         {
             break;
         }
         UserDetailMsg user     = _users[pageNum * ROWS + i];
         MenuItemText  username = new MenuItemText($"username{user.Username}");
         username.SetText(user.Username);
         _root.AddChild(0, i, 3, 1, username);
         if (!_friends.Contains(user.UserId))
         {
             MenuItemButton addFriend = new MenuItemButton($"addFriend{user.Username}");
             addFriend.SetText("Add Friend");
             addFriend.Clicked += () =>
             {
                 _api.DefaultApps.Friends.SendFriendRequest(user.UserId).Wait();
                 MenuItemText requestSent = new MenuItemText("requestSent");
                 _root.RemoveChild(addFriend);
                 addFriend.Dispose();
                 _root.AddChild(3, i, 1, 1, requestSent);
             };
             _root.AddChild(3, i, 1, 1, addFriend);
         }
     }
     if (pageNum > 0)
     {
         MenuItemButton prevPage = new MenuItemButton("prevPage");
         prevPage.SetText("<");
         prevPage.Clicked += () =>
         {
             RenderPage(pageNum - 1);
         };
         _root.AddChild(0, ROWS, 1, 1, prevPage);
     }
     if ((pageNum + 1) * ROWS < _users.Count)
     {
         MenuItemButton nextPage = new MenuItemButton("nextPage");
         nextPage.SetText(">");
         nextPage.Clicked += () =>
         {
             RenderPage(pageNum + 1);
         };
         _root.AddChild(3, ROWS, 1, 1, nextPage);
     }
 }
        private MainMessage HandleUserRequest(MainMessage msg)
        {
            _log.Debug("In HandleUserRequest method.");
            try
            {
                // TODO needs enhancemnets
                UserRequestMsg userRequest = msg.UserMngMsg.UserMsg.UserRequestMsg;
                switch (userRequest.UserRequestTypeCase)
                {
                // create new User
                case UserRequestMsg.UserRequestTypeOneofCase.CreateQuery:
                    _log.Debug("Creating new user: "******"User sucessfuly created.");
                    return(new MainMessage {
                        UserMngMsg = userMngMsg
                    });

                // List users (Username LIKE '%msg.username%')
                case UserRequestMsg.UserRequestTypeOneofCase.ListQuery:
                    _log.Debug("Looking for user like: " + userRequest.ListQuery.Username);
                    UserDetailMsg   userDetail = userRequest.ListQuery;
                    UserDetailMsg[] users      = User.List(userDetail)
                                                 .Select(x => new UserDetailMsg {
                        Password = "", UserId = x.Id, Username = x.Username
                    })
                                                 .ToArray();
                    UserListMsg userList = new UserListMsg();
                    userList.Users.AddRange(users);
                    UserMngMsg userMngMsg1 = new UserMngMsg();
                    userMngMsg1.UserMsg = new UserMsg {
                        UserListMsg = userList
                    };
                    _log.Debug($"Found {users.Length} records.");
                    return(new MainMessage {
                        UserMngMsg = userMngMsg1
                    });

                // Change password, where old and new password are in same filed, separated by newline
                case UserRequestMsg.UserRequestTypeOneofCase.UpdateQuery:
                    _log.Debug("Changing password to user: "******"Password sucessfuly changed.");
                    return(ISystemService.CreateOkMessage(msg.MsgId));

                // show user by its Id
                case UserRequestMsg.UserRequestTypeOneofCase.UserIdDetail:
                    _log.Debug($"Looking for user with id {userRequest.UserIdDetail}");
                    User          user2       = User.Get(userRequest.UserIdDetail);
                    UserDetailMsg userDetail1 = new UserDetailMsg();
                    userDetail1.UserId   = user2.Id;
                    userDetail1.Password = "";
                    userDetail1.Username = user2.Username;
                    UserMsg userMsg1 = new UserMsg();
                    userMsg1.UserDetailMsg = userDetail1;
                    return(new MainMessage {
                        UserMngMsg = new UserMngMsg {
                            UserMsg = userMsg1
                        }
                    });

                case UserRequestMsg.UserRequestTypeOneofCase.UserByClientId:
                    _log.Debug($"Looking for user with client id {userRequest.UserByClientId}");
                    if (msg.SenderIdCase != MainMessage.SenderIdOneofCase.ServerId)
                    {
                        return(ISystemService.CreateErrorMessage(msg.MsgId, 0, 0, "Not enough permissions."));
                    }
                    ulong clientId = userRequest.UserByClientId;
                    if (clientId >= (ulong)_clientMachines.Count || _clientMachines[(int)clientId] == null)
                    {
                        return(ISystemService.CreateErrorMessage(msg.MsgId, 0, 0, "Unable to find user with this client ID"));
                    }
                    MainMessage respUserDetail = new MainMessage();
                    respUserDetail.UserMngMsg         = new UserMngMsg();
                    respUserDetail.UserMngMsg.UserMsg = new UserMsg();
                    respUserDetail.UserMngMsg.UserMsg.UserDetailMsg = _clientMachines[(int)clientId].ToMessage();
                    return(respUserDetail);

                default:
                    throw new ErrorMsgException("This message cannot be empty.");
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return(ISystemService.CreateErrorMessage(0, 0, 0, ex.Message));
            }
        }