Added new settings to control conversion of approved data
Added event handler for viewing version pdfs and summary reports added constructor to lookup based on file added method to get library document by original file name fixed ConvertToDisplayText to support RO tables in approved folder added vlnTreeViewPdfEvent delegate added vlnTreeViewPdfArgs class added ViewPDF event only display menu item if pdf or summary pdf exists determined if pdf should have superceded watermark added added sorting of consistency check report by procedure number added method to add superceded watermark to old version pdf files commented out approved folders
This commit is contained in:
parent
11ba8ffa78
commit
0b48ec643e
24
PROMS/DataLoader/Properties/Settings.Designer.cs
generated
24
PROMS/DataLoader/Properties/Settings.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -74,5 +74,11 @@
|
||||
<Setting Name="GenMacFolder" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">c:\development\genmacall</Value>
|
||||
</Setting>
|
||||
<Setting Name="LoadApproved" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Phase4" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">Phase4</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -130,6 +130,64 @@ namespace VEPROMS.CSLA.Library
|
||||
_DocumentConfig = null;
|
||||
}
|
||||
#endregion
|
||||
public static DocumentInfo GetByLibDocName(string libdoc, int versionID)
|
||||
{
|
||||
try
|
||||
{
|
||||
DocumentInfo tmp = DataPortal.Fetch<DocumentInfo>(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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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<ItemInfo> sortedResults = new Csla.SortedBindingList<ItemInfo>(_SearchResults);
|
||||
sortedResults.ApplySort(_DisplayMember, ListSortDirection.Ascending);
|
||||
lbSrchResults.DataSource = sortedResults;
|
||||
*/
|
||||
Csla.SortedBindingList<ItemInfo> sortedProcs = new Csla.SortedBindingList<ItemInfo>(MyItemInfoList);
|
||||
sortedProcs.ApplySort("DisplayNumber", System.ComponentModel.ListSortDirection.Ascending);
|
||||
foreach (ProcedureInfo pi in sortedProcs)
|
||||
{
|
||||
if (pi.IsSelected)
|
||||
{
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -150,10 +150,10 @@
|
||||
child="version">
|
||||
<folders active="set.dbf">
|
||||
<folder template="." title="Working Draft" />
|
||||
<folder template="approved" title="Approved Version"/>
|
||||
<!--<folder template="approved" title="Approved Version"/>-->
|
||||
<folder template="chgsht" title="Change Sheet Version"/>
|
||||
<folder template="tmpchg" title="Temporary Change"/>
|
||||
<folder template="approved\tmpchg" title="Approved Temporary Change"/>
|
||||
<!--<folder template="approved\tmpchg" title="Approved Temporary Change"/>-->
|
||||
</folders>
|
||||
</dbObject>
|
||||
<dbObject type="version"
|
||||
|
Loading…
x
Reference in New Issue
Block a user