diff --git a/PROMS/DataLoader/Properties/Settings.Designer.cs b/PROMS/DataLoader/Properties/Settings.Designer.cs index 564d3ec5..c29c2bc8 100644 --- a/PROMS/DataLoader/Properties/Settings.Designer.cs +++ b/PROMS/DataLoader/Properties/Settings.Designer.cs @@ -310,5 +310,29 @@ namespace DataLoader.Properties { this["GenMacFolder"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool LoadApproved { + get { + return ((bool)(this["LoadApproved"])); + } + set { + this["LoadApproved"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Phase4")] + public string Phase4 { + get { + return ((string)(this["Phase4"])); + } + set { + this["Phase4"] = value; + } + } } } diff --git a/PROMS/DataLoader/Properties/Settings.settings b/PROMS/DataLoader/Properties/Settings.settings index aa0e3e2c..f6e15f4b 100644 --- a/PROMS/DataLoader/Properties/Settings.settings +++ b/PROMS/DataLoader/Properties/Settings.settings @@ -74,5 +74,11 @@ c:\development\genmacall + + False + + + Phase4 + \ No newline at end of file diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 97e92f54..898cc2b3 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -18,6 +18,7 @@ using VEPROMS.Properties; using Volian.Controls.Library; using DescriptiveEnum; using Volian.Base.Library; +using Volian.Print.Library; [assembly: log4net.Config.XmlConfigurator(Watch = true)] @@ -209,6 +210,20 @@ namespace VEPROMS tv.ApproveAllProcedures += new vlnTreeViewEvent(tv_ApproveAllProcedures); tv.ApproveSomeProcedures += new vlnTreeViewEvent(tv_ApproveSomeProcedures); tv.ReportAllProceduresInconsistencies += new vlnTreeViewEvent(tv_ReportAllProceduresInconsistencies); + tv.ViewPDF += new vlnTreeViewPdfEvent(tv_ViewPDF); + } + + void tv_ViewPDF(object sender, vlnTreeViewPdfArgs args) + { + byte[] buffer; + if (args.MyWatermark != string.Empty) + buffer = PromsPrinter.WatermarkPDF(args.MyBuffer, args.MyWatermark); + else + buffer = args.MyBuffer; + FileStream fs = new FileStream(args.MyFilename, FileMode.Create); + fs.Write(buffer, 0, buffer.Length); + fs.Close(); + System.Diagnostics.Process.Start(args.MyFilename); } void displayHistory_AnnotationRestored(AnnotationInfo restoredAnnotationInfo, ItemInfo currentItem) diff --git a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs index 28b3eac8..0b0e5987 100644 --- a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs +++ b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs @@ -4,6 +4,7 @@ using System.Collections.Specialized; using System.Text; using System.ComponentModel; using System.Text.RegularExpressions; +using System.IO; namespace VEPROMS.CSLA.Library { @@ -110,6 +111,18 @@ namespace VEPROMS.CSLA.Library _DocVersionInfo = _ROFstInfo.docVer==null?null: DocVersionInfo.Get(_ROFstInfo.docVer.VersionID); ParseIntoDictionary(rofstinfo.ROLookup); } + public ROFSTLookup(string filePath) + { + _ROFstInfo = null; + _ROFst = null; + _DocVersionInfo = null; + FileInfo rofstFile = new FileInfo(filePath); + FileStream fs = rofstFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + byte[] buf = new byte[rofstFile.Length]; + fs.Read(buf, 0, buf.Length); + fs.Close(); + ParseIntoDictionary(buf); + } #endregion #region PropertiesAndData public roHdr myHdr; diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs index d1a9d5d8..7af6da05 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs @@ -130,6 +130,64 @@ namespace VEPROMS.CSLA.Library _DocumentConfig = null; } #endregion + public static DocumentInfo GetByLibDocName(string libdoc, int versionID) + { + try + { + DocumentInfo tmp = DataPortal.Fetch(new LibDocCriteria(libdoc, versionID)); + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on DocumentInfo.GetByLibDocName", ex); + } + } + [Serializable()] + protected class LibDocCriteria + { + private string _LibDoc; + public string LibDoc + { get { return _LibDoc; } } + private int _VersionID; + public int VersionID + { get { return _VersionID; } } + public LibDocCriteria(string libdoc, int versionid) + { + _LibDoc = libdoc; + _VersionID = versionid; + } + } + private void DataPortal_Fetch(LibDocCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] DocumentInfo.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getDocumentByLibDoc"; + cm.Parameters.AddWithValue("@LibDoc", criteria.LibDoc); + cm.Parameters.AddWithValue("@VersionID", criteria.VersionID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (!dr.Read()) + { + _ErrorMessage = "No Record Found"; + return; + } + ReadData(dr); + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("DocumentInfo.DataPortal_Fetch", ex); + throw new DbCslaException("DocumentInfo.DataPortal_Fetch", ex); + } + } } public partial class DocumentInfoList diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 46966861..b0337ba3 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -1302,6 +1302,7 @@ namespace VEPROMS.CSLA.Library retval = ReplaceSpecialCharacters(retval); retval = retval.Replace("\u2011","-"); retval = retval.Replace("\r\n", ";"); + retval = retval.Replace("\n", ";"); //added for consistency checking with approved version return retval; } public static string StripRtfFormatting(string rtf) diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 5f0e078d..ad9250f1 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -28,6 +28,7 @@ namespace Volian.Controls.Library public delegate DialogResult vlnTreeViewPSIEvent(object sender, vlnTreeEventArgs args); public delegate void vlnTreeViewSectionInfoEvent(object sender, vlnTreeSectionInfoEventArgs args); public delegate void WordSectionDeletedEvent(object sender, WordSectionEventArgs args); + public delegate void vlnTreeViewPdfEvent(object sender, vlnTreeViewPdfArgs args); public partial class vlnTreeSectionInfoEventArgs { private bool _IsDeleting = false; @@ -52,6 +53,33 @@ namespace Volian.Controls.Library _IsDeleting = isDeleting; } } + public partial class vlnTreeViewPdfArgs + { + private string _MyFilename; + public string MyFilename + { + get { return _MyFilename; } + set { _MyFilename = value; } + } + private byte[] _MyBuffer; + public byte[] MyBuffer + { + get { return _MyBuffer; } + set { _MyBuffer = value; } + } + private string _MyWatermark; + public string MyWatermark + { + get { return _MyWatermark; } + set { _MyWatermark = value; } + } + public vlnTreeViewPdfArgs(string filename, byte[] buffer, string watermark) + { + _MyFilename = filename; + _MyBuffer = buffer; + _MyWatermark = watermark; + } + } public partial class vlnTreeEventArgs { #region Business Methods @@ -277,6 +305,11 @@ namespace Volian.Controls.Library ItemInfo _LastItemInfo = null; #endregion #region Events + public event vlnTreeViewPdfEvent ViewPDF; + private void OnViewPDF(object sender, vlnTreeViewPdfArgs args) + { + if (ViewPDF != null) ViewPDF(sender, args); + } public event vlnTreeViewItemInfoDeleteEvent DeleteItemInfo; private bool OnDeleteItemInfo(object sender, vlnTreeItemInfoEventArgs args) { @@ -549,56 +582,83 @@ namespace Volian.Controls.Library RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID); if (ril.Count == 0) return; MenuItem mi = menuItemCollection.Add("Versions"); + int lastApprovedRevisionID = 0; foreach (RevisionInfo ri in ril) { MenuItem mir = mi.MenuItems.Add(ri.ToString()); mir.Tag = ri; - mir.Click += new EventHandler(ApprovedRevision_Click); + if (ri.LatestVersion.MyStage.IsApproved > 0 && (ri.RevisionID > lastApprovedRevisionID)) + lastApprovedRevisionID = ri.RevisionID; + //mir.Click += new EventHandler(ApprovedRevision_Click); //added jcb 20111031 - MenuItem mirp = mir.MenuItems.Add("View Procedure"); - mirp.Tag = ri; - mirp.Click += new EventHandler(ApprovedRevision_Click); - MenuItem mirs = mir.MenuItems.Add("View Summary of Changes"); - mirs.Tag = ri; - mirs.Click += new EventHandler(SummaryOfChanges_Click); + if (ri.LatestVersion.PDF != null) + { + MenuItem mirp = mir.MenuItems.Add("View Procedure"); + mirp.Tag = ri; + mirp.Click += new EventHandler(ApprovedRevision_Click); + } + if (ri.LatestVersion.SummaryPDF != null) + { + MenuItem mirs = mir.MenuItems.Add("View Summary of Changes"); + mirs.Tag = ri; + mirs.Click += new EventHandler(SummaryOfChanges_Click); + } //end added jcb 20111031 + mi.Tag = lastApprovedRevisionID; } } void ApprovedRevision_Click(object sender, EventArgs e) { + bool superceded = false; MenuItem mi = sender as MenuItem; if (mi == null) return; RevisionInfo ri = mi.Tag as RevisionInfo; - System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri)); + { + MenuItem mip = mi.Parent as MenuItem; + if (ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) + superceded = true; + } + vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : ""); + OnViewPDF(sender, args); +// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded)); } void SummaryOfChanges_Click(object sender, EventArgs e) { MenuItem mi = sender as MenuItem; if (mi == null) return; RevisionInfo ri = mi.Tag as RevisionInfo; - System.Diagnostics.Process pps = System.Diagnostics.Process.Start(GetDocSummaryPdf(ri)); - } - private string GetDocPdf(RevisionInfo ri) - { - string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber); - FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName); - FileStream fs = fi.Create(); - byte[] myPdf = ri.LatestVersion.PDF; - if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length); - fs.Close(); - return VlnSettings.TemporaryFolder + @"\" + fileName; - } - private string GetDocSummaryPdf(RevisionInfo ri) - { - string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber + " Summary of Changes"); - FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName); - FileStream fs = fi.Create(); - byte[] myPdf = ri.LatestVersion.SummaryPDF; - if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length); - fs.Close(); - return VlnSettings.TemporaryFolder + @"\" + fileName; + vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber + " Summary of Changes"), ri.LatestVersion.SummaryPDF, ""); + OnViewPDF(sender, args); + // System.Diagnostics.Process pps = System.Diagnostics.Process.Start(GetDocSummaryPdf(ri)); } + //private string GetDocPdf(RevisionInfo ri, bool superceded) + //{ + // string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber); + // FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName); + // FileStream fs = fi.Create(); + // byte[] myPdf = ri.LatestVersion.PDF; + // if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length); + // fs.Close(); + // if (superceded) + // AddSupercededWatermark(VlnSettings.TemporaryFolder + @"\" + fileName); + // return VlnSettings.TemporaryFolder + @"\" + fileName; + //} + + //private void AddSupercededWatermark(string p) + //{ + // MessageBox.Show("superceded"); + //} + //private string GetDocSummaryPdf(RevisionInfo ri) + //{ + // string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber + " Summary of Changes"); + // FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName); + // FileStream fs = fi.Create(); + // byte[] myPdf = ri.LatestVersion.SummaryPDF; + // if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length); + // fs.Close(); + // return VlnSettings.TemporaryFolder + @"\" + fileName; + //} private bool AddToInsertMenu(ItemInfo ii, int ba) // 0 = before, 1 = after diff --git a/PROMS/Volian.Print.Library/PDFConsistencyCheckReport.cs b/PROMS/Volian.Print.Library/PDFConsistencyCheckReport.cs index 00c797de..63673c84 100644 --- a/PROMS/Volian.Print.Library/PDFConsistencyCheckReport.cs +++ b/PROMS/Volian.Print.Library/PDFConsistencyCheckReport.cs @@ -134,7 +134,14 @@ namespace Volian.Print.Library PdfPTable t = CreatePdfPTable(cols); CreatePageHeader(t, f1, f4, cols, paddingBottom, "Approval Consistency Report", "Procedures currently selected to be approved"); //more stuff - foreach (ProcedureInfo pi in MyItemInfoList) + /* + Csla.SortedBindingList sortedResults = new Csla.SortedBindingList(_SearchResults); + sortedResults.ApplySort(_DisplayMember, ListSortDirection.Ascending); + lbSrchResults.DataSource = sortedResults; + */ + Csla.SortedBindingList sortedProcs = new Csla.SortedBindingList(MyItemInfoList); + sortedProcs.ApplySort("DisplayNumber", System.ComponentModel.ListSortDirection.Ascending); + foreach (ProcedureInfo pi in sortedProcs) { if (pi.IsSelected) { diff --git a/PROMS/Volian.Print.Library/PromsPrinter.cs b/PROMS/Volian.Print.Library/PromsPrinter.cs index 18f9f926..81ee712f 100644 --- a/PROMS/Volian.Print.Library/PromsPrinter.cs +++ b/PROMS/Volian.Print.Library/PromsPrinter.cs @@ -676,5 +676,39 @@ namespace Volian.Print.Library myPageHelper.MySection = saveSect; myPageHelper.OnFoldoutPage = false; } + public static byte[] WatermarkPDF(byte[] buffer, string watermark) + { + PdfReader reader = new PdfReader(buffer); + MemoryStream ms = new MemoryStream(); + PdfStamper stamper = new PdfStamper(reader, ms); + PdfLayer layer = new PdfLayer("Watermark", stamper.Writer); + layer.SetPrint("Print", true); + for (int i = 1; i <= reader.NumberOfPages; i++) + { + PdfContentByte cb = stamper.GetUnderContent(i); + cb.SaveState(); + cb.BeginLayer(layer); + SvgWatermark wm = new SvgWatermark(cb, watermark, System.Drawing.Color.Blue, .15F); + wm.SetSquareDotPattern(.7F); + //wm.SetTextPattern(8, 3); + //wm.SetTextPattern2(8); + //wm.SetHashPattern(1, 6); + //wm.SetDotPattern(5, 2); + wm.Draw(); + cb.EndLayer(); + cb.RestoreState(); + } + stamper.Close(); + /* + cb.SaveState(); + if (_WatermarkLayer != null) cb.BeginLayer(_WatermarkLayer); + SvgWatermark myWatermark = new SvgWatermark(cb, Watermark, System.Drawing.Color.Blue, .15F); + myWatermark.SetSquareDotPattern(.7F); + myWatermark.Draw(); + if (_WatermarkLayer != null) cb.EndLayer(); + cb.RestoreState(); + */ + return ms.ToArray(); + } } } diff --git a/PROMS/Volian.Utils.Library/vlnObject/vlnControl.xml b/PROMS/Volian.Utils.Library/vlnObject/vlnControl.xml index fc0d37cb..44fc9861 100644 --- a/PROMS/Volian.Utils.Library/vlnObject/vlnControl.xml +++ b/PROMS/Volian.Utils.Library/vlnObject/vlnControl.xml @@ -150,10 +150,10 @@ child="version"> - + - +