private void _comboAdd_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count < 1 || e.AddedItems[0] is string) { return; } // Get the item to add (one of 'em will always be null, eh, what) Oltp.UserRow user = e.AddedItems[0] as Oltp.UserRow; Oltp.UserGroupRow group = e.AddedItems[0] as Oltp.UserGroupRow; // Add default permissions Oltp.AccountPermissionDataTable pTable = new Oltp.AccountPermissionDataTable(); foreach (Type pageClass in Const.DefaultPermissions) { Oltp.AccountPermissionRow pRow = pTable.NewAccountPermissionRow(); pRow.AccountID = Window.CurrentAccount.ID; pRow.TargetID = user != null ? user.ID : group.ID; pRow.TargetIsGroup = user == null; pRow.PermissionType = pageClass.FullName; pRow.Value = true; pTable.Rows.Add(pRow); } // Save the new permissions Window.AsyncOperation(delegate() { using (OltpProxy proxy = new OltpProxy()) { proxy.Service.AccountPermission_Save(pTable); } }, delegate(Exception ex) { MainWindow.MessageBoxError("Failed to add new permissions.", ex); return(false); }, delegate() { //... now update the GUI // Remove from the items of the combobox (user != null ? _usersToAdd : _groupsToAdd) .Remove(user != null ? user as DataRow : group as DataRow); // Insert in the cirrect new index int newIndex = user != null ? _items.Count : GetFirstUserIndex(); _items.Insert( newIndex, user != null ? user as DataRow : group as DataRow ); (sender as ComboBox).SelectedIndex = 0; _listTable.ListView.SelectedIndex = newIndex; }); }
private void radio_Checked(object sender, RoutedEventArgs e) { if (_openingDialog) { return; } // Check which radio button was pressed bool?state = (sender as RadioButton).Name == "radioAllow" ? (bool?)true : (sender as RadioButton).Name == "radioDeny" ? (bool?)false : (bool?)null; // Retrieve the data of the permission being set ListBoxItem lbItem = VisualTree.GetParent <ListBoxItem>(sender as RadioButton); ApiMenuItem x = (ApiMenuItem)lbItem.Content; string permissionValue = x.Path; if (permissionValue == null) { return; } // Retrieve relevant parameters object[] parameters = PermissionTarget_dialog.Content as object[]; Oltp.UserRow user = parameters[0] as Oltp.UserRow; Oltp.UserGroupRow group = parameters[0] as Oltp.UserGroupRow; Oltp.AccountPermissionDataTable permissionsTable = parameters[1] as Oltp.AccountPermissionDataTable; // Get the row with the last value for this permissions Oltp.AccountPermissionRow perm = permissionsTable.FindByAccountIDTargetIDTargetIsGroupPermissionType( Window.CurrentAccount.ID, user == null ? group.ID : user.ID, user == null, permissionValue); if (state == null && perm != null) { // Moving to unset, so if a permission exists, delete it perm.Delete(); } else if (state != null) { if (perm == null) { // Create a new permission target if none exists perm = permissionsTable.NewAccountPermissionRow(); perm.AccountID = Window.CurrentAccount.ID; perm.TargetID = user != null ? user.ID : group.ID; perm.TargetIsGroup = user == null; perm.PermissionType = permissionValue; perm.Value = true; permissionsTable.Rows.Add(perm); } else if (perm.RowState == DataRowState.Deleted) { // If the target was deleted, restore it perm.RejectChanges(); } // Apply the correct value if (state == true) { perm.Value = true; } else { perm.Value = false; } } }