UsersGroups table added to config DB, User and Group have ManyToMany relation, ver. 2.25.1400

This commit is contained in:
Milan Hanajik
2020-01-13 14:24:25 +01:00
parent ab43cabc57
commit 4090bd1618
15 changed files with 130 additions and 133 deletions
+15 -23
View File
@@ -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);
}
}
+28 -61
View File
@@ -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();
}
}