public static async Task SetUsersInGroup(ulong group_id, ulong[] user_ids, ProgressInterface progi = null) { if (progi != null) { progi.Show(); progi.SetLabel("Gathering Information"); progi.SetMaximum(2); } var group_list = await GetGroupIDs(); if (progi != null) { progi.Step(); } if (!group_list.Contains(group_id)) { throw new Exception("User group " + group_id + "doesn't exist."); } var users_in_group = await GetUsersInGroup(group_id); if (progi != null) { progi.Step(); } var users_to_remove = users_in_group.Where(x => !user_ids.Contains(x)); var users_to_add = user_ids.Where(x => !users_in_group.Contains(x)); if (progi != null) { progi.Reset(); progi.SetMaximum(2); } //remove users if (users_to_remove.Count() > 0) { var sqlconn2 = await ARDBConnectionManager.default_manager.CheckOut(); string val = ""; foreach (var user in users_to_remove) { val += user + ", "; } val = val.Substring(0, val.Length - 2); using (MySqlCommand sqlcmd = new MySqlCommand("delete from `" + group_id + "` where user_id in (" + val + ");", sqlconn2.Connection)) { //sqlcmd.Parameters.AddWithValue("@user_ids", val); await sqlcmd.ExecuteNonQueryAsync(); } ARDBConnectionManager.default_manager.CheckIn(sqlconn2); if (progi != null) { progi.Step(); } } //add users if (users_to_add.Count() > 0) { var sqlconn2 = await ARDBConnectionManager.default_manager.CheckOut(); string val = ""; foreach (var user in users_to_add) { val += "(" + user + "), "; } val = val.Substring(0, val.Length - 2); using (MySqlCommand sqlcmd = new MySqlCommand("insert into `" + group_id + "` (user_id) values " + val + ";", sqlconn2.Connection)) { //sqlcmd.Parameters.AddWithValue("@user_ids", val); await sqlcmd.ExecuteNonQueryAsync(); } ARDBConnectionManager.default_manager.CheckIn(sqlconn2); if (progi != null) { progi.Step(); } } progi.Dispose(); }