C2018-020: Import of procedure when Overwriting has confusing transition list dialog and does not import

This commit is contained in:
Kathy Ruffing 2018-06-29 13:08:19 +00:00
parent 9b8dc9fe05
commit 8b431d2fe4

View File

@ -436,7 +436,13 @@ namespace VEPROMS
DialogResult dr = MessageBox.Show(this, msg, "Overwrite Existing Procedure", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop);
if (dr == DialogResult.Yes)
{
ImportProcedureOverwrite(xd, pi);
bool success = ImportProcedureOverwrite(xd, pi); // C2018-020: check for successful Import
if (!success)
{
canceledPressed = true;
resolvedProcNum = false;
break;
}
isImported = true;
break;
}
@ -549,7 +555,7 @@ namespace VEPROMS
FixFloatingFoldouts();
File.Delete(fn);
}
private void ImportProcedureOverwrite(XmlDocument xd, ProcedureInfo pi)
private bool ImportProcedureOverwrite(XmlDocument xd, ProcedureInfo pi)
{
floatFoldout = new Dictionary<int, int>();
oldFormat = new Dictionary<int, string>();
@ -581,16 +587,30 @@ namespace VEPROMS
}
catch(Exception ex)
{
ExternalTransitionItem = pi.HandleSqlExceptionOnDelete(ex);
// C2018-020: cannot overwrite the procedure because transitions point to this. Show dialog listing transitions and then
// return false to flag that import was not successful.
if (ex.Message.Contains("has External Transitions"))
{
using (TransitionInfoList exTrans = TransitionInfoList.GetExternalTransitionsToChildren(pi.ItemID))
{
DialogResult ans = MessageBox.Show("Transitions exist to this procedure and cannot be adjusted automatically." +
"\r\nSteps with Problem Transitions:" +
exTrans.Summarize(),
"Cannot Overwrite procedure", MessageBoxButtons.OK, MessageBoxIcon.Question);
}
}
else
MessageBox.Show(ex.Message, "SQL Exception", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
File.Delete(fn);
TurnChangeManagerOff.Execute(); // Assure that the Change Manager is off
return;
return false;
}
//add imported procedure
_MyNewProcedure = AddProcedure(xd.DocumentElement, MyDocVersion, lastProcedure);
//update transitions
AddTransitions(PendingTransitions);
FixFloatingFoldouts();
return true;
}
private void LoadImportDataDocument()
{