Added logic to prevent the selection of a procedure that is open by a different user

This commit is contained in:
2016-03-04 02:59:46 +00:00
parent 78d9affc00
commit e609d8b974
2 changed files with 45 additions and 35 deletions

View File

@@ -182,8 +182,15 @@ namespace VEPROMS
{
foreach (ProcedureInfo pi in _MyDocVersion.Procedures)
{
OwnerInfo oi = OwnerInfo.GetByItemID(pi.ItemID, CheckOutType.Procedure);
pi.MyDocVersion.DocVersionConfig.SelectedSlave = _MyDocVersion.DocVersionConfig.SelectedSlave;
clbMore.Items.Add(pi.DisplayNumber);
if (oi != null && oi.SessionID != MySessionInfo.SessionID)
{
string prcNumber = pi.DisplayNumber + string.Format(" Checked out to {0}", oi.SessionUserID);
clbMore.Items.Add(prcNumber);
}
else
clbMore.Items.Add(pi.DisplayNumber);
tmpProcedures.Add(pi.DisplayNumber, pi);
}
}
@@ -200,7 +207,9 @@ namespace VEPROMS
private Dictionary<string, ProcedureInfo> tmpProcedures = new Dictionary<string, ProcedureInfo>();
private ProcedureInfo GetProcedureInfoByKey(string key)
{
if (tmpProcedures.ContainsKey(key))
if (key.Contains(" Checked out to "))
key = key.Substring(0, key.IndexOf(" Checked out to "));
if (tmpProcedures.ContainsKey(key))
return tmpProcedures[key];
else
return tmpProcedures[GetDisplayNumberOnly(key)];
@@ -300,6 +309,15 @@ namespace VEPROMS
}
private void clbMore_ItemCheck(object sender, ItemCheckEventArgs e)
{
ProcedureInfo pi = GetProcedureInfoByKey(clbMore.Items[e.Index].ToString());
OwnerInfo oi = OwnerInfo.GetByItemID(pi.ItemID, CheckOutType.Procedure);
if (oi != null && oi.SessionID != MySessionInfo.SessionID)
{
string msg = string.Format("Cannot select this procedure for approval.\n\n It is checked out to {0}", oi.SessionUserID);
MessageBox.Show(msg,pi.DisplayNumber);
e.NewValue = CheckState.Unchecked;
return;
}
if (e.NewValue == CheckState.Checked)
btnOkay.Enabled = true;
else