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); } } }
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); }
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); }
//-------------------------------------------------------------------------------------------------- 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); } }
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); }
//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); } } } } } } } }