diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs
index 856f91f7..287d8e12 100644
--- a/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs
+++ b/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs
@@ -194,6 +194,23 @@ namespace VEPROMS.CSLA.Library
public partial class AnnotationAuditInfoList
{
+
+ ///
+ /// C2024- 038 - Summary of Changes report generation enhancements
+ /// Constructor - takes a Generic list of AnnotationAuditInfo
+ /// and creates a AnnotationAuditInfoList
+ ///
+ public AnnotationAuditInfoList(List lst)
+ {
+ IsReadOnly = false;
+ if (lst != null)
+ {
+ foreach (AnnotationAuditInfo itm in lst)
+ this.Add(itm);
+ }
+ IsReadOnly = true;
+ }
+
///
/// Return a list of all AnnotationAuditInfo by ItemID.
///
@@ -487,6 +504,23 @@ namespace VEPROMS.CSLA.Library
public partial class ContentAuditInfoList
{
+
+ ///
+ /// C2024- 038 - Summary of Changes report generation enhancements
+ /// Constructor - takes a Generic list of ContentAuditInfo
+ /// and creates a ContentAuditInfoList
+ ///
+ public ContentAuditInfoList(List lst)
+ {
+ IsReadOnly = false;
+ if (lst != null)
+ {
+ foreach (ContentAuditInfo itm in lst)
+ this.Add(itm);
+ }
+ IsReadOnly = true;
+ }
+
///
/// Return a list of all ContentAuditInfo by ContentID.
///
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.cs b/PROMS/Volian.Controls.Library/DisplayHistory.cs
index 8e647378..a66c6952 100644
--- a/PROMS/Volian.Controls.Library/DisplayHistory.cs
+++ b/PROMS/Volian.Controls.Library/DisplayHistory.cs
@@ -10,6 +10,7 @@ using System.IO;
using System.Text.RegularExpressions;
using JR.Utils.GUI.Forms;
using Volian.Base.Library;
+using System.Linq;
namespace Volian.Controls.Library
{
@@ -163,7 +164,7 @@ namespace Volian.Controls.Library
else
{
DateTime revDate;
- if (!DateTime.TryParse(cfg.Print_RevDate, out revDate)) revDate = MyProcedureInfo.ChangeBarDate; // DateTime.Now;
+ if (!DateTime.TryParse(cfg.Print_RevDate, out revDate)) revDate = MyProcedureInfo.ChangeBarDate; // DateTime.Now;
SetRevDate(revDate);
//SetRevDate(DateTime.Parse(cfg.Print_RevDate));
}
@@ -263,7 +264,7 @@ namespace Volian.Controls.Library
{
AnnotationTypeInfo ati = AnnotationTypeInfo.Get(aai.TypeID);
// B2023-066: Crash when trying to access a deleted annotation type (added the ati==null check)
- tn = annotationDeleted.Nodes.Add(ati==null?"Deleted Annotation Type":ati.Name);
+ tn = annotationDeleted.Nodes.Add(ati == null ? "Deleted Annotation Type" : ati.Name);
}
TreeNode cn = tn.Nodes.Add(aai.ListString());
cn.Tag = aai;
@@ -517,7 +518,7 @@ namespace Volian.Controls.Library
if (delC.Type >= 0 && delC.Type < 1000)
{
int indx = delC.Config.IndexOf("DelProcReason");
- if (indx >= 0 && delC.Config.Length > indx+15) // 15 accounts for 'DelProcReason = "'
+ if (indx >= 0 && delC.Config.Length > indx + 15) // 15 accounts for 'DelProcReason = "'
{
string reason = delC.Config.Substring(indx + 15);
if (reason != null && reason.Length > 0)
@@ -529,7 +530,7 @@ namespace Volian.Controls.Library
}
}
}
- TreeNode tnn = deletedItems.Nodes.Add(iai.ToString()+"; Reason: " + strR);
+ TreeNode tnn = deletedItems.Nodes.Add(iai.ToString() + "; Reason: " + strR);
tnn.Tag = iai;
#endregion
}
@@ -558,7 +559,7 @@ namespace Volian.Controls.Library
if (MyProcedureInfo == null)
{
this.ParentForm.Cursor = Cursors.Default;
- btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
+ btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = cbSumExcludeAnn.Enabled = DT_SumAsOf.Enabled = lbChanges.Items.Count > 0;
return;
}
ContentAuditInfoList cail2;
@@ -586,7 +587,7 @@ namespace Volian.Controls.Library
// B2020-156: When procedure title is changed, it does not print in Summary/Chronolgy of changes.
// Need to only check the date (not the date/time) for some procedures, the original item was listed
// in the list box and should not be because some MyRevDate's did not have time included.
- if (CompareDateOrDateTime(cai.DTS,MyRevDate) || cai.ActionWhen > MyRevDate)
+ if (CompareDateOrDateTime(cai.DTS, MyRevDate) || cai.ActionWhen > MyRevDate)
{
string itemTitle = FixPath(cai.Path);
lbChanges.Items.Add(cai);
@@ -614,7 +615,7 @@ namespace Volian.Controls.Library
}
//Console.WriteLine("WalkProcedure fini: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
this.ParentForm.Cursor = Cursors.Default;
- btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
+ btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = cbSumExcludeAnn.Enabled = DT_SumAsOf.Enabled = lbChanges.Items.Count > 0;
RefreshRequired = false;
return;
}
@@ -648,9 +649,73 @@ namespace Volian.Controls.Library
//_AnnotationList = AnnotationAuditInfoList.GetChronology(0, 0, MyProcedureInfo.ChangeBarDate);
//added setting selected slave in order for reports to replace unit number,etc jcb 20101010
MyItemInfo.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = ApplDisplayMode;
- // OnSummaryPrintRequest(new DisplayHistoryReportEventArgs(Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MySummary.pdf", MyItemInfo.MyProcedure, _SummaryAuditList, _AnnotationList));
- OnSummaryPrintRequest(new DisplayHistoryReportEventArgs(string.Format(@"{0}\{1} Summary of Changes.pdf", Volian.Base.Library.VlnSettings.TemporaryFolder, MyItemInfo.MyProcedure.PDFNumber), MyItemInfo.MyProcedure, _SummaryAuditList, _AnnotationList));
- //}
+
+ var dhr = new DisplayHistoryReportEventArgs(string.Format(@"{0}\{1} Summary of Changes.pdf", Volian.Base.Library.VlnSettings.TemporaryFolder, MyItemInfo.MyProcedure.PDFNumber), MyItemInfo.MyProcedure, null, null);
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ //check if need to modify
+ // _SummaryAuditList
+ if (DT_SumAsOf.Checked)
+ dhr.AuditList = FilterSummaryByDate(_SummaryAuditList, DT_SumAsOf.Value);
+ else
+ dhr.AuditList = _SummaryAuditList;
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ // if Exclude Annotations Checked
+ // send an empty list instead of
+ //_AnnotationList
+ if (cbSumExcludeAnn.Checked)
+ dhr.AnnotationList = new AnnotationAuditInfoList(null);
+ else if (DT_SumAsOf.Checked)
+ dhr.AnnotationList = FilterSummaryByDate_Annotations(_AnnotationList, DT_SumAsOf.Value);
+ else
+ { dhr.AnnotationList = _AnnotationList; }
+
+ OnSummaryPrintRequest(dhr);
+ }
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ //modify _SummaryAuditList
+ //to limit to a specific date
+ private ContentAuditInfoList FilterSummaryByDate(ContentAuditInfoList summaryAuditList, DateTime value)
+ {
+ List slst = summaryAuditList.Clone().ToList();
+
+ //Grab the first change to each item before the date and set that to the AsOf date
+ foreach (ContentAuditInfo firstbeforedate in slst.GroupBy(x => x.ItemID).Select(x => x.OrderByDescending(y => y.DTS).FirstOrDefault(d => d.DTS < value)))
+ {
+ if (firstbeforedate != null && firstbeforedate.ActionWhat != "Deleted")
+ {
+ firstbeforedate.ActionWhat = $"As Of: {value.ToShortDateString()}";
+ }
+ }
+ //remove all items before the date we are checking against
+ //note that for deleted - sometimes the DTS is not correct and
+ //need to use the ActionWhen
+ slst.RemoveAll(x => x.DTS < value && !x.ActionWhat.StartsWith("As Of:") && (x.ActionWhat != "Deleted" || (x.ActionWhen < x.DTS ? x.DTS : x.ActionWhen) < value));
+
+ //remove all items where first text matches the last text
+ //unless it was added after the date we are checking against
+ //or the last item is a deletion that occurred after
+ //the date we are checking against
+ var itms = slst.Select(x => x.ItemID).Distinct().ToList();
+ foreach (int itmID in itms)
+ {
+ ContentAuditInfo first = slst.Where(i => i.ItemID == itmID).OrderBy(y => y.DTS).FirstOrDefault();
+ ContentAuditInfo last = slst.Where(i => i.ItemID == itmID).OrderByDescending(y => y.DTS).FirstOrDefault();
+ if (first != null && last != null && first.DTS < value && (last.ActionWhat != "Deleted" || (last.ActionWhen < last.DTS ? last.DTS : last.ActionWhen) < value) && ItemInfo.ConvertToDisplayText(first.Text) == ItemInfo.ConvertToDisplayText(last.Text))
+ slst.RemoveAll(x => x.ItemID == itmID);
+ }
+
+ return new ContentAuditInfoList(slst);
+ }
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ //modify _SummaryAuditList
+ //to limit to a specific date
+ private AnnotationAuditInfoList FilterSummaryByDate_Annotations(AnnotationAuditInfoList annotationAuditList, DateTime value)
+ {
+ return new AnnotationAuditInfoList(annotationAuditList.Where(x => x.DTS >= value).ToList());
}
private void btnRefresh_Click(object sender, EventArgs e)
{
@@ -1060,7 +1125,7 @@ namespace Volian.Controls.Library
set { _AuditList = value; }
}
private AnnotationAuditInfoList _AnnotationList;
- public AnnotationAuditInfoList AnnotationList
+ public AnnotationAuditInfoList AnnotationList
{
get { return _AnnotationList; }
set { _AnnotationList = value; }
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs b/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs
index 87fcb3ce..2936956c 100644
Binary files a/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs and b/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs differ
diff --git a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
index e615e5de..1510659d 100644
--- a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
+++ b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
@@ -443,6 +443,9 @@
DisplayBookMarks.cs
Designer
+
+ DisplayHistory.cs
+
DisplayLibDocs.cs
Designer
diff --git a/PROMS/Volian.Print.Library/PDFChronologyReport.cs b/PROMS/Volian.Print.Library/PDFChronologyReport.cs
index b0111d5c..73e7ca1e 100644
--- a/PROMS/Volian.Print.Library/PDFChronologyReport.cs
+++ b/PROMS/Volian.Print.Library/PDFChronologyReport.cs
@@ -1090,7 +1090,7 @@ namespace Volian.Print.Library
firstCAI = null;
lastCAI = null;
}
- else if (firstCAI.ActionWhat == lastCAI.ActionWhat)
+ else if (firstCAI.ActionWhat == lastCAI.ActionWhat || firstCAI.ActionWhat.StartsWith("As Of:"))
{
auditList1.Add(firstCAI);
auditList1.Add(lastCAI);
@@ -1153,7 +1153,7 @@ namespace Volian.Print.Library
firstCAI = null;
lastCAI = null;
}
- else if (firstCAI.ActionWhat == lastCAI.ActionWhat)
+ else if (firstCAI.ActionWhat == lastCAI.ActionWhat || firstCAI.ActionWhat.StartsWith("As Of:"))
{
auditList1.Add(firstCAI);
auditList1.Add(lastCAI);