shouldn’t be bringing up a menu in the Group box unless a user is 1st selected in the Users box.
		
			
				
	
	
		
			533 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			533 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | ||
| using System.Collections.Generic;
 | ||
| using System.ComponentModel;
 | ||
| using System.Data;
 | ||
| using System.Drawing;
 | ||
| using System.Text;
 | ||
| using System.Windows.Forms;
 | ||
| using VEPROMS.CSLA.Library;
 | ||
| using Volian.Base.Library;
 | ||
| using Volian.Controls.Library;
 | ||
| using System.Linq;
 | ||
| 
 | ||
| 
 | ||
| namespace VEPROMS
 | ||
| {
 | ||
| 	//C2024-047 Redesign PROMS Security Dialog
 | ||
| 	public partial class dlgManageSecurity : Form
 | ||
| 	{
 | ||
| 		#region Log4Net
 | ||
| 		private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		#region Main Form / Shared Code
 | ||
| 		private GroupInfoList myGroupInfoList;
 | ||
| 		private UserInfoList myUserInfoList;
 | ||
| 		private List<MembershipInfo> myMembershipInfoList;
 | ||
| 		private Folder myFolder;
 | ||
| 
 | ||
| 		public dlgManageSecurity()
 | ||
| 		{
 | ||
| 			InitializeComponent();
 | ||
| 		}
 | ||
| 		private void dlgManageSecurity_Load(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			//load all folders
 | ||
| 			myFolder = Folder.Get(1);
 | ||
| 
 | ||
| 			//Default to Users Tab
 | ||
| 			tcSecurity.SelectedIndex = 2;
 | ||
| 		}
 | ||
| 
 | ||
| 		//This is called when the Index Changes for main tab Control
 | ||
| 		//it loads info for the current tab
 | ||
| 		private void changedTab(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			LoadRefreshGroupUsers();
 | ||
| 
 | ||
| 			switch (tcSecurity.SelectedIndex)
 | ||
| 			{
 | ||
| 				//Manage Folders
 | ||
| 				case 0:
 | ||
| 					SetupFolderOptions();
 | ||
| 					break;
 | ||
| 				//Manage Groups
 | ||
| 				case 1:
 | ||
| 					SetupGroups();
 | ||
| 					break;
 | ||
| 				//Manage Users (note that this is the default)
 | ||
| 				case 2:
 | ||
| 					SetupUserOptions();
 | ||
| 					break;
 | ||
|                 //Default Options tab
 | ||
| 				case 3:
 | ||
| 					SetupDefaultGroupOptions();
 | ||
| 					break;
 | ||
| 			}
 | ||
| 		}
 | ||
| 		//Loads a refreshed list of Groups and Users
 | ||
| 		private void LoadRefreshGroupUsers()
 | ||
| 		{
 | ||
| 			GroupInfoList.Reset();
 | ||
| 			myGroupInfoList = GroupInfoList.Get();
 | ||
| 			UserInfoList.Reset();
 | ||
| 			myUserInfoList = UserInfoList.Get();
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		#region Manage Folders
 | ||
| 		//Sets up Folders
 | ||
| 		private void SetupFolderOptions()
 | ||
| 		{
 | ||
| 			if (tvFolders.Nodes.Count == 0)
 | ||
| 			{
 | ||
| 				FolderInfo fi = FolderInfo.Get(1);
 | ||
| 				LoadChildFolders(fi, null);
 | ||
| 			}
 | ||
| 		}
 | ||
| 		//loads child folders in tree view
 | ||
| 		private void LoadChildFolders(FolderInfo fi, TreeNode tn)
 | ||
| 		{
 | ||
| 			if (tn == null)
 | ||
| 			{
 | ||
| 				tn = tvFolders.Nodes.Add(fi.Name);
 | ||
| 				tn.Tag = fi;
 | ||
| 			}
 | ||
| 			else
 | ||
| 			{
 | ||
| 				tn = tn.Nodes.Add(fi.Name);
 | ||
| 				tn.Tag = fi;
 | ||
| 			}
 | ||
| 			if (fi.ChildFolderCount > 0)
 | ||
| 			{
 | ||
| 				foreach (FolderInfo fic in fi.SortedChildFolders)
 | ||
| 				{
 | ||
| 					LoadChildFolders(fic, tn);
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 		//Handles Creating a New Group
 | ||
| 		private void createGroupMenuItem(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			try
 | ||
| 			{
 | ||
| 				ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem;
 | ||
| 				TreeNode tn = tvFolders.SelectedNode;
 | ||
| 				FolderInfo fi = tn.Tag as FolderInfo;
 | ||
| 				AddNewGroup(tsddi.Text, fi);
 | ||
| 			}
 | ||
| 			catch (Exception ex)
 | ||
| 			{
 | ||
| 				_MyLog.Warn("createGroupMenuItem", ex);
 | ||
| 			}
 | ||
| 		}
 | ||
| 		private void AddNewGroup(string txt, FolderInfo fi)
 | ||
| 		{
 | ||
| 			txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim();
 | ||
| 			RoleInfoList ril = RoleInfoList.Get();
 | ||
| 			// B2022-080: cannot add a new group in Proms security.  if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator,
 | ||
| 			//   Writer, Reviewer, RO Editor, the Adding of new groups won't work.  Databases should have this loaded by default.
 | ||
| 			//   Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles)
 | ||
| 			if (ril == null || ril.Count < 2)
 | ||
| 			{
 | ||
| 				MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 				return;
 | ||
| 			}
 | ||
| 
 | ||
|             foreach (var ri in ril.Where(ri => ri.Name == txt))
 | ||
|             {
 | ||
|                 string gin = string.Format("{0}s - {1}", ri.Name, fi.Name);
 | ||
|                 if (!myGroupInfoList.Any(gi => gi.GroupName == gin))
 | ||
|                 {
 | ||
|                     Group group = Group.MakeGroup(gin, null, null);
 | ||
|                     Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null);
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             LoadRefreshGroupUsers();
 | ||
| 		}
 | ||
| 		private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
 | ||
| 		{
 | ||
| 			tvFolders.SelectedNode = e.Node;
 | ||
| 		}
 | ||
| 
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		#region Manage Groups
 | ||
| 		//Sets up Group Options
 | ||
| 		private void SetupGroups()
 | ||
| 		{
 | ||
| 			cbGroupSelection.Items.Clear();
 | ||
| 			foreach (GroupInfo gi in myGroupInfoList)
 | ||
| 				cbGroupSelection.Items.Add(gi.GroupName);
 | ||
| 			cbGroupSelection.SelectedIndex = 0;
 | ||
| 		}
 | ||
| 
 | ||
| 		private void cbGroupSelection_SelectedIndexChanged(object sender, EventArgs e) => updateMembershipLists();
 | ||
| 
 | ||
| 		//Updates the lists of members / nonMembers
 | ||
| 		private void updateMembershipLists()
 | ||
| 		{
 | ||
| 			myMembershipInfoList = new List<MembershipInfo>();
 | ||
| 			if (cbGroupSelection.SelectedIndex > -1)
 | ||
| 			{
 | ||
| 				GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex];
 | ||
| 				gi.RefreshGroupMemberships();
 | ||
| 				if (gi.GroupMembershipCount > 0)
 | ||
| 					myMembershipInfoList.AddRange(gi.GroupMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty).OrderBy(x => x.MyUserUserID));
 | ||
| 			}
 | ||
| 			lstMembers.DataSource = myMembershipInfoList;
 | ||
| 			lstMembers.ValueMember = "UID";
 | ||
| 			lstMembers.DisplayMember = "MyUserUserID";
 | ||
| 
 | ||
| 			//set NonMembers to Users that are not in Members
 | ||
| 			lstNonMembers.DataSource = myUserInfoList.Select(x => x.UserID).Except(myMembershipInfoList.Select(x => x.MyUser.UserID)).ToList();
 | ||
| 		}
 | ||
| 
 | ||
| 		//Add a Member to a Group
 | ||
| 		private void addMember_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			int groupIndex = cbGroupSelection.SelectedIndex;
 | ||
| 			string selectedUserID = lstNonMembers.SelectedValue.ToString();
 | ||
| 			int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
 | ||
| 			GroupInfo gi = myGroupInfoList[groupIndex];
 | ||
| 			User selectedUser = User.Get(selectedUID);
 | ||
| 
 | ||
| 			Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
 | ||
| 			updateMembershipLists();
 | ||
| 			lstNonMembers.SelectedIndex = -1;
 | ||
| 
 | ||
| 			int index = lstMembers.FindString(selectedUserID);
 | ||
| 			lstMembers.SetSelected(index, true);
 | ||
| 		}
 | ||
| 
 | ||
| 		//Remove a Member From a Group
 | ||
| 		private void removeMember_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			if (lstMembers.SelectedIndex > -1)
 | ||
| 			{
 | ||
| 				MembershipInfo mi = (MembershipInfo)lstMembers.SelectedItem;
 | ||
| 				string selectedUserID = mi.MyUserUserID;
 | ||
| 				string msg = "Are you sure you want to remove this Group Member?";
 | ||
| 				if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
 | ||
| 				{
 | ||
| 					if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
 | ||
| 					{
 | ||
| 						MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 						return;
 | ||
| 					}
 | ||
| 					Membership m = Membership.Get(mi.UGID);
 | ||
| 					m.EndDate = DateTime.Now.ToShortDateString();
 | ||
| 					m.Save();
 | ||
| 					updateMembershipLists();
 | ||
| 					lstMembers.SelectedIndex = -1;
 | ||
| 					lstNonMembers.SelectedItem = selectedUserID;
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		//Deletes the Currently Selected Group
 | ||
| 		private void deleteGroup_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			if (cbGroupSelection.SelectedIndex < 0)
 | ||
| 			{
 | ||
| 				MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 				return;
 | ||
| 			}
 | ||
| 			GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex];
 | ||
| 			if(myFolder.FolderConfig.Security_Group == gi.GID)
 | ||
| 			{
 | ||
| 				MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 				return;
 | ||
| 			}
 | ||
| 			bool deleteOK = true;
 | ||
|             if (gi.GroupMembershipCount > 0 && gi.GroupMemberships.Any(mi => mi.EndDate == null || mi.EndDate == string.Empty))
 | ||
|                 deleteOK = false;
 | ||
|             if (!deleteOK)
 | ||
| 			{
 | ||
| 				MessageBox.Show("There are still users who are members of this group.  You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 				return;
 | ||
| 			}
 | ||
| 			if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
 | ||
| 			{
 | ||
| 				Group.Delete(gi.GID);
 | ||
| 				LoadRefreshGroupUsers();
 | ||
| 				SetupGroups();
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		#region Manage Users
 | ||
| 
 | ||
| 		//Sets up UserOptions
 | ||
| 		private void SetupUserOptions()
 | ||
| 		{
 | ||
| 			lstUsers.Items.Clear();
 | ||
| 			foreach (UserInfo ui in myUserInfoList)
 | ||
| 				lstUsers.Items.Add(ui.UserID);
 | ||
| 			lstUsers.SelectedIndex = -1;
 | ||
| 			lstGroups.DataSource = null;
 | ||
| 		}
 | ||
| 
 | ||
| 		#region Manage Users - User Options
 | ||
| 
 | ||
| 		//Build Membership list based on selected user
 | ||
| 		private void lstUsers_SelectedIndexChanged(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			myMembershipInfoList = new List<MembershipInfo>();
 | ||
| 			if (lstUsers.SelectedIndex > -1)
 | ||
| 			{
 | ||
| 				UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
 | ||
| 				if (ui.UserMembershipCount > 0)
 | ||
| 				{
 | ||
| 					myMembershipInfoList.AddRange(ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty));
 | ||
| 				}
 | ||
| 			}
 | ||
| 
 | ||
| 			lstGroups.DataSource = myMembershipInfoList;
 | ||
| 			lstGroups.ValueMember = "UGID";
 | ||
| 			lstGroups.DisplayMember = "MyGroupName";
 | ||
| 		}
 | ||
| 
 | ||
| 		//Select User and set up Mouse Click Menus based on
 | ||
| 		//where click in User Box
 | ||
| 		private void lstUsers_MouseUp(object sender, MouseEventArgs e)
 | ||
| 		{
 | ||
| 			if (e.Button == MouseButtons.Right)
 | ||
| 			{
 | ||
| 				int k = lstUsers.IndexFromPoint(e.Location);
 | ||
| 				if (k >= 0)
 | ||
| 				{
 | ||
| 					lstUsers.SelectedIndex = k;
 | ||
| 					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true;
 | ||
| 				}
 | ||
| 				else
 | ||
| 				{
 | ||
| 					addUserToolStripMenuItem.Visible = true;
 | ||
| 					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = false;
 | ||
| 				}
 | ||
| 
 | ||
| 				cmUsers.Show(lstUsers, e.Location);
 | ||
| 			}
 | ||
| 			else if (e.Button == MouseButtons.Left)
 | ||
| 			{
 | ||
| 				int k = lstUsers.IndexFromPoint(e.Location);
 | ||
| 				if (k >= 0)
 | ||
| 				{
 | ||
| 					lstUsers.SelectedIndex = k;
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		//Adds a new User
 | ||
| 		private void addUserToolStripMenuItem_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, "");
 | ||
| 			frmManageUser frm = new frmManageUser("add");
 | ||
| 			frm.MyUser = u;
 | ||
| 			if (frm.ShowDialog(this) == DialogResult.OK)
 | ||
| 			{
 | ||
| 				u = frm.MyUser;
 | ||
| 				u.Save();
 | ||
| 				Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", "");
 | ||
| 
 | ||
| 				//Update the User list to reflect the added user
 | ||
| 				LoadRefreshGroupUsers();
 | ||
| 				SetupUserOptions();
 | ||
| 				lstUsers.SelectedItem = u.UserID;
 | ||
| 			}
 | ||
| 			else
 | ||
| 			{
 | ||
| 				u.Delete();
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		//Edit a User's details
 | ||
| 		private void editUserToolStripMenuItem_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			if (lstUsers.SelectedIndex == -1)
 | ||
| 			{
 | ||
| 				MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 				return;
 | ||
| 			}
 | ||
| 			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
 | ||
| 			using (User u = User.Get(ui.UID))
 | ||
| 			{
 | ||
| 				frmManageUser frm = new frmManageUser("edit");
 | ||
| 				frm.MyUser = u;
 | ||
| 				if (frm.ShowDialog(this) == DialogResult.OK)
 | ||
| 				{
 | ||
| 					frm.MyUser.Save();
 | ||
| 
 | ||
| 					//Update the User list to reflect the edited user
 | ||
| 					//this is done in case the UserID is updated so the list updates to reflect that
 | ||
| 					LoadRefreshGroupUsers();
 | ||
| 					SetupUserOptions();
 | ||
| 					lstUsers.SelectedItem = u.UserID;
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		//Delete a User
 | ||
| 		private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			if (lstUsers.SelectedIndex == -1)
 | ||
| 			{
 | ||
| 				MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 				return;
 | ||
| 			}
 | ||
| 			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
 | ||
| 			SessionInfoList sil = SessionInfoList.Get();
 | ||
| 			foreach (SessionInfo si in sil)
 | ||
| 			{
 | ||
| 				if (si.UserID == ui.UserID && (si.DTSEnd == null))
 | ||
| 				{
 | ||
| 					MessageBox.Show("The user selected has an active session.  You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
| 					return;
 | ||
| 				}
 | ||
| 			}
 | ||
| 			int nummemberships = ui.UserMemberships.Count(mi => mi.EndDate == null || mi.EndDate == string.Empty);
 | ||
| 			string mem_text = nummemberships > 0 ? "\r\nNote that this will remove all memberships that this user has." : "";
 | ||
| 			if (MessageBox.Show($"Are you sure you want to delete this user?{mem_text}", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
 | ||
| 			{
 | ||
| 				foreach (MembershipInfo minfo in ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty))
 | ||
|                 {
 | ||
| 					Membership m = Membership.Get(minfo.UGID);
 | ||
| 					m.EndDate = DateTime.Now.ToShortDateString();
 | ||
| 					m.Save();
 | ||
| 				}
 | ||
| 
 | ||
| 				User.Delete(ui.UID);
 | ||
| 
 | ||
| 				//Update the User list to reflect the deleted user
 | ||
| 				LoadRefreshGroupUsers();
 | ||
| 				SetupUserOptions();
 | ||
| 				lstUsers.SelectedIndex = -1;
 | ||
| 				lstGroups.DataSource = null;
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		#region Manage Users - Member Options
 | ||
| 
 | ||
| 		//Adds Context Menu for when a Group is selected
 | ||
| 		private void lstGroups_MouseUp(object sender, MouseEventArgs e)
 | ||
| 		{
 | ||
| 			cmMembers.Items.Clear();
 | ||
| 			lstGroups.SelectedIndex = -1;
 | ||
| 
 | ||
| 			//shouldn<64>t be bringing up a menu in the Group box unless a user is 1st selected in the Users box.
 | ||
| 			if (e.Button == MouseButtons.Right && lstUsers.SelectedIndex > -1)
 | ||
| 			{
 | ||
| 				int k = lstGroups.IndexFromPoint(e.Location);
 | ||
| 				if (k >= 0)
 | ||
| 				{
 | ||
| 					lstGroups.SelectedIndex = k;
 | ||
| 					cmMembers.Items.Add(this.removeMemberToolStripMenuItem);
 | ||
| 
 | ||
| 				}
 | ||
| 
 | ||
| 				var groupsCanAddTo = myGroupInfoList.Select(x => new { x.GroupName, x.GID }).Except(myMembershipInfoList.Select(x => new { x.MyGroup.GroupName, x.GID }));
 | ||
| 				foreach (var possiblegroup in groupsCanAddTo)
 | ||
| 				{
 | ||
| 					ToolStripMenuItemwithValue AddToMenuItem = new ToolStripMenuItemwithValue($"Add as Member to Group: {possiblegroup.GroupName}", possiblegroup.GID);
 | ||
| 					AddToMenuItem.Click += addMemberToolStripMenuItem_Click;
 | ||
| 					cmMembers.Items.Add(AddToMenuItem);
 | ||
| 				}
 | ||
| 
 | ||
| 				cmMembers.Show(lstGroups, e.Location);
 | ||
| 
 | ||
| 			}
 | ||
| 			else if (e.Button == MouseButtons.Left)
 | ||
| 			{
 | ||
| 				int k = lstGroups.IndexFromPoint(e.Location);
 | ||
| 				if (k >= 0)
 | ||
| 				{
 | ||
| 					lstGroups.SelectedIndex = k;
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		//Adds a User to a Group
 | ||
| 		private void addMemberToolStripMenuItem_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			ToolStripMenuItemwithValue item = (ToolStripMenuItemwithValue)sender;
 | ||
| 			int userIndex = lstUsers.SelectedIndex;
 | ||
| 			UserInfo ui = myUserInfoList[userIndex];
 | ||
| 
 | ||
| 			Membership.MakeMembership(User.Get(ui.UID), Group.Get((int) item.Value), null, "");
 | ||
| 
 | ||
| 			//Update the Group list to reflect the added group
 | ||
| 			LoadRefreshGroupUsers();
 | ||
| 			lstUsers_SelectedIndexChanged(sender, e);
 | ||
| 		}
 | ||
| 
 | ||
| 		//Removes a User from a Group
 | ||
| 		private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			MembershipInfo mi = (MembershipInfo)lstGroups.SelectedItem;
 | ||
| 			string msg = "Are you sure you want to remove this Group Member?";
 | ||
| 			if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
 | ||
| 			{
 | ||
|                 if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
 | ||
|                 {
 | ||
|                     MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | ||
|                     return;
 | ||
|                 }
 | ||
|                 Membership m = Membership.Get(mi.UGID);
 | ||
| 				m.EndDate = DateTime.Now.ToShortDateString();
 | ||
| 				m.Save();
 | ||
| 
 | ||
| 				//Update the Group list to reflect the removed group
 | ||
| 				LoadRefreshGroupUsers();
 | ||
| 				lstUsers_SelectedIndexChanged(sender, e);
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		#region Default Options
 | ||
| 		//Sets up Default Group options for Default Tab
 | ||
| 		private void SetupDefaultGroupOptions()
 | ||
| 		{
 | ||
| 			pnlGroups.Controls.Clear();
 | ||
| 			foreach (GroupInfo gi in myGroupInfoList)
 | ||
| 			{
 | ||
| 				RadioButton rb = new RadioButton();
 | ||
| 				rb.Text = gi.GroupName;
 | ||
| 				rb.Parent = pnlGroups;
 | ||
| 				rb.Dock = DockStyle.Top;
 | ||
| 				rb.Tag = gi;
 | ||
| 				rb.CheckedChanged -= new EventHandler(rb_CheckedChanged);
 | ||
| 				rb.CheckedChanged += new EventHandler(rb_CheckedChanged);
 | ||
| 				pnlGroups.Controls.Add(rb);
 | ||
| 				rb.BringToFront();
 | ||
| 				if (myFolder.FolderConfig.Security_Group == 0 && gi.GID == 1)
 | ||
| 				{
 | ||
| 					myFolder.FolderConfig.Security_Group = gi.GID;
 | ||
| 					rb.Checked = true;
 | ||
| 					myFolder.Save();
 | ||
| 				}
 | ||
| 				else if (myFolder.FolderConfig.Security_Group == gi.GID)
 | ||
| 				{
 | ||
| 					rb.Checked = true;
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 		//Handles changing the default group
 | ||
| 		private void rb_CheckedChanged(object sender, EventArgs e)
 | ||
| 		{
 | ||
| 			RadioButton rb = sender as RadioButton;
 | ||
| 			GroupInfo gi = rb.Tag as GroupInfo;
 | ||
| 			label8.Text = gi.GroupAssignments[0].MyRole.Title + " for " + gi.GroupAssignments[0].MyFolder.Name;
 | ||
| 			myFolder.FolderConfig.Security_Group = gi.GID;
 | ||
| 			myFolder.Save();
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 
 | ||
| 	}
 | ||
| } |