219 lines
7.4 KiB
C#
219 lines
7.4 KiB
C#
///
|
|
/// Copyright (c) 2017-2018 Sensus Slovensko a.s.
|
|
///
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Windows.Forms;
|
|
using NHibernate;
|
|
using Users.Entities;
|
|
using Users.Resources;
|
|
|
|
|
|
namespace Users.Forms
|
|
{
|
|
public partial class UserManagementDlg: Form
|
|
{
|
|
public string TitleExtension;
|
|
|
|
NHibernate.ISession session;
|
|
bool showExtensions;
|
|
IList<User> ListOfUsers;
|
|
int LastSelectedIndex;
|
|
|
|
public UserManagementDlg(bool showLocalExtensions)
|
|
{
|
|
InitializeComponent();
|
|
this.showExtensions = showLocalExtensions;
|
|
if (showLocalExtensions) copyFromRemoteButton.Visible = true;
|
|
}
|
|
|
|
private void EditUsers_Load(object sender, EventArgs e)
|
|
{
|
|
Text = string.Format(string.IsNullOrEmpty(TitleExtension) ? "{0}" : "{0} : {1}", Strings.User_Management, TitleExtension);
|
|
addButton.Text = Strings.AddBtnText;
|
|
editButton.Text = Strings.EditBtnText;
|
|
deleteButton.Text = Strings.RemoveBtnText;
|
|
closeButton.Text = Strings.CloseBtnText;
|
|
|
|
listViewUsers.Columns.Add(Strings.User_name, 120);
|
|
listViewUsers.Columns.Add(Strings.User_code, 80);
|
|
listViewUsers.Columns.Add(Strings.Full_name, 160);
|
|
listViewUsers.Columns.Add(Strings.Groups, 300);
|
|
}
|
|
|
|
private void EditUsers_Activated(object sender, EventArgs e)
|
|
{
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
session = Users.DB.CreateSession();
|
|
ListUsers();
|
|
RefreshButtonStates();
|
|
}
|
|
|
|
public void ListUsers()
|
|
{
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
|
|
ListOfUsers = session.QueryOver<User>()
|
|
.List();
|
|
|
|
listViewUsers.Items.Clear();
|
|
foreach (User u in ListOfUsers)
|
|
{
|
|
string grps = string.Empty;
|
|
///
|
|
foreach (var gid in new Grp.GID[] { Grp.GID.Administrators,
|
|
Grp.GID.HeadOfLab,
|
|
Grp.GID.Metrologists,
|
|
Grp.GID.CalibrationSpecialists,
|
|
Grp.GID.TestingSpecialists,
|
|
Grp.GID.TestingSpecialists,
|
|
Grp.GID.Testers })
|
|
{
|
|
if (u.IsMemberOf(gid))
|
|
{
|
|
if (!string.IsNullOrEmpty(grps)) grps += ", ";
|
|
grps += Grp.Gid2Str(gid);
|
|
}
|
|
}
|
|
|
|
ListViewItem item = new ListViewItem(u.UserName);
|
|
item.SubItems.Add(u.Number.ToString());
|
|
item.SubItems.Add(u.FullName);
|
|
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)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
|
|
private void RefreshButtonStates()
|
|
{
|
|
editButton.Enabled = (listViewUsers.SelectedItems.Count > 0);
|
|
deleteButton.Enabled = (listViewUsers.SelectedItems.Count > 0);
|
|
}
|
|
|
|
private void listViewUsers_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
RefreshButtonStates();
|
|
if (listViewUsers.SelectedItems.Count > 0)
|
|
{
|
|
LastSelectedIndex = listViewUsers.SelectedItems[0].Index;
|
|
}
|
|
else
|
|
{
|
|
LastSelectedIndex = -1;
|
|
}
|
|
}
|
|
|
|
private void editButton_Click(object sender, EventArgs e)
|
|
{
|
|
new Forms.EditSelectedUser(session, (User)listViewUsers.SelectedItems[0].Tag).ShowDialog();
|
|
ListUsers();
|
|
}
|
|
|
|
private void listViewUsers_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
editButton_Click (sender, e);
|
|
}
|
|
|
|
private void addButton_Click(object sender, EventArgs e)
|
|
{
|
|
new Forms.EditSelectedUser(session, new User()).ShowDialog();
|
|
ListUsers();
|
|
}
|
|
|
|
private void deleteButton_Click(object sender, EventArgs e)
|
|
{
|
|
Object Selecteduser = listViewUsers.SelectedItems[0].Tag;
|
|
Users.DB.DeleteObject(session, Selecteduser);
|
|
ListUsers();
|
|
}
|
|
|
|
private void copyFromRemoteButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (GlobalData.RemoteUsersDB == null || string.IsNullOrEmpty(GlobalData.RemoteUsersDB.ConnectionString) ||
|
|
GlobalData.LocalUsersDB == null || string.IsNullOrEmpty(GlobalData.LocalUsersDB.ConnectionString))
|
|
{
|
|
MessageBox.Show(Strings.No_remote_database_of_users,
|
|
Strings.Error,
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Exclamation);
|
|
return;
|
|
}
|
|
|
|
if (MessageBox.Show(Strings.Are_you_sure,
|
|
Strings.Warning,
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Exclamation) != DialogResult.Yes)
|
|
{
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
///
|
|
/// Remote DB session, read remote users
|
|
///
|
|
DB.DbType = GlobalData.RemoteUsersDB.DbType;
|
|
DB.ConnectionString = GlobalData.RemoteUsersDB.ConnectionString;
|
|
ISession session = DB.CreateSession();
|
|
IList<User> remoteUsers = session.QueryOver<User>().List();
|
|
IList<Group> remoteGroups = session.QueryOver<Group>().List();
|
|
|
|
///
|
|
/// Local DB session
|
|
///
|
|
DB.DbType = GlobalData.LocalUsersDB.DbType;
|
|
DB.ConnectionString = GlobalData.LocalUsersDB.ConnectionString;
|
|
session = DB.CreateSession();
|
|
|
|
///
|
|
/// Delete all local users
|
|
///
|
|
IList<User> users = session.QueryOver<User>().List();
|
|
foreach (var user in users) session.Delete(user);
|
|
IList<Group> groups = session.QueryOver<Group>().List();
|
|
foreach (var group in groups) session.Delete(group);
|
|
|
|
///
|
|
/// Save all remote users to the local DB
|
|
///
|
|
IList<User> newUsers = session.QueryOver<User>().List();
|
|
IList<Group> newGroups = session.QueryOver<Group>().List();
|
|
foreach (var user in remoteUsers)
|
|
{
|
|
User newUser = (User)user.Clone();
|
|
newUsers.Add(newUser);
|
|
foreach (var group in user.Groups)
|
|
{
|
|
Group newGroup = new Group(group.Gid, group.Name);
|
|
newUser.AddGroup(newGroup);
|
|
}
|
|
DB.SaveObject(session, newUser);
|
|
}
|
|
session.Flush();
|
|
|
|
MessageBox.Show(string.Format(Strings.N_users_copied, remoteUsers.Count),
|
|
Strings.Confirmation,
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Information);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show(Strings.Copying_remote_users_failed,
|
|
Strings.Confirmation,
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Information);
|
|
}
|
|
}
|
|
}
|
|
}
|