using System; using System.Collections.Generic; using System.Windows.Forms; using NHibernate; using TBF.Entities; namespace TBF.Forms { public partial class EditUsers: Form { NHibernate.ISession session; IList ListOfUsers; int LastSelectedIndex; public EditUsers() { InitializeComponent(); } private void EditUsers_Activated(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; session = FluentCommon.CreateSession(Database.Users); ListUsers(); RefreshButtonStates(); } public void ListUsers() { Cursor.Current = Cursors.WaitCursor; if (User.CurrentUser.IsMemberOf(Grp.GID.Administrators) || User.CurrentUser.IsMemberOf(Grp.GID.HeadOfLab)) { /// Admin and HeadOfLab can edit all users ListOfUsers = session.CreateQuery("FROM User") .List(); } else { /// user can only edit their own data ListOfUsers = session.CreateQuery("FROM User WHERE id= :CurrentUserId") .SetParameter("CurrentUserId", User.CurrentUser.Id) .List(); } listViewUsers.Items.Clear(); foreach (var person in ListOfUsers) { ListViewItem item = new ListViewItem(person.Name); item.SubItems.Add(person.Id.ToString()); item.Tag = person; this.listViewUsers.Items.Add(item); } this.listViewUsers.Refresh(); Cursor.Current = Cursors.Default; } private void btnOk_Click(object sender, EventArgs e) { this.Close(); } private void RefreshButtonStates() { btnEdit.Enabled = (listViewUsers.SelectedItems.Count > 0); btnDelete.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 btnEdit_Click(object sender, EventArgs e) { Forms.EditSelectedUser dlg = new Forms.EditSelectedUser(); dlg.CurrentEditUser = (User)listViewUsers.SelectedItems[0].Tag; dlg.Session = session; dlg.ShowDialog(); ListUsers(); } private void listViewUsers_DoubleClick(object sender, EventArgs e) { btnEdit_Click (sender, e); } private void btnAdd_Click(object sender, EventArgs e) { Forms.EditSelectedUser dlg; dlg = new Forms.EditSelectedUser(); dlg.Session = session; dlg.CurrentEditUser = new Entities.User(); dlg.ShowDialog(); ListUsers(); } private void btnDelete_Click(object sender, EventArgs e) { Object Selecteduser = listViewUsers.SelectedItems[0].Tag; FluentCommon.DeleteFromDb(session, Selecteduser); ListUsers(); } } }