216 lines
5.5 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;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace WinApp
{
public partial class frmUser : Form
{
public frmUser()
{
InitializeComponent();
}
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private void BeforeFormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = (SaveAsNeeded() == DialogResult.Cancel);
}
private User _user;
private GroupInfoList _gil=GroupInfoList.Get();
private void frmUser_Load(object sender, EventArgs e)
{
userInfoListBindingSource.DataSource = UserInfoList.Get();
groupInfoListBindingSource.DataSource = _gil;
SetupDetail();
SetupButtons();
log.Info("This is a test");
//frmMembership f = new frmMembership();
//f.Show();
//f.TopMost = true;
}
private DialogResult SaveAsNeeded()
{
if (_user != null && _user.IsSavable)
{
DialogResult dr = MessageBox.Show("Do you want to save changes", "Save Changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes) Save();
if (dr == DialogResult.No) Cancel();
// TODO: Need a Cancel
return dr;
}
return DialogResult.Yes;
}
private void SetupDetail()
{
if (lbUsers.SelectedIndex != -1)
{
int uid = (int)lbUsers.SelectedValue;
if (_user == null || _user.UID != uid)
{
if (SaveAsNeeded() != DialogResult.Cancel)
{
_user = User.Get(uid);
userBindingSource.DataSource = _user;
userMembershipsBindingSource.DataSource = _user.UserMemberships;
}
}
}
}
private void lbUser_SelectedValueChanged(object sender, EventArgs e)
{
SetupDetail();
}
private void SetupButtons()
{
if (_user != null)
{
btnSave.Enabled = _user.IsSavable;
btnCancel.Enabled = _user.IsDirty;
btnNew.Enabled = _user.IsValid;
btnGroups.Enabled = this.userMembershipsDataGridView.SelectedRows.Count > 0;
btnNewGA.Enabled = _gil.Count > this.userMembershipsDataGridView.Rows.Count;
btnRemoveGA.Enabled = this.userMembershipsDataGridView.SelectedRows.Count > 0;
}
else
{
btnSave.Enabled = false;
btnCancel.Enabled = false;
btnNew.Enabled = true;
btnGroups.Enabled = false;
btnNewGA.Enabled = false;
btnRemoveGA.Enabled = false;
}
}
private void CurrentItemChanged(object sender, EventArgs e)
{
SetupButtons();
}
private void btnCancel_Click(object sender, EventArgs e)
{
Cancel();
}
private void btnSave_Click(object sender, EventArgs e)
{
Save();
}
private void btnNew_Click(object sender, EventArgs e)
{
New();
}
private void Cancel()
{
_user.CancelEdit();
//if (_user.IsDirty)
//{
// foreach (UserMembership m in _user.UserMemberships)
// if(m.IsDirty)
// m.CancelEdit();
//}
_user.BeginEdit();
}
private void Save()
{
userBindingSource.RaiseListChangedEvents = false;
userMembershipsBindingSource.RaiseListChangedEvents = false;
userBindingSource.EndEdit();
userMembershipsBindingSource.EndEdit();
try
{
User temp = _user.Clone();
_user = temp.Save();
_user.BeginEdit();
userBindingSource.DataSource = null;
userMembershipsBindingSource.DataSource = null;
int uid = _user.UID;
userInfoListBindingSource.DataSource = UserInfoList.Get();
if (lbUsers.SelectedIndex == -1)
lbUsers.SelectedValue = uid;
userBindingSource.DataSource = _user;
userMembershipsBindingSource.DataSource = _user.UserMemberships;
}
catch (Csla.DataPortalException ex)
{
MessageBox.Show(ex.BusinessException.ToString(),
"Error saving", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error saving",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
userBindingSource.RaiseListChangedEvents = true;
userMembershipsBindingSource.RaiseListChangedEvents = true;
userBindingSource.ResetBindings(false);
userMembershipsBindingSource.ResetBindings(false);
}
SetupButtons();
}
public void New()
{
if (SaveAsNeeded() != DialogResult.Cancel)
{
_user = User.New();
userBindingSource.DataSource = _user;
userMembershipsBindingSource.DataSource = _user.UserMemberships;
lbUsers.SelectedIndex = -1;
}
}
private void btnGroups_Click(object sender, EventArgs e)
{
frmGroups fg = new frmGroups(GetGID());
fg.ShowDialog();
}
private void btnNewGA_Click(object sender, EventArgs e)
{
using (frmGroupSelect f = new frmGroupSelect())
{
f.ShowDialog();
if (f.DialogResult == DialogResult.OK)
{
_user.UserMemberships.Add(Group.Get(f.GID)); // TODO KBR - using
SetupButtons();
}
}
}
private int GetGID()
{
return int.Parse(userMembershipsDataGridView.SelectedRows[0].Cells[0].Value.ToString());
}
private void btnRemoveGA_Click(object sender, EventArgs e)
{
if (this.userMembershipsDataGridView.SelectedRows.Count > 0)
{
MessageBox.Show("Conversion Error");
//TODO: KBR _user.UserMemberships.Remove(GetGID());
}
}
private void userMembershipsDataGridView_SelectionChanged(object sender, EventArgs e)
{
SetupButtons();
}
private void btnStack_Click(object sender, EventArgs e)
{
_user.BeginEdit();
}
private void btnPop_Click(object sender, EventArgs e)
{
_user.CancelEdit();
}
}
}