200 lines
5.1 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;
namespace WinApp
{
public partial class frmGroups : Form
{
public frmGroups(int gid)
{
InitializeComponent();
_gid = gid;
}
private int _gid;
private Group _group;
private void frmGroup_Load(object sender, EventArgs e)
{
groupInfoListBindingSource.DataSource = GroupInfoList.Get();
userInfoListBindingSource.DataSource = UserInfoList.Get();
lbGroups.SelectedValue = _gid;
SetupDetail();
SetupButtons();
}
private void BeforeFormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = (SaveAsNeeded() == DialogResult.Cancel);
}
private DialogResult SaveAsNeeded()
{
if (_group != null && _group.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 (lbGroups.SelectedValue != null)
{
int gid = (int)lbGroups.SelectedValue;
if (_group == null || _group.GID != gid)
{
if (SaveAsNeeded() != DialogResult.Cancel)
{
_group = Group.Get(gid);
groupBindingSource.DataSource = _group;
groupMembershipsBindingSource.DataSource = _group.GroupMemberships;
groupAssignmentsBindingSource.DataSource = _group.GroupAssignments;
}
}
}
}
private void lbGroup_SelectedValueChanged(object sender, EventArgs e)
{
SetupDetail();
}
private void SetupButtons()
{
if (_group != null)
{
btnSave.Enabled = _group.IsSavable;
btnCancel.Enabled = _group.IsDirty;
btnNew.Enabled = _group.IsValid;
}
else
{
btnSave.Enabled = false;
btnCancel.Enabled = false;
btnNew.Enabled = true;
}
}
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()
{
_group.CancelEdit();
_group.BeginEdit();
}
private void Save()
{
groupBindingSource.RaiseListChangedEvents = false;
groupMembershipsBindingSource.RaiseListChangedEvents = false;
groupBindingSource.EndEdit();
groupMembershipsBindingSource.EndEdit();
try
{
Group temp = _group.Clone();
_group = temp.Save();
_group.BeginEdit();
groupBindingSource.DataSource = null;
groupMembershipsBindingSource.DataSource = null;
int gid = _group.GID;
groupInfoListBindingSource.DataSource = GroupInfoList.Get();
lbGroups.SelectedValue = gid;
groupBindingSource.DataSource = _group;
groupMembershipsBindingSource.DataSource = _group.GroupMemberships;
}
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
{
groupBindingSource.RaiseListChangedEvents = true;
groupMembershipsBindingSource.RaiseListChangedEvents = true;
groupBindingSource.ResetBindings(false);
groupMembershipsBindingSource.ResetBindings(false);
}
SetupButtons();
}
public void New()
{
if (SaveAsNeeded() != DialogResult.Cancel)
{
_group = Group.New();
groupBindingSource.DataSource = _group;
groupMembershipsBindingSource.DataSource = _group.GroupMemberships;
}
}
private void btnNewGA_Click(object sender, EventArgs e)
{
using (frmUserSelect f = new frmUserSelect())
{
f.ShowDialog();
if (f.DialogResult == DialogResult.OK)
{
_group.GroupMemberships.Add(User.Get(f.UID)); // KBR using?
SetupButtons();
}
}
}
private void btnRemoveGA_Click(object sender, EventArgs e)
{
if (this.groupMembershipsDataGridView.SelectedRows.Count > 0)
{
int uid = int.Parse(
this.groupMembershipsDataGridView.SelectedRows[0].Cells[0].Value.ToString());
MessageBox.Show("Conversion error");
//TODO KBR: _group.GroupMemberships.Remove(uid);
}
}
private void btnRemoveAssign_Click(object sender, EventArgs e)
{
if (this.groupAssignmentsDataGridView.SelectedRows.Count > 0)
{
int rid = int.Parse(
this.groupAssignmentsDataGridView.SelectedRows[0].Cells[1].Value.ToString());
int folderid = int.Parse(
this.groupAssignmentsDataGridView.SelectedRows[0].Cells[2].Value.ToString());
MessageBox.Show("Conversion error");
//TODO KBR: _group.GroupAssignments.Remove(folderid, rid);
}
}
private void btnNewAssign_Click(object sender, EventArgs e)
{
using (frmAssignmentSelect f = new frmAssignmentSelect(_group))
{
f.ShowDialog();
if (f.DialogResult == DialogResult.OK)
{
//TODO: Do I need to refresh Assignments?
}
}
}
}
}