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)
 | 
						|
		{
 | 
						|
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |