コード例 #1
0
        public async Task RemoveFromGroup(string userID, string removeUserID, string groupID)
        {
            await ReconnectUser(userID);

            //Find group from group list or return Null to optimise my code instead of Check if group exist then Find it afterward from Group list.
            var foundGroup = program.users.Groups.Exists(g => g.GroupID == groupID) ? program.users.Groups.Find(g => g.GroupID == groupID) : null;

            //Check if both group and user exist in specific gorup
            if (foundGroup != null && foundGroup.Users.Exists(u => u.UserID == removeUserID))
            {
                //Find user data from user list
                var foundUser = program.users.Users.Find(u => u.UserID == removeUserID);
                //Remove user from group in group list and it's connection to group to ensure the user's  non access to group.
                program.users.Groups.Find(g => g.GroupID == groupID).Users.RemoveAll(u => u.UserID == foundUser.UserID);
                var user = program.users.Users.Find(u => u.UserID == userID);

                DbGroups db = new DbGroups();
                await db.RemoveUserFromGroup(foundUser.UserID, foundGroup.GroupID);

                await Clients.Group(groupID).SendAsync("RemovedUserCheck" + groupID, foundUser.UserID, foundUser.Name, user.Name);

                //remove user connection
                foreach (string item in foundUser.ConnectionID)
                {
                    await Groups.RemoveFromGroupAsync(item, foundGroup.GroupID);
                }
            }
        }
コード例 #2
0
ファイル: ObGroup.cs プロジェクト: dawnzhu/NParsing
 public override IObGroup AddGroupBy(Factory.ObProperty obProperty)
 {
     //_Key += "_" + obProperty.TableName + "_" + obProperty.ColumnName;
     _Key += "_" + obProperty.Key;
     DbGroups.Add(new DbGroup(obProperty.TableName, obProperty.ColumnName, obProperty.PropertyName));
     ObGroupProperties.Add(obProperty);
     return(this);
 }
コード例 #3
0
ファイル: ObGroup.cs プロジェクト: dawnzhu/NParsing
 public ObGroup(/*string tableName, string columnName, string propertyName*/ Factory.ObProperty obProperty)
 {
     //_Key = "GroupBy_" + obProperty.TableName + "_" + obProperty.ColumnName;
     _Key = "GroupBy_" + obProperty.Key;
     DbGroups.Add(new DbGroup(obProperty.TableName, obProperty.ColumnName, obProperty.PropertyName));
     //ObProperties.Add(new ObProperty(modelType, columnName));
     ObGroupProperties.Add(obProperty);
 }
コード例 #4
0
        //-------------------------------------------------------------------------------------------------- Single Chat Methods

        /* public async Task SendMessageClient(string user, string message, string toUserID)
         * {
         *   if (users.Exists(user1 => user1.UserID == toUserID))
         *   {
         *       UserModel userExist = users.Find(user1 => user1.UserID == toUserID);
         *
         *       await Clients.Client(userExist.ConnectionID).SendAsync("ReceiveMessage", user, message);
         *
         *   }
         *   else
         *   {
         *
         *   }
         * }
         */
        //-------------------------------------------------------------------------------------------------- Group Methods


        public async Task ViewAllUsersInGroup(string userID, string groupID)
        {
            await ReconnectUser(userID);

            //Checking if group exist and if the client is inside the group for security measure against unautherorisized users
            if (program.users.Groups.Find(g => g.GroupID == groupID).Users.Exists(u => u.UserID == userID))
            {
                DbGroups            db    = new DbGroups();
                List <FriendsModel> newls = new List <FriendsModel>();
                var ls = await db.GetAllusersInGroup(groupID);

                newls = ls;
                await Clients.Client(Context.ConnectionId).SendAsync("ReceiveAllUsersInGroup", newls);
            }
        }
コード例 #5
0
ファイル: ObGroup.cs プロジェクト: dawnzhu/NParsing
 public override IObGroup AddGroupBy(params Factory.ObProperty[] obPropertys)
 {
     foreach (var obProperty in obPropertys)
     {
         if (_Key.Length > 0)
         {
             _Key += "_";
         }
         //_Key += obProperty.TableName + "_" + obProperty.ColumnName;
         _Key += obProperty.Key;
         DbGroups.Add(new DbGroup(obProperty.TableName, obProperty.ColumnName, obProperty.PropertyName));
         ObGroupProperties.Add(obProperty);
     }
     return(this);
 }
コード例 #6
0
        //Add player to group and/or create group and put yourself into the group
        public async Task AddToGroup(string groupName, string userID, string groupID = null, string friendID = null)
        {
            await ReconnectUser(userID);

            DbGroups db = new DbGroups();

            //Check if user is logged in
            if (program.users.Users.Exists(u => u.IsConnected == true && u.UserID == userID))
            {
                //Friend or Client
                if (friendID == null)
                {
                    var user = program.users.Users.Find(u => u.UserID == userID);
                    //If you're searching for a group
                    if (groupID != null)
                    {
                        //user doesn't exist in group list

                        if (!program.users.Groups.Exists(g => g.GroupID == groupID))
                        {
                            //add user to group list
                            var group = program.users.Groups.Find(g => g.GroupID == groupID);
                            if (group.Users.Exists(u => u.UserID == userID))
                            {
                                program.users.Groups.Find(g => g.GroupID == groupID).Users.Add(user);
                            }
                        }
                    }
                    else
                    {
                        int newGroupID = await db.CreateGroup(groupName);

                        program.users.Groups.Add(new GroupModel()
                        {
                            GroupName = groupName,
                            GroupID   = newGroupID.ToString(),
                            Users     = new List <UserModel>()
                        });
                        groupID = newGroupID.ToString();
                        program.users.Groups.Find(g => g.GroupID == groupID).Users.Add(user);
                    }
                    await db.AddUserToGroup(userID, groupID);

                    await Groups.AddToGroupAsync(Context.ConnectionId, groupID);
                }
                else
                {
                    //check if user exist
                    if (program.users.Users.Exists(u => u.UserID == friendID))
                    {
                        var friendUser = program.users.Users.Find(u => u.UserID == friendID);

                        //Check if group exist
                        if (program.users.Groups.Exists(g => g.GroupID == groupID))
                        {
                            //check if user doesn't exist in group


                            var group = program.users.Groups.Find(g => g.GroupID == groupID);
                            if (!group.Users.Exists(u => u.UserID == friendID))
                            {
                                //Add user to group
                                program.users.Groups.Find(g => g.GroupID == groupID).Users.Add(friendUser);
                                await db.AddUserToGroup(friendID, groupID);

                                if (friendUser.IsConnected)
                                {
                                    foreach (string item in friendUser.ConnectionID)
                                    {
                                        await Groups.AddToGroupAsync(item, groupID);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }