UsersGroups table added to config DB, User and Group have ManyToMany relation, ver. 2.25.1400
This commit is contained in:
@@ -17,7 +17,7 @@ namespace Users.Forms
|
||||
{
|
||||
NHibernate.ISession session;
|
||||
User user;
|
||||
GID[] displayedGIDs;
|
||||
IList<Group> displayedGroups;
|
||||
|
||||
|
||||
bool[] oriGroupMember; /// index is gid, size is Grp.Count
|
||||
@@ -32,18 +32,18 @@ namespace Users.Forms
|
||||
{
|
||||
InitializeComponent();
|
||||
this.toolTip1.SetToolTip(this.txtName, string.Format(Strings.max_0_alphanum_chars, 20));
|
||||
oriGroupMember = new bool[(displayedGIDs != null) ? displayedGIDs.Length : 0];
|
||||
oriGroupMember = new bool[(displayedGroups != null) ? displayedGroups.Count : 0];
|
||||
okBtn.Enabled = false;
|
||||
}
|
||||
|
||||
public EditSelectedUser(NHibernate.ISession session, User user, GID[] displayedGIDs)
|
||||
public EditSelectedUser(NHibernate.ISession session, User user, IList<Group> displayedGroups)
|
||||
: this()
|
||||
{
|
||||
this.session = session;
|
||||
this.user = user;
|
||||
this.displayedGIDs = displayedGIDs;
|
||||
this.displayedGroups = displayedGroups;
|
||||
|
||||
oriGroupMember = new bool[(displayedGIDs != null) ? displayedGIDs.Length : 0];
|
||||
oriGroupMember = new bool[(displayedGroups != null) ? displayedGroups.Count : 0];
|
||||
}
|
||||
|
||||
private void EditSelectedUser_Load(object sender, EventArgs e)
|
||||
@@ -124,12 +124,12 @@ namespace Users.Forms
|
||||
public void ShowGroups()
|
||||
{
|
||||
checkedListBoxGroups.Items.Clear();
|
||||
for (int i= 0; i < displayedGIDs.Length; i++)
|
||||
for (int i= 0; i < displayedGroups.Count; i++)
|
||||
{
|
||||
GID gid = displayedGIDs[i];
|
||||
Group group = displayedGroups[i];
|
||||
|
||||
bool boolIsMember = oriGroupMember[i] = user.IsMemberOf(gid);
|
||||
checkedListBoxGroups.Items.Add(Group.Gid2Str(gid));
|
||||
bool boolIsMember = oriGroupMember[i] = user.IsMemberOf(group.GID);
|
||||
checkedListBoxGroups.Items.Add(group.Gid2Str());
|
||||
checkedListBoxGroups.SetItemCheckState(i, boolIsMember ? CheckState.Checked : CheckState.Unchecked);
|
||||
}
|
||||
}
|
||||
@@ -189,30 +189,22 @@ namespace Users.Forms
|
||||
user.LastPwChange = DateTime.MinValue;
|
||||
}
|
||||
|
||||
///
|
||||
/// Groups
|
||||
///
|
||||
IList<Group> groups = user.Groups; /// = session.QueryOver<Group>().Where(x => (x.User.Id == user.Id)).List();
|
||||
for (int i = 0; i < displayedGIDs.Length; i++ )
|
||||
for (int i = 0; i < displayedGroups.Count; i++ )
|
||||
{
|
||||
GID gid = displayedGIDs[i];
|
||||
Group group = displayedGroups[i];
|
||||
bool newIsMember = checkedListBoxGroups.GetItemChecked(i);
|
||||
|
||||
if (!newIsMember && oriGroupMember[i])
|
||||
{
|
||||
for (int j = 0; j < user.Groups.Count; j++)
|
||||
{
|
||||
Group grp = user.Groups[j];
|
||||
if (grp.GID == gid)
|
||||
{
|
||||
session.Delete(user.Groups[j]);
|
||||
user.Groups.RemoveAt(j);
|
||||
break;
|
||||
}
|
||||
}
|
||||
user.Groups.Remove(group);
|
||||
}
|
||||
else if (newIsMember && !oriGroupMember[i])
|
||||
{
|
||||
Group newGroup = new Group(gid);
|
||||
user.Groups.Add(newGroup);
|
||||
user.Groups.Add(group);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,39 +26,7 @@ namespace Users.Forms
|
||||
const int NameSurnameColumn = 2;
|
||||
|
||||
|
||||
static GID[] DisplayedGIDs = new GID[]
|
||||
{
|
||||
#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL
|
||||
GID.Testers,
|
||||
GID.TestingSpecialists,
|
||||
GID.HeadOfLab,
|
||||
GID.MaintenanceSpecialists,
|
||||
GID.Metrologists,
|
||||
GID.CalibrationSpecialists,
|
||||
GID.Administrators,
|
||||
GID.TraceabilityManagement,
|
||||
#elif KEMPNO_50 || KRAKOW_50 || TORUN_50 || WARSAW_END
|
||||
GID.Testers,
|
||||
GID.TestingSpecialists,
|
||||
GID.HeadOfLab,
|
||||
GID.MaintenanceSpecialists,
|
||||
GID.Metrologists,
|
||||
GID.CalibrationSpecialists,
|
||||
GID.Administrators,
|
||||
GID.MetrologicalAuthority,
|
||||
GID.WaterMeterAuthority,
|
||||
#else
|
||||
GID.Testers,
|
||||
GID.TestingSpecialists,
|
||||
GID.HeadOfLab,
|
||||
GID.MaintenanceSpecialists,
|
||||
GID.Metrologists,
|
||||
GID.CalibrationSpecialists,
|
||||
GID.Administrators,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
IList<Group> displayedGroups;
|
||||
public string TitleExtension;
|
||||
|
||||
|
||||
@@ -77,6 +45,17 @@ namespace Users.Forms
|
||||
this.session = session;
|
||||
this.showExtensions = showLocalExtensions;
|
||||
if (showLocalExtensions) copyFromRemoteButton.Visible = true;
|
||||
|
||||
try
|
||||
{
|
||||
displayedGroups = session.QueryOver<Group>().List();
|
||||
listOfUsers = session.QueryOver<User>().List();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
if (displayedGroups == null) displayedGroups = new List<Group>();
|
||||
if (listOfUsers == null) listOfUsers = new List<User>();
|
||||
}
|
||||
}
|
||||
|
||||
private void UserManagementDlg_Load(object sender, EventArgs e)
|
||||
@@ -97,47 +76,35 @@ namespace Users.Forms
|
||||
listViewUsers.Columns.Add(Strings.Tag, 110);
|
||||
listViewUsers.Columns.Add(Strings.Groups, 370);
|
||||
|
||||
try
|
||||
{
|
||||
listOfUsers = session.QueryOver<User>().List();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
string msg = exc.Message;
|
||||
}
|
||||
|
||||
ListUsers();
|
||||
}
|
||||
|
||||
public void ListUsers()
|
||||
{
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
|
||||
listViewUsers.Items.Clear();
|
||||
foreach (User u in listOfUsers)
|
||||
{
|
||||
ListViewItem item = new ListViewItem(u.UserName);
|
||||
item.Tag = u;
|
||||
item.SubItems.Add(u.Number.ToString());
|
||||
item.SubItems.Add(u.FullName);
|
||||
item.SubItems.Add(string.IsNullOrEmpty(u.Tag) ? string.Empty : u.Tag);
|
||||
|
||||
/// Show groups of this user
|
||||
string grps = string.Empty;
|
||||
///
|
||||
foreach (var gid in DisplayedGIDs)
|
||||
foreach (var group in displayedGroups)
|
||||
{
|
||||
if (u.IsMemberOf(gid))
|
||||
if (u.IsMemberOf(group.GID))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(grps)) grps += ", ";
|
||||
grps += Group.Gid2Str(gid);
|
||||
grps += group.Gid2Str();
|
||||
}
|
||||
}
|
||||
|
||||
ListViewItem item = new ListViewItem(u.UserName);
|
||||
item.SubItems.Add(u.Number.ToString());
|
||||
item.SubItems.Add(u.FullName);
|
||||
item.SubItems.Add(string.IsNullOrEmpty(u.Tag) ? string.Empty : u.Tag);
|
||||
item.SubItems.Add(grps);
|
||||
item.Tag = u;
|
||||
|
||||
this.listViewUsers.Items.Add(item);
|
||||
}
|
||||
this.listViewUsers.Refresh();
|
||||
|
||||
Cursor.Current = Cursors.Default;
|
||||
}
|
||||
|
||||
private void closeButton_Click(object sender, EventArgs e)
|
||||
@@ -209,7 +176,7 @@ namespace Users.Forms
|
||||
{
|
||||
if (listViewUsers.SelectedItems.Count == 1 && listViewUsers.SelectedItems[0].Tag is User)
|
||||
{
|
||||
new Forms.EditSelectedUser(session, (User)listViewUsers.SelectedItems[0].Tag, DisplayedGIDs).ShowDialog();
|
||||
new Forms.EditSelectedUser(session, (User)listViewUsers.SelectedItems[0].Tag, displayedGroups).ShowDialog();
|
||||
ListUsers();
|
||||
}
|
||||
}
|
||||
@@ -222,7 +189,7 @@ namespace Users.Forms
|
||||
private void addButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
User newUser = new User();
|
||||
if (new Forms.EditSelectedUser(session, newUser, DisplayedGIDs).ShowDialog() == DialogResult.OK)
|
||||
if (new Forms.EditSelectedUser(session, newUser, displayedGroups).ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
listOfUsers.Add(newUser);
|
||||
}
|
||||
@@ -233,10 +200,10 @@ namespace Users.Forms
|
||||
{
|
||||
if (listViewUsers.SelectedItems.Count == 1 && listViewUsers.SelectedItems[0].Tag is User)
|
||||
{
|
||||
User Selecteduser = listViewUsers.SelectedItems[0].Tag as User;
|
||||
session.Delete(Selecteduser);
|
||||
User selecteduser = session.Get<User>((listViewUsers.SelectedItems[0].Tag as User).Id);
|
||||
session.Delete(selecteduser);
|
||||
session.Flush();
|
||||
listOfUsers.Remove(Selecteduser);
|
||||
listOfUsers.RemoveAt(listViewUsers.SelectedIndices[0]);
|
||||
ListUsers();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user