378 lines
9.9 KiB
Plaintext
378 lines
9.9 KiB
Plaintext
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using VEPROMS.CSLA.Library;
|
|
using System.IO;
|
|
|
|
namespace jcbTestAudits
|
|
{
|
|
public delegate void ItemRestoredHandler(ItemInfo restoredItemInfo);
|
|
|
|
public partial class DisplayHistory : UserControl
|
|
{
|
|
public event ItemRestoredHandler ItemRestored;
|
|
private void OnItemRestored(ItemInfo restoredItemInfo)
|
|
{
|
|
if (ItemRestored != null) ItemRestored(restoredItemInfo);
|
|
}
|
|
|
|
public DisplayHistory()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
private ItemInfo _MyItemInfo;
|
|
|
|
public ItemInfo MyItemInfo
|
|
{
|
|
get { return _MyItemInfo; }
|
|
set
|
|
{
|
|
_MyItemInfo = value;
|
|
UpdateHistory();
|
|
}
|
|
}
|
|
|
|
private bool _AnnotationOnly = false;
|
|
|
|
public bool AnnotationOnly
|
|
{
|
|
get { return _AnnotationOnly; }
|
|
set
|
|
{
|
|
_AnnotationOnly = value;
|
|
UpdateHistory();
|
|
}
|
|
}
|
|
|
|
private void UpdateHistory()
|
|
{
|
|
#region setup
|
|
btnRestore.Enabled = false;
|
|
myRTB.Clear();
|
|
myVFG.Clear();
|
|
tvAudits.Nodes.Clear();
|
|
if (MyItemInfo == null) return;
|
|
MyItemInfo.RefreshItemAnnotations();
|
|
#endregion
|
|
//if (AnnotationOnly)
|
|
//{
|
|
#region annotation deleted
|
|
//annotation deleted by itemid
|
|
TreeNode annotationDeleted = null;
|
|
AnnotationAuditInfoList aail = AnnotationAuditInfoList.GetByItemID(MyItemInfo.ItemID);
|
|
foreach (AnnotationAuditInfo aai in aail)
|
|
{
|
|
TreeNode tn = null;
|
|
if (aai.DeleteStatus > 0)
|
|
{
|
|
if (annotationDeleted == null)
|
|
annotationDeleted = tvAudits.Nodes.Add("Deleted Annotations");
|
|
if (tn == null)
|
|
{
|
|
AnnotationTypeInfo ati = AnnotationTypeInfo.Get(aai.TypeID);
|
|
tn = annotationDeleted.Nodes.Add(ati.Name);
|
|
}
|
|
TreeNode cn = tn.Nodes.Add(aai.ToString());
|
|
cn.Tag = aai;
|
|
}
|
|
}
|
|
//end annotation deleted
|
|
#endregion
|
|
#region annotation changes
|
|
//annotation change by annotationid
|
|
TreeNode annotationHistory = null;
|
|
if (MyItemInfo.ItemAnnotationCount > 0)
|
|
{
|
|
foreach (AnnotationInfo ai in MyItemInfo.ItemAnnotations)
|
|
{
|
|
TreeNode tn = null;
|
|
aail = AnnotationAuditInfoList.GetByAnnotationID(ai.AnnotationID);
|
|
foreach (AnnotationAuditInfo aai in aail)
|
|
{
|
|
if (aai.DTS != ai.DTS)
|
|
{
|
|
if (annotationHistory == null)
|
|
annotationHistory = tvAudits.Nodes.Add("Annotation History");
|
|
if (tn == null)
|
|
tn = annotationHistory.Nodes.Add(string.Format("{0} - {1}", ai.MyAnnotationType.Name, ai.SearchText));
|
|
TreeNode cn = tn.Nodes.Add(aai.ToString());
|
|
cn.Tag = aai;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//end annotation change
|
|
#endregion
|
|
// return;
|
|
//}
|
|
#region content changes
|
|
//content changes
|
|
TreeNode contentHistory = null;
|
|
if (MyItemInfo == null) return;
|
|
ContentAuditInfoList cail = ContentAuditInfoList.Get(MyItemInfo.ContentID);
|
|
ContentInfo ci = ContentInfo.Get(MyItemInfo.ContentID);
|
|
foreach (ContentAuditInfo cai in cail)
|
|
{
|
|
if (cai.DeleteStatus == 0)
|
|
{
|
|
if (cai.DTS != ci.DTS)
|
|
{
|
|
if (contentHistory == null)
|
|
contentHistory = tvAudits.Nodes.Add("Content History");
|
|
TreeNode tn = contentHistory.Nodes.Add(cai.ToString());
|
|
tn.Tag = cai;
|
|
}
|
|
}
|
|
}
|
|
//end content changes
|
|
#endregion
|
|
#region items
|
|
TreeNode previousItem = null;
|
|
TreeNode nextItem = null;
|
|
TreeNode procedurePart = null;
|
|
TreeNode sectionPart = null;
|
|
TreeNode cautionPart = null;
|
|
TreeNode notePart = null;
|
|
TreeNode rnoPart = null;
|
|
TreeNode stepPart = null;
|
|
TreeNode tablePart = null;
|
|
#endregion
|
|
ItemAuditInfoList iail = ItemAuditInfoList.Get(MyItemInfo.ItemID);
|
|
foreach (ItemAuditInfo iai in iail)
|
|
{
|
|
switch (iai.Level)
|
|
{
|
|
#region previous item
|
|
case 0: //previous item
|
|
{
|
|
if (previousItem == null)
|
|
previousItem = tvAudits.Nodes.Add("Previous Item");
|
|
TreeNode tn = previousItem.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
#region next item
|
|
case 1: //next item
|
|
{
|
|
if (nextItem == null)
|
|
nextItem = tvAudits.Nodes.Add("Next Item");
|
|
TreeNode tn = nextItem.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
case 2: //parts
|
|
{
|
|
PartAuditInfoList pail = null;
|
|
pail = PartAuditInfoList.GetByDeleteStatus(iai.DeleteStatus);
|
|
if (pail.Count == 0)
|
|
pail = PartAuditInfoList.GetByItemID(iai.ItemID);
|
|
foreach (PartAuditInfo pai in pail)
|
|
{
|
|
if (pai.ContentID == MyItemInfo.ContentID)
|
|
{
|
|
switch (pai.FromType)
|
|
{
|
|
#region procedure part
|
|
case 1: //procedures
|
|
{
|
|
if (procedurePart == null)
|
|
procedurePart = tvAudits.Nodes.Add("Procedures");
|
|
TreeNode tn = procedurePart.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
#region section part
|
|
case 2: //sections
|
|
{
|
|
if (sectionPart == null)
|
|
sectionPart = tvAudits.Nodes.Add("Sections");
|
|
TreeNode tn = sectionPart.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
#region caution part
|
|
case 3: //cautions
|
|
{
|
|
if (cautionPart == null)
|
|
cautionPart = tvAudits.Nodes.Add("Cautions");
|
|
TreeNode tn = cautionPart.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
#region note part
|
|
case 4: //notes
|
|
{
|
|
if (notePart == null)
|
|
notePart = tvAudits.Nodes.Add("Notes");
|
|
TreeNode tn = notePart.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
#region rno part
|
|
case 5: //rnos
|
|
{
|
|
if (rnoPart == null)
|
|
rnoPart = tvAudits.Nodes.Add("RNOs");
|
|
TreeNode tn = rnoPart.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
#region step part
|
|
case 6: //steps
|
|
{
|
|
if (stepPart == null)
|
|
stepPart = tvAudits.Nodes.Add("Steps");
|
|
TreeNode tn = stepPart.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
#region table part
|
|
case 7: //tables
|
|
{
|
|
if (tablePart == null)
|
|
tablePart = tvAudits.Nodes.Add("Tables");
|
|
TreeNode tn = tablePart.Nodes.Add(iai.ToString());
|
|
tn.Tag = iai;
|
|
break;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DisplayTagRTF(TreeNode tn)
|
|
{
|
|
if (tn.Tag != null)
|
|
{
|
|
if (tn.Tag is ContentAuditInfo)
|
|
{
|
|
btnRestore.Enabled = true;
|
|
myVFG.Clear();
|
|
ContentAuditInfo cai = tn.Tag as ContentAuditInfo;
|
|
GridAuditInfoList gail = GridAuditInfoList.Get(cai.ContentID);
|
|
if (gail.Count > 0)
|
|
{
|
|
foreach (GridAuditInfo gai in gail)
|
|
{
|
|
if (gai.DTS == cai.DTS)
|
|
{
|
|
myVFG.Visible = true;
|
|
myVFG.BringToFront();
|
|
myRTB.Visible = false;
|
|
using (StringReader sr = new StringReader(gai.Data))
|
|
{
|
|
myVFG.ReadXml(sr);
|
|
sr.Close();
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
myRTB.Visible = true;
|
|
myRTB.BringToFront();
|
|
myVFG.Visible = false;
|
|
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData.Font);
|
|
}
|
|
}
|
|
if (tn.Tag is ItemAuditInfo)
|
|
{
|
|
btnRestore.Enabled = true;
|
|
ItemAuditInfo iai = tn.Tag as ItemAuditInfo;
|
|
ContentAuditInfoList cail = ContentAuditInfoList.Get(iai.ContentID);
|
|
foreach (ContentAuditInfo cai in cail)
|
|
{
|
|
if (cai.DeleteStatus == iai.DeleteStatus)
|
|
{
|
|
if (MyItemInfo.FormatStepData != null)
|
|
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData.Font);
|
|
else
|
|
myRTB.SetupRichText(cai.Text, new VE_Font("arial", 12, E_Style.None));
|
|
}
|
|
}
|
|
}
|
|
if (tn.Tag is AnnotationAuditInfo)
|
|
{
|
|
btnRestore.Enabled = true;
|
|
AnnotationAuditInfo iai = tn.Tag as AnnotationAuditInfo;
|
|
myRTB.Rtf = iai.RtfText;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
btnRestore.Enabled = false;
|
|
myRTB.Clear();
|
|
myVFG.Clear();
|
|
}
|
|
}
|
|
|
|
private void tvAudits_AfterSelect(object sender, TreeViewEventArgs e)
|
|
{
|
|
DisplayTagRTF(e.Node);
|
|
}
|
|
|
|
private void btnRestore_Click(object sender, EventArgs e)
|
|
{
|
|
TreeNode tn = tvAudits.SelectedNode;
|
|
if (tn.Tag is ContentAuditInfo)
|
|
{
|
|
ContentAuditInfo cai = tn.Tag as ContentAuditInfo;
|
|
if (MessageBox.Show(this, "Do you want to restore this content change?", "Confirm Content Change Restore", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
//TODO: need to fix this (dataportal stuff)
|
|
ContentInfo ci = ContentInfo.RestoreContent(cai);
|
|
UpdateHistory();
|
|
myRTB.Clear();
|
|
myVFG.Clear();
|
|
}
|
|
}
|
|
if (tn.Tag is ItemAuditInfo)
|
|
{
|
|
ItemAuditInfo iai = tn.Tag as ItemAuditInfo;
|
|
if (MessageBox.Show(this, "Do you want to restore this item?", "Confirm Item Restore", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
ItemInfo ii = MyItemInfo.RestoreSibling(iai);
|
|
UpdateHistory();
|
|
myRTB.Clear();
|
|
myVFG.Clear();
|
|
}
|
|
}
|
|
if (tn.Tag is AnnotationAuditInfo)
|
|
{
|
|
AnnotationAuditInfo aai = tn.Tag as AnnotationAuditInfo;
|
|
if (MessageBox.Show(this, "Do you want to restore this annotation?", "Confirm Annotation Restore", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
//TODO: need to fix this (dataportal stuff)
|
|
AnnotationInfo ai = AnnotationInfo.RestoreAnnotation(aai);
|
|
UpdateHistory();
|
|
myRTB.Clear();
|
|
myVFG.Clear();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void myVFG_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|