
Added SessionInfo property to DlgPrintProcedure and added checks to print routines to notify user that another user has procedure checked out with a confirmation to continue printing. Added code to support multiuser and security including initializing security, creating user if user does not exist in database, checking in and out DocVersions, Procedures and Documents and keeping the database notified that user is still active. Added label to bottom of PROMS main form to indicate who user is and what security they have on open objects.
1242 lines
42 KiB
C#
1242 lines
42 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using VEPROMS.CSLA.Library;
|
|
using Volian.Base.Library;
|
|
using Volian.Print.Library;
|
|
using System.IO;
|
|
using System.Text.RegularExpressions;
|
|
using DevComponents.DotNetBar;
|
|
|
|
namespace VEPROMS
|
|
{
|
|
public partial class dlgApproveProcedure : Form
|
|
{
|
|
public event DisplayConsistencyReportEvent ConsistencyPrintRequest;
|
|
private void OnConsistencyPrintRequest(ConsistencyReportArgs args)
|
|
{
|
|
if (ConsistencyPrintRequest != null)
|
|
ConsistencyPrintRequest(this, args);
|
|
}
|
|
private bool CanApprove
|
|
{
|
|
get { return btnApprove2.Enabled;}
|
|
set
|
|
{
|
|
btnApprove2.Enabled = value;
|
|
tsslStatus.ForeColor = Color.Red;
|
|
tsslStatus.BackColor = Color.Yellow;
|
|
tsslStatus.Text = value ? "" : "Need to correct the Rev Numbers marked with Question Marks";
|
|
}
|
|
}
|
|
private int _ApplicabilityIndex = 0;
|
|
public int ApplicabilityIndex
|
|
{
|
|
get { return _ApplicabilityIndex; }
|
|
set { _ApplicabilityIndex = value; }
|
|
}
|
|
private SessionInfo _MySessionInfo;
|
|
public SessionInfo MySessionInfo
|
|
{
|
|
get { return _MySessionInfo; }
|
|
set
|
|
{
|
|
_MySessionInfo = value;
|
|
_MyApproval.MySessionInfo = _MySessionInfo;
|
|
}
|
|
}
|
|
private ApprovalInfo _MyApproval = new ApprovalInfo();
|
|
private bool _CheckForMore = false;
|
|
private DocVersionInfo _MyDocVersion;
|
|
public dlgApproveProcedure(DocVersionInfo myDocVersion)
|
|
{
|
|
ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave;
|
|
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
|
_MyDocVersion = myDocVersion;
|
|
InitializeComponent();
|
|
FlexGridAddEvents();
|
|
_MyApproval.StatusUpdated += new ApprovalStatusChangeEvent(_MyApproval_StatusUpdated);
|
|
SetupComboBoxes();
|
|
foreach (ProcedureInfo pi in myDocVersion.Procedures)
|
|
{
|
|
pi.MyDocVersion.DocVersionConfig.SelectedSlave = ApplicabilityIndex;
|
|
_MyApproval.AddProcedure(pi);
|
|
}
|
|
SetupMyApproval();
|
|
//pnlApprove.LocationChanged += new EventHandler(Panel_LocationChanged);
|
|
//pnlSelect.LocationChanged += new EventHandler(Panel_LocationChanged);
|
|
pnlApprove.SendToBack();
|
|
this.Width = pnlApprove.Width + this.Width - this.ClientSize.Width;
|
|
}
|
|
|
|
private void FlexGridAddEvents()
|
|
{
|
|
//fgProcs.ChangeEdit += new EventHandler(fgProcs_ChangeEdit);
|
|
//Console.WriteLine(fgProcs.ComboBoxEditor.GetType().Name);
|
|
//Console.WriteLine(fgProcs.Editor.GetType().Name);
|
|
//fgProcs.ImeModeChanged += new EventHandler(fgProcs_ImeModeChanged);
|
|
//fgProcs.LeaveEdit += new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_LeaveEdit);
|
|
//fgProcs.SetupEditor += new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_SetupEditor);
|
|
//fgProcs.StartEdit += new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_StartEdit);
|
|
//fgProcs.ValidateEdit += new C1.Win.C1FlexGrid.ValidateEditEventHandler(fgProcs_ValidateEdit);
|
|
fgProcs.ComboCloseUp += new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_ComboCloseUp);
|
|
//fgProcs.MouseDown += new MouseEventHandler(fgProcs_MouseDown);
|
|
//fgProcs.MouseUp += new MouseEventHandler(fgProcs_MouseUp);
|
|
}
|
|
|
|
void fgProcs_MouseUp(object sender, MouseEventArgs e)
|
|
{
|
|
C1.Win.C1FlexGrid.HitTestInfo hti = fgProcs.HitTest(e.X, e.Y);
|
|
Console.WriteLine("fgProcs_MouseUp X={0},Y={1},Row={2},Col={3}", e.X, e.Y, hti.Row, hti.Column);
|
|
}
|
|
|
|
void fgProcs_MouseDown(object sender, MouseEventArgs e)
|
|
{
|
|
C1.Win.C1FlexGrid.HitTestInfo hti = fgProcs.HitTest(e.X, e.Y);
|
|
Console.WriteLine("fgProcs_MouseDown X={0},Y={1},Row={2},Col={3}", e.X, e.Y,hti.Row,hti.Column);
|
|
|
|
}
|
|
|
|
void fgProcs_ComboCloseUp(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
|
{
|
|
Console.WriteLine("fgProcs_ComboCloseUp e.row={0}, fgprocs.mouserow={1}", e.Row, fgProcs.MouseRow);
|
|
if (e.Row == fgProcs.MouseRow)
|
|
return;
|
|
fgProcs_AfterEdit(sender, e);
|
|
//Console.WriteLine("fgProcs_ComboCloseUp row: {0}, col: {1}, val: {2}, etostring: {3}", e.Row, e.Col, fgProcs[e.Row, e.Col], e.ToString());
|
|
}
|
|
|
|
void fgProcs_ValidateEdit(object sender, C1.Win.C1FlexGrid.ValidateEditEventArgs e)
|
|
{
|
|
Console.WriteLine("fgProcs_ValidateEdit");
|
|
}
|
|
|
|
void fgProcs_StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
|
{
|
|
|
|
object val = fgProcs[e.Row, e.Col];
|
|
DateTime dt = (DateTime)val;
|
|
if (dt != null)
|
|
dt = dt.AddHours(1);
|
|
fgProcs[e.Row, e.Col] = dt;
|
|
Console.WriteLine("fgProcs_StartEdit val: {0}, dt: {1}",val,dt);
|
|
}
|
|
|
|
void fgProcs_SetupEditor(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
|
{
|
|
Console.WriteLine("fgProcs_SetupEditor");
|
|
}
|
|
|
|
void fgProcs_LeaveEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
|
{
|
|
object val = fgProcs[e.Row, e.Col];
|
|
DateTime dt = (DateTime)val;
|
|
if (dt != null && dt.Hour != 0)
|
|
dt = dt.AddHours(-1);
|
|
fgProcs[e.Row, e.Col] = dt;
|
|
Console.WriteLine("fgProcs_LeaveEdit val: {0}, dt: {1}, mouserow={2}, mousecol={3}", val, dt,fgProcs.MouseRow,fgProcs.MouseCol);
|
|
}
|
|
|
|
void fgProcs_ImeModeChanged(object sender, EventArgs e)
|
|
{
|
|
Console.WriteLine("fgProcs_ImeModeChanged");
|
|
}
|
|
|
|
void fgProcs_ChangeEdit(object sender, EventArgs e)
|
|
{
|
|
Console.WriteLine("fgProcs_ChangeEdit");
|
|
}
|
|
void Panel_LocationChanged(object sender, EventArgs e)
|
|
{
|
|
if (pnlApprove.Location.X == 0 && pnlSelect.Location.X == 0)
|
|
return;
|
|
if (pnlApprove.Location.X == 0)
|
|
{
|
|
chkViewPDF.Visible = false;
|
|
chkSetAllDates.Visible = true;
|
|
if (_MyApproval.MyProcedures.Count == 1)
|
|
{
|
|
this.Text = "Approve " + _MyApproval.MyProcedures[0].ProcInfo.DisplayNumber;
|
|
chkViewPDF.Visible = true;
|
|
chkSetAllDates.Visible = false;
|
|
}
|
|
else if (_MyApproval.MyProcedures.Count == _MyDocVersion.Procedures.Count)
|
|
this.Text = "Approve All Procedures";
|
|
else
|
|
this.Text = "Approve Selected Procedures";
|
|
InitializePanelApprove();
|
|
}
|
|
if (pnlSelect.Location.X == 0)
|
|
{
|
|
this.Text = "Select Procedures To Approve";
|
|
InitializePanelSelect();
|
|
}
|
|
}
|
|
private void InitializePanelSelect()
|
|
{
|
|
if (clbMore.Items.Count == 0)
|
|
{
|
|
foreach (ProcedureInfo pi in _MyDocVersion.Procedures)
|
|
{
|
|
pi.MyDocVersion.DocVersionConfig.SelectedSlave = _MyDocVersion.DocVersionConfig.SelectedSlave;
|
|
clbMore.Items.Add(pi.DisplayNumber);
|
|
tmpProcedures.Add(pi.DisplayNumber, pi);
|
|
}
|
|
}
|
|
for (int i = 0; i < clbMore.Items.Count; i++)
|
|
{
|
|
ProcedureInfo pi = tmpProcedures[GetDisplayNumberOnly(clbMore.Items[i].ToString())];
|
|
clbMore.SetItemChecked(i, _MyApproval.ProcedureExists(pi));
|
|
}
|
|
}
|
|
private void InitializePanelApprove()
|
|
{
|
|
SetupMyApproval();
|
|
}
|
|
private Dictionary<string, ProcedureInfo> tmpProcedures = new Dictionary<string, ProcedureInfo>();
|
|
public dlgApproveProcedure(DocVersionInfo myDocVersion, bool selectSome)
|
|
{
|
|
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
|
_MyDocVersion = myDocVersion;
|
|
InitializeComponent();
|
|
FlexGridAddEvents();
|
|
_MyApproval.StatusUpdated += new ApprovalStatusChangeEvent(_MyApproval_StatusUpdated);
|
|
_CheckForMore = false;
|
|
//pnlApprove.LocationChanged += new EventHandler(Panel_LocationChanged);
|
|
//pnlSelect.LocationChanged += new EventHandler(Panel_LocationChanged);
|
|
pnlSelect.SendToBack();
|
|
this.Width = pnlSelect.Width + this.Width - this.ClientSize.Width; ;
|
|
}
|
|
public dlgApproveProcedure(ProcedureInfo myProcedure)
|
|
{
|
|
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
|
_MyDocVersion = myProcedure.MyDocVersion;
|
|
InitializeComponent();
|
|
FlexGridAddEvents();
|
|
SetupComboBoxes();
|
|
_MyApproval.AddProcedure(myProcedure);
|
|
//SetupMyApproval();
|
|
//pnlApprove.LocationChanged += new EventHandler(Panel_LocationChanged);
|
|
//pnlSelect.LocationChanged += new EventHandler(Panel_LocationChanged);
|
|
pnlApprove.SendToBack();
|
|
this.Width = pnlApprove.Width;
|
|
}
|
|
void _MyApproval_StatusUpdated(ApprovalInfo sender, ApprovalMessageArgs e)
|
|
{
|
|
tsslMsg2.Text = e.MyStatus;
|
|
Application.DoEvents();
|
|
}
|
|
private void SetupMyApproval()
|
|
{
|
|
approvalInfoBindingSource.DataSource = _MyApproval;
|
|
//if(_MyApproval.MyProcedures.Count == 1)
|
|
// lblOldRevNumber.Text = _MyApproval.RevNumber;
|
|
//else if (_MyApproval.MyProcedures.Count > 1)
|
|
// lblMaxRevNumber1.Text = GetMaxRevNumber();
|
|
_MyApproval.RevType = (revTypeBindingSource.Current as RevType).TypeID;
|
|
_MyApproval.RevStage = (stageInfoBindingSource.Current as StageInfo).StageID;
|
|
approvalInfoBindingSource.ResetBindings(false);
|
|
approvalProcedureBindingSource.DataSource = _MyApproval.MyProcedures;
|
|
approvalProcedureBindingSource.ResetBindings(false);
|
|
//this.ConsistencyPrintRequest -= new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
|
}
|
|
private string GetMaxRevNumber()
|
|
{
|
|
string mrn = string.Empty;
|
|
foreach (ApprovalProcedure ap in _MyApproval.MyProcedures)
|
|
{
|
|
int k = _MyApproval.FancyShmancyRevCompare(mrn, ap.RevNumber);
|
|
if (k < 0)
|
|
mrn = ap.RevNumber;
|
|
}
|
|
return mrn;
|
|
}
|
|
void dlgApproveProcedure_ConsistencyPrintRequest(object sender, ConsistencyReportArgs args)
|
|
{
|
|
foreach (ProcedureInfo pi in args.MyItems)
|
|
pi.IsSelected = _MyApproval.ProcedureExists(pi);
|
|
PDFConsistencyCheckReport rpt = new PDFConsistencyCheckReport(args.ReportName, args.MyItems);
|
|
rpt.BuildReport();
|
|
}
|
|
private void SetupComboBoxes()
|
|
{
|
|
RevTypes rt = new RevTypes();
|
|
foreach (int i in Enum.GetValues(typeof(Rev_Types)))
|
|
{
|
|
RevType t = new RevType(i, Enum.GetName(typeof(Rev_Types), i));
|
|
rt.Add(t);
|
|
}
|
|
revTypeBindingSource.DataSource = rt;
|
|
stageInfoBindingSource.DataSource = StageInfoList.Get();
|
|
}
|
|
private void btnApprove_Click(object sender, EventArgs e)
|
|
{
|
|
this.Cursor = Cursors.WaitCursor;
|
|
if(!_MyApproval.Approve(new Point(Left,Bottom)))
|
|
this.DialogResult = DialogResult.None;
|
|
this.Cursor = Cursors.Default;
|
|
}
|
|
private void cmbRevisionType_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
RevType rt = cmbRevisionType2.SelectedItem as RevType;
|
|
_MyApproval.RevType = rt.TypeID;
|
|
}
|
|
private void cmbRevisionStage_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
StageInfo si = cmbRevisionStage2.SelectedItem as StageInfo;
|
|
_MyApproval.RevStage = si.StageID;
|
|
}
|
|
private void clbMore_ItemCheck(object sender, ItemCheckEventArgs e)
|
|
{
|
|
if (e.NewValue == CheckState.Checked)
|
|
btnOkay.Enabled = true;
|
|
else
|
|
btnOkay.Enabled = (clbMore.CheckedItems.Count > 1);
|
|
btnCheckMore.Enabled = btnOkay.Enabled;
|
|
btnReportMore.Enabled = false;
|
|
}
|
|
private void btnOkay_Click(object sender, EventArgs e)
|
|
{
|
|
UpdateMyApproval();
|
|
//lbProcs.DataSource = null;
|
|
//lbProcs.DataSource = _MyApproval.MyProcedures;
|
|
//lbProcs.DisplayMember = "DisplayNumber";
|
|
approvalProcedureBindingSource.DataSource = _MyApproval.MyProcedures;
|
|
approvalProcedureBindingSource.ResetCurrentItem();
|
|
pnlApprove.SendToBack();
|
|
}
|
|
private void UpdateMyApproval()
|
|
{
|
|
if (clbMore.CheckedItems.Count == 0)
|
|
pnlApprove.SendToBack();
|
|
SetupComboBoxes();
|
|
for (int i = 0; i < clbMore.Items.Count; i++)
|
|
{
|
|
string xyz = clbMore.Items[i].ToString();
|
|
ProcedureInfo pi = tmpProcedures[GetDisplayNumberOnly(clbMore.Items[i].ToString())];
|
|
if (clbMore.GetItemChecked(i))
|
|
{
|
|
if (!_MyApproval.ProcedureExists(pi))
|
|
_MyApproval.AddProcedure(pi);
|
|
}
|
|
else
|
|
{
|
|
if (_MyApproval.ProcedureExists(pi))
|
|
_MyApproval.DeleteProcedure(pi);
|
|
}
|
|
}
|
|
SetupMyApproval();
|
|
}
|
|
private void btnCheck_Click(object sender, EventArgs e)
|
|
{
|
|
//if (chkCascade1.Checked || chkCascade2.Checked)
|
|
//{
|
|
// MessageBox.Show("cascade");
|
|
//}
|
|
//else
|
|
//{
|
|
pnlSelect.SendToBack();
|
|
UpdateClbMore();
|
|
//}
|
|
}
|
|
private ItemInfoList _MyItemInfoList;
|
|
private void UpdateClbMore()
|
|
{
|
|
int checkedCount = clbMore.CheckedItems.Count;
|
|
int z = int.Parse("0" + lblPhase.Text);
|
|
z++;
|
|
lblPhase.Text = z.ToString();
|
|
string oldLabel = lblMore.Text;
|
|
pbMore.Visible = true;
|
|
pbMore.Maximum = _MyApproval.MyProcedures.Count;
|
|
ItemInfoList.ConsistencyCheckUpdated += new ItemInfoListCCEvent(ItemInfoList_ConsistencyCheckUpdated);
|
|
List<ProcedureInfo> myProcs = new List<ProcedureInfo>();
|
|
foreach (ApprovalProcedure ap in _MyApproval.MyProcedures)
|
|
myProcs.Add(ap.ProcInfo);
|
|
_MyItemInfoList = ItemInfoList.GetMoreProcedures(myProcs);
|
|
ItemInfoList.ConsistencyCheckUpdated -= new ItemInfoListCCEvent(ItemInfoList_ConsistencyCheckUpdated);
|
|
lblMore.Text = oldLabel;
|
|
pbMore.Visible = false;
|
|
//clbMore.Items.Clear();
|
|
//tmpProcedures.Clear();
|
|
for (int i = 0; i < clbMore.Items.Count; i++)
|
|
{
|
|
string info = clbMore.Items[i].ToString();
|
|
if(info.Contains(" - ("))
|
|
clbMore.Items[i] = info.Substring(0, info.IndexOf(" - ("));
|
|
}
|
|
foreach (ProcedureInfo npi in _MyItemInfoList)
|
|
{
|
|
string info = string.Format(npi.MyDifferenceReasons.StartsWith("No ") ? "{0}" : "{0} - ({1})", npi.DisplayNumber, npi.MyDifferenceReasons);
|
|
//checked list box
|
|
//int k = clbMore.Items.Add(info);
|
|
for (int i = 0; i < clbMore.Items.Count; i++)
|
|
{
|
|
if (clbMore.Items[i].ToString().StartsWith(npi.DisplayNumber))
|
|
{
|
|
clbMore.Items[i] = info;
|
|
tmpProcedures[npi.DisplayNumber] = npi;
|
|
if (chkCascade2.Checked || chkCascadeMore.Checked)
|
|
clbMore.SetItemChecked(i, true);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Application.DoEvents();
|
|
clbMore.Enabled = btnAll.Enabled = btnClear.Enabled = true;
|
|
//if (clbMore.Items.Count == 0)
|
|
//{
|
|
// clbMore.Items.Add("None Found");
|
|
// clbMore.Enabled = btnAll.Enabled = btnClear.Enabled = false;
|
|
//}
|
|
lblMore.Text = string.Format("{0} Procedures, {1} Selected", clbMore.Items.Count, clbMore.CheckedItems.Count);
|
|
btnReportMore.Enabled = true;
|
|
_CheckForMore = true;
|
|
|
|
if (chkCascade2.Checked || chkCascadeMore.Checked)
|
|
{
|
|
if (clbMore.CheckedItems.Count > checkedCount)
|
|
{
|
|
//btnAll_Click(btnAll, new EventArgs());
|
|
UpdateMyApproval();
|
|
UpdateClbMore();
|
|
}
|
|
else
|
|
lblPhase.Text = "";
|
|
}
|
|
}
|
|
void ItemInfoList_ConsistencyCheckUpdated(object sender, ItemInfoListCCEventArgs args)
|
|
{
|
|
if (sender != null)
|
|
{
|
|
pbMore.Value = args.MyCount;
|
|
lblMore.Text = args.MyProcedure.DisplayNumber;
|
|
}
|
|
else
|
|
{
|
|
pbMore.Value = pbMore.Maximum;
|
|
lblMore.Text = "Querying Database";
|
|
}
|
|
Application.DoEvents();
|
|
}
|
|
//private void dtiRevisionDate_ValueChanged(object sender, EventArgs e)
|
|
//{
|
|
// DevComponents.Editors.DateTimeAdv.DateTimeInput dti = sender as DevComponents.Editors.DateTimeAdv.DateTimeInput;
|
|
//}
|
|
private void btnAll_Click(object sender, EventArgs e)
|
|
{
|
|
for (int i = 0; i < clbMore.Items.Count; i++)
|
|
clbMore.SetItemChecked(i, true);
|
|
}
|
|
private void btnClear_Click(object sender, EventArgs e)
|
|
{
|
|
for (int i = 0; i < clbMore.Items.Count; i++)
|
|
clbMore.SetItemChecked(i, false);
|
|
}
|
|
private void btnCancelMore_Click(object sender, EventArgs e)
|
|
{
|
|
if (!_CheckForMore)
|
|
{
|
|
this.Close();
|
|
return;
|
|
}
|
|
//if (_MyApproval.MyProcedures.Count == 1)
|
|
// pnlOne.SendToBack();
|
|
//else
|
|
pnlApprove.SendToBack();
|
|
}
|
|
//private void tsmiRemove_Click(object sender, EventArgs e)
|
|
//{
|
|
// ApprovalProcedure ap = approvalProcedureBindingSource.Current as ApprovalProcedure;
|
|
// _MyApproval.RemoveProcedure(ap.ProcInfo);
|
|
// approvalProcedureBindingSource.DataSource = _MyApproval.MyProcedures;
|
|
// approvalProcedureBindingSource.ResetCurrentItem();
|
|
// //_MyApproval.RemoveProcedure(lbProcs.SelectedItem as ProcedureInfo);
|
|
// //lbProcs.DataSource = null;
|
|
// //lbProcs.DataSource = _MyApproval.MyProcedures;
|
|
// //lbProcs.DisplayMember = "DisplayNumber";
|
|
//}
|
|
private int _LastIndex = -1;
|
|
private void clbMore_MouseMove(object sender, MouseEventArgs e)
|
|
{
|
|
if (_MyApproval.MyProcedures.Count > 0)
|
|
{
|
|
int itemIndex = clbMore.IndexFromPoint(new Point(e.X, e.Y));
|
|
if (itemIndex == -1)
|
|
sttMore.HideTooltip();
|
|
if (itemIndex == _LastIndex)
|
|
return;
|
|
_LastIndex = itemIndex;
|
|
if (itemIndex >= 0)
|
|
{
|
|
if (clbMore.Items[itemIndex] != null)
|
|
{
|
|
SuperTooltipInfo stti = sttMore.GetSuperTooltip(clbMore);
|
|
//string xyz = GetDisplayNumberOnly(clbMore.Items[itemIndex].ToString());
|
|
//string headerText = tmpProcedures[xyz].DisplayNumber;
|
|
//string bodyText = tmpProcedures[xyz].MyDifferencesText;
|
|
stti.HeaderText = tmpProcedures[GetDisplayNumberOnly(clbMore.Items[itemIndex].ToString())].DisplayNumber;
|
|
stti.BodyText = tmpProcedures[GetDisplayNumberOnly(clbMore.Items[itemIndex].ToString())].MyDifferencesText;
|
|
stti.FooterVisible = false;
|
|
using (Graphics g = CreateGraphics())
|
|
{
|
|
SizeF sf = g.MeasureString(stti.BodyText, this.Font);
|
|
stti.CustomSize = new Size(10 + sf.ToSize().Width, 0);
|
|
}
|
|
sttMore.ShowTooltip(sender);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
//sttMore.HideTooltip();
|
|
}
|
|
private string GetDisplayNumberOnly(string s)
|
|
{
|
|
int d = s.IndexOf(" - ");
|
|
if (d > -1)
|
|
s = s.Substring(0, d).Trim();
|
|
return s;
|
|
}
|
|
private void btnCheckMore_Click(object sender, EventArgs e)
|
|
{
|
|
UpdateMyApproval();
|
|
UpdateClbMore();
|
|
}
|
|
private void btnReportMore_Click(object sender, EventArgs e)
|
|
{
|
|
OnConsistencyPrintRequest(new ConsistencyReportArgs(Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MyConsistency.pdf", _MyItemInfoList));
|
|
}
|
|
private void CascadeChecksUpdated(object sender, EventArgs e)
|
|
{
|
|
DevComponents.DotNetBar.Controls.CheckBoxX cb = sender as DevComponents.DotNetBar.Controls.CheckBoxX;
|
|
if (cb != null)
|
|
{
|
|
chkCascade2.Checked = chkCascadeMore.Checked = cb.Checked;
|
|
}
|
|
}
|
|
private void fgProcs_AfterEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
|
{
|
|
ApprovalProcedure ap = approvalProcedureBindingSource.Current as ApprovalProcedure;
|
|
if (e.Col == 1)
|
|
{ //revnumber
|
|
_MyApproval.Refresh();
|
|
approvalInfoBindingSource.ResetBindings(false);
|
|
bool ok = true;
|
|
foreach (ApprovalProcedure app in _MyApproval.MyProcedures)
|
|
{
|
|
ok = ok && !app.RevNumber.Contains(" ?");
|
|
}
|
|
CanApprove = ok;
|
|
}
|
|
if (e.Col == 2)
|
|
{ //revdate
|
|
DateTime dts = DateTime.Parse(fgProcs[e.Row, e.Col].ToString());
|
|
//store mouse row because the popup calendar can goof up the datagrid mouse row
|
|
int fgmr = fgProcs.MouseRow;
|
|
if (e.Row == fgmr && ap.RevDate == dts)
|
|
return;
|
|
if (chkSetAllDates.Checked)
|
|
{
|
|
foreach (ApprovalProcedure app in _MyApproval.MyProcedures)
|
|
{
|
|
app.RevDate = ap.RevDate;
|
|
}
|
|
approvalProcedureBindingSource.ResetBindings(false);
|
|
}
|
|
}
|
|
}
|
|
//private void tsmiAddMore_Click(object sender, EventArgs e)
|
|
//{
|
|
// pnlSelect.SendToBack();
|
|
//}
|
|
private void btnModifyList_Click(object sender, EventArgs e)
|
|
{
|
|
pnlSelect.SendToBack();
|
|
}
|
|
|
|
private void btnIncrement_Click(object sender, EventArgs e)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
string sep = "Procedures that failed to increment\r\n\r\n";
|
|
foreach (ApprovalProcedure ap in _MyApproval.MyProcedures)
|
|
if (!IncrementRev(ap))
|
|
{
|
|
sb.Append(sep + ap.DisplayNumber);
|
|
sep = "\r\n";
|
|
}
|
|
approvalProcedureBindingSource.ResetBindings(false);
|
|
if (sb.Length > 0)
|
|
{
|
|
sb.AppendLine(); sb.AppendLine();
|
|
sb.AppendLine("These will be marked with a question mark.");
|
|
sb.Append("They need to be corrected before Approval can be run.");
|
|
MessageBox.Show(sb.ToString(), "Increment Failures", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
CanApprove = false;
|
|
}
|
|
else
|
|
CanApprove = true;
|
|
}
|
|
private bool IncrementRev(ApprovalProcedure ap)
|
|
{
|
|
bool rv = true;
|
|
if (Regex.IsMatch(ap.RevNumber, "^[0-9]+$"))
|
|
ap.RevNumber = (int.Parse(ap.RevNumber) + 1).ToString();
|
|
else if (Regex.IsMatch(ap.RevNumber, "^[0-9]*[a-yA-Y]+$"))
|
|
{
|
|
char lastCar = ap.RevNumber[ap.RevNumber.Length - 1];
|
|
lastCar++;
|
|
ap.RevNumber = ap.RevNumber.Substring(0, ap.RevNumber.Length - 1) + lastCar.ToString();
|
|
}
|
|
else if (ap.RevNumber == string.Empty)
|
|
ap.RevNumber = "1";
|
|
else if (Regex.IsMatch(ap.RevNumber, "^[0-9.]+[.][0-9]+$"))
|
|
{
|
|
string[] parts = ap.RevNumber.Split(".".ToCharArray());
|
|
string sep = "";
|
|
string lastPart = parts[parts.Length - 1];
|
|
int w = lastPart.Length;
|
|
lastPart = (int.Parse(lastPart) + 1).ToString();
|
|
//if(w > lastPart.Length)
|
|
lastPart = lastPart.PadLeft(w, '0');
|
|
parts[parts.Length - 1] = lastPart;
|
|
StringBuilder sb = new StringBuilder();
|
|
foreach (string part in parts)
|
|
{
|
|
sb.Append(sep + part);
|
|
sep = ".";
|
|
}
|
|
ap.RevNumber = sb.ToString();
|
|
}
|
|
else if (Regex.IsMatch(ap.RevNumber, "[?]$"))
|
|
rv = false; //do nothing
|
|
else
|
|
{
|
|
ap.RevNumber += " ?";
|
|
rv = false;
|
|
}
|
|
return rv;
|
|
}
|
|
}
|
|
public class ApprovalProcedure
|
|
{
|
|
private ProcedureInfo _ProcInfo;
|
|
public ProcedureInfo ProcInfo
|
|
{
|
|
get { return _ProcInfo; }
|
|
set { _ProcInfo = value; }
|
|
}
|
|
private string _RevNumber;
|
|
public string RevNumber
|
|
{
|
|
get { return _RevNumber; }
|
|
set
|
|
{
|
|
if (value.Trim() != _RevNumber)
|
|
{
|
|
_RevNumber = value.Trim();
|
|
//_RevDate = DateTime.Now; // commented out for bug fix B2013-012
|
|
}
|
|
}
|
|
}
|
|
private DateTime _RevDate;
|
|
public DateTime RevDate
|
|
{
|
|
get { return _RevDate; }
|
|
set { _RevDate = value; }
|
|
}
|
|
// added RevNumAndDate to handle the use use of the DoRevDate flag
|
|
// this fixes bug B2013-011 where Today's date would print on the approved procedures (Westinghouse data)
|
|
// instead of the the Revision Date assigned to the procedure.
|
|
public string RevNumAndDate
|
|
{
|
|
get
|
|
{
|
|
if (_ProcInfo.ActiveFormat.PlantFormat.FormatData.PrintData.DoRevDate)
|
|
return RevNumber + "/" + RevDate.ToString("M/d/yyyy");
|
|
else
|
|
return RevNumber;
|
|
}
|
|
}
|
|
public string DisplayNumber
|
|
{
|
|
get { return _ProcInfo.DisplayNumber; }
|
|
}
|
|
public override string ToString()
|
|
{
|
|
return string.Format("{0}\t{1}\t{2:M/d/yyyy}", _ProcInfo.DisplayNumber, _RevNumber, _RevDate);
|
|
}
|
|
public ApprovalProcedure(ProcedureInfo proc)
|
|
{
|
|
proc.ProcedureConfig.SelectedSlave = proc.MyDocVersion.DocVersionConfig.SelectedSlave;
|
|
ProcInfo = proc;
|
|
RevNumber = proc.ProcedureConfig.Print_Rev == string.Empty ? "0" : proc.ProcedureConfig.Print_Rev;
|
|
//AppRevDate Change
|
|
//DateTime revdate;
|
|
string sRevDate = proc.ProcedureConfig.Print_RevDate;
|
|
if (sRevDate == string.Empty)
|
|
sRevDate = DateTime.Now.ToString("M/d/y");
|
|
DateTime revDate;
|
|
if (!DateTime.TryParse(sRevDate, out revDate)) revDate = DateTime.Now;
|
|
RevDate = revDate;
|
|
//RevDate = DateTime.Parse(sRevDate);
|
|
//RevDate = DateTime.Parse(proc.ProcedureConfig.Print_RevDate);
|
|
//if (print_revdate == string.Empty && DateTime.TryParse(RevNumber, out revdate))
|
|
// ;
|
|
//else
|
|
// revdate = DateTime.TryParse(proc.ProcedureConfig.Print_RevDate.Replace("-", "/").Replace("00/", "01/"), out revdate) ? revdate : DateTime.Now;
|
|
//RevDate = revdate;
|
|
}
|
|
}
|
|
public class ApprovalMessageArgs : EventArgs
|
|
{
|
|
public ApprovalMessageArgs(string msg)
|
|
{
|
|
_MyStatus = msg;
|
|
}
|
|
private string _MyStatus;
|
|
public string MyStatus
|
|
{
|
|
get { return _MyStatus; }
|
|
set { _MyStatus = value; }
|
|
}
|
|
}
|
|
public delegate void ApprovalStatusChangeEvent(ApprovalInfo sender, ApprovalMessageArgs e);
|
|
public class ApprovalInfo
|
|
{
|
|
public event ApprovalStatusChangeEvent StatusUpdated;
|
|
public void OnStatusUpdated(ApprovalInfo sender, ApprovalMessageArgs e)
|
|
{
|
|
if (StatusUpdated != null)
|
|
StatusUpdated(sender, e);
|
|
}
|
|
private SessionInfo _MySessionInfo;
|
|
public SessionInfo MySessionInfo
|
|
{
|
|
get { return _MySessionInfo; }
|
|
set { _MySessionInfo = value; }
|
|
}
|
|
private int _RevType;
|
|
public int RevType
|
|
{
|
|
get { return _RevType; }
|
|
set { _RevType = value; }
|
|
}
|
|
private string _RevNumber;
|
|
public string RevNumber
|
|
{
|
|
get { return _RevNumber; }
|
|
set { _RevNumber = value; }
|
|
}
|
|
private Nullable<DateTime> _RevDate;
|
|
public Nullable<DateTime> RevDate
|
|
{
|
|
get { return _RevDate == null ? _RevDate : _RevDate.Value; }
|
|
set { _RevDate = value; }
|
|
}
|
|
private int _RevStage;
|
|
public int RevStage
|
|
{
|
|
get { return _RevStage; }
|
|
set { _RevStage = value; }
|
|
}
|
|
private string _RevNote;
|
|
public string RevNote
|
|
{
|
|
get { return _RevNote; }
|
|
set { _RevNote = value; }
|
|
}
|
|
private bool _ViewPDF;
|
|
public bool ViewPDF
|
|
{
|
|
get { return _ViewPDF; }
|
|
set { _ViewPDF = value; }
|
|
}
|
|
private string _MsgNumber;
|
|
public string MsgNumber
|
|
{
|
|
get { return _MsgNumber; }
|
|
set { _MsgNumber = value; }
|
|
}
|
|
private string _MsgDate;
|
|
public string MsgDate
|
|
{
|
|
get { return _MsgDate; }
|
|
set { _MsgDate = value; }
|
|
}
|
|
private bool _CanIncrement;
|
|
public bool CanIncrement
|
|
{
|
|
get { return _CanIncrement; }
|
|
set { _CanIncrement = value; }
|
|
}
|
|
private List<ApprovalProcedure> _MyProcedures;
|
|
public List<ApprovalProcedure> MyProcedures
|
|
{
|
|
get { return _MyProcedures; }
|
|
//set { _MyProcedures = value; }
|
|
}
|
|
public ApprovalInfo()
|
|
{
|
|
_MyProcedures = new List<ApprovalProcedure>();
|
|
}
|
|
private static string FormatRev(Match m)
|
|
{
|
|
return "".PadLeft(5 - m.Groups[1].Value.Length, '0') + m.Groups[1].Value;
|
|
}
|
|
public void AddProcedure(ProcedureInfo proc)
|
|
{
|
|
ApprovalProcedure ap = new ApprovalProcedure(proc);
|
|
MyProcedures.Add(ap);
|
|
Refresh();
|
|
}
|
|
public void RemoveProcedure(ProcedureInfo pi)
|
|
{
|
|
ApprovalProcedure apr = null;
|
|
foreach (ApprovalProcedure ap in MyProcedures)
|
|
{
|
|
if (ap.ProcInfo == pi)
|
|
{
|
|
apr = ap;
|
|
break;
|
|
}
|
|
}
|
|
MyProcedures.Remove(apr);
|
|
Refresh();
|
|
}
|
|
public bool ProcedureExists(ProcedureInfo pi)
|
|
{
|
|
foreach (ApprovalProcedure pp in MyProcedures)
|
|
{
|
|
if(pp.ProcInfo.ItemID == pi.ItemID)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
public void Refresh()
|
|
{
|
|
bool ok = true;
|
|
int rv = 0;
|
|
foreach (ApprovalProcedure ap in MyProcedures)
|
|
{
|
|
ok = ok && int.TryParse(ap.RevNumber, out rv);
|
|
}
|
|
_CanIncrement = ok;
|
|
//if (MyProcedures.Count == 1)
|
|
//{
|
|
// ProcedureInfo pi = _MyProcedures[0].ProcInfo;
|
|
// RevNumber = pi.ProcedureConfig.Print_Rev == string.Empty ? "0" : pi.ProcedureConfig.Print_Rev;
|
|
// DateTime revdate = pi.ProcedureConfig.Print_RevDate == string.Empty ? DateTime.Now : DateTime.TryParse(pi.ProcedureConfig.Print_RevDate, out revdate) ? revdate : DateTime.Now;
|
|
// RevDate = revdate;
|
|
// RevNote = string.Empty;
|
|
// ViewPDF = false;
|
|
//}
|
|
//else if (MyProcedures.Count > 1)
|
|
//{
|
|
// Regex myRegEx = new Regex("^([0-9]{1,5})");
|
|
// SortedList<string, ProcedureInfo> printRevs = new SortedList<string, ProcedureInfo>();
|
|
// SortedList<string, ProcedureInfo> printRevDates = new SortedList<string, ProcedureInfo>();
|
|
// string printRev = string.Empty;
|
|
// foreach (ApprovalProcedure pi in MyProcedures)
|
|
// {
|
|
// printRev = myRegEx.Replace(pi.RevNumber, new MatchEvaluator(FormatRev));
|
|
// printRev = printRev == string.Empty ? "0" : printRev;
|
|
// if (printRev != string.Empty)
|
|
// if (!printRevs.ContainsKey(printRev))
|
|
// printRevs.Add(printRev, pi.ProcInfo);
|
|
// if (pi.RevDate != null)
|
|
// if (!printRevDates.ContainsKey(pi.RevDate.ToString()))
|
|
// printRevDates.Add(pi.RevDate.ToString(), pi.ProcInfo);
|
|
// }
|
|
// if (printRevs.Count > 1)
|
|
// {
|
|
// ProcedureInfo pi = printRevs[printRevs.Keys[printRevs.Count - 1]];
|
|
// RevNumber = "*";
|
|
// MsgNumber = "Multiple Revision Numbers found. Enter asterisk (*) to use current revision numbers or plus sign (+) to increment revision numbers";
|
|
// }
|
|
// else if (printRevs.Count == 1)
|
|
// {
|
|
// ProcedureInfo pi = printRevs[printRevs.Keys[printRevs.Count - 1]];
|
|
// RevNumber = pi.ProcedureConfig.Print_Rev;
|
|
// MsgNumber = string.Empty;
|
|
// }
|
|
// if (printRevDates.Count > 1)
|
|
// {
|
|
// RevDate = null;
|
|
// MsgDate = "Multiple Revision Dates found. Use current revision dates or manually assign revision date by selecting a date";
|
|
// }
|
|
// else if (printRevDates.Count == 1)
|
|
// {
|
|
// ProcedureInfo pi = printRevDates[printRevDates.Keys[printRevDates.Count - 1]];
|
|
// RevDate = DateTime.Parse(pi.ProcedureConfig.Print_RevDate);
|
|
// MsgDate = string.Empty;
|
|
// }
|
|
// else if (printRevDates.Count == 0)
|
|
// RevDate = DateTime.Now;
|
|
//}
|
|
}
|
|
public void DeleteProcedure(ProcedureInfo pi)
|
|
{
|
|
ApprovalProcedure tpi = null;
|
|
foreach (ApprovalProcedure pii in MyProcedures)
|
|
{
|
|
if (pii.ProcInfo.ItemID == pi.ItemID)
|
|
tpi = pii;
|
|
}
|
|
if (tpi != null)
|
|
{
|
|
MyProcedures.Remove(tpi);
|
|
Refresh();
|
|
}
|
|
}
|
|
public bool CanApprove
|
|
{
|
|
get { return _RevType > 0 && _RevNumber != string.Empty && _RevStage > 0; }
|
|
}
|
|
public int FancyShmancyRevCompare(string s1, string s2)
|
|
{
|
|
if (s1 == s2)
|
|
return 0;
|
|
while (s1 != string.Empty && s2 != string.Empty)
|
|
{
|
|
//look for numbers
|
|
Match m1 = Regex.Match(s1, "^[0-9]+");
|
|
Match m2 = Regex.Match(s2, "^[0-9]+");
|
|
if (m1.Length > 0 && m2.Length > 0)
|
|
{
|
|
int i1 = int.Parse(m1.Value);
|
|
int i2 = int.Parse(m2.Value);
|
|
if (i1 < i2)
|
|
return -1;
|
|
if (i1 > i2)
|
|
return 1;
|
|
s1 = s1.Substring(m1.Length);
|
|
s2 = s2.Substring(m2.Length);
|
|
}
|
|
else
|
|
{
|
|
if (m1.Length > 0)
|
|
return 1;
|
|
if (m2.Length > 0)
|
|
return -1;
|
|
}
|
|
//look for letters
|
|
m1 = Regex.Match(s1, "^[A-Za-z]+");
|
|
m2 = Regex.Match(s2, "^[A-Za-z]+");
|
|
if (m1.Length > 0 && m2.Length > 0)
|
|
{
|
|
if (m1.Length > m2.Length)
|
|
return 1;
|
|
if (m1.Length < m2.Length)
|
|
return -1;
|
|
int c = m1.Value.CompareTo(m2.Value);
|
|
if (c != 0)
|
|
return c;
|
|
s1 = s1.Substring(m1.Length);
|
|
s2 = s2.Substring(m2.Length);
|
|
}
|
|
else
|
|
{
|
|
if (m1.Length > 0)
|
|
return 1;
|
|
if (m2.Length > 0)
|
|
return -1;
|
|
}
|
|
//look for symbols
|
|
m1 = Regex.Match(s1, "^[^0-9A-Za-z]+");
|
|
m2 = Regex.Match(s2, "^[^0-9A-Za-z]+");
|
|
if (m1.Length > 0 && m2.Length > 0)
|
|
{
|
|
int c = m1.Value.CompareTo(m2.Value);
|
|
if (c != 0)
|
|
return c;
|
|
s1 = s1.Substring(m1.Length);
|
|
s2 = s2.Substring(m2.Length);
|
|
}
|
|
else
|
|
{
|
|
if (m1.Length > 0)
|
|
return 1;
|
|
if (m2.Length > 0)
|
|
return -1;
|
|
}
|
|
}
|
|
return s1.CompareTo(s2);
|
|
}
|
|
public bool Approve(Point location)
|
|
{
|
|
ViewPDF = ViewPDF && MyProcedures.Count == 1;
|
|
StringBuilder sb = new StringBuilder();
|
|
StageInfo nsi = StageInfo.Get(RevStage);
|
|
foreach (ApprovalProcedure ap in MyProcedures) //spin thru looking for updating current revision
|
|
{
|
|
//RevisionInfo ric = RevisionInfo.GetCurrentByItemID(ap.ProcInfo.ItemID);
|
|
RevisionInfo ric = ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave > 0 ? RevisionInfo.GetCurrentByItemIDandUnitID(ap.ProcInfo.ItemID,ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave) : RevisionInfo.GetCurrentByItemID(ap.ProcInfo.ItemID);
|
|
if (ric != null)
|
|
{
|
|
VersionInfo vi = ric.LatestVersion;
|
|
if (ap.RevNumber == ric.RevisionNumber && nsi.IsApproved == 0 && vi.MyStage.IsApproved == 1)
|
|
sb.AppendLine(string.Format("{0} - '{1}'", ap.ProcInfo.DisplayNumber, vi.MyStage.Name));
|
|
}
|
|
}
|
|
if (sb.Length > 0)
|
|
{
|
|
sb.Insert(0, string.Format("The following procedures will be reverted to '{0}'\r\n\r\n", nsi.Name));
|
|
sb.AppendLine("\r\nThis will restore change bars and summary of change results!");
|
|
sb.AppendLine("\r\nIf you do not want this to occur, answer No to this dialog \r\nand then change the revision number to create a new revision.");
|
|
sb.Append(string.Format("\r\nAre you sure you want to revert to '{0}'?",nsi.Name));
|
|
if (MessageBox.Show(sb.ToString(),string.Format("Revert to {0}",nsi.Name),MessageBoxButtons.YesNo,MessageBoxIcon.Stop) == DialogResult.No)
|
|
return false;
|
|
}
|
|
foreach (ApprovalProcedure ap in MyProcedures)
|
|
{
|
|
ProcedureInfo pi = ap.ProcInfo;
|
|
OnStatusUpdated(this, new ApprovalMessageArgs(string.Format("Processing {0}", pi.DisplayNumber)));
|
|
string summaryPDF = string.Format(@"{0}\{1} Summary of Changes.pdf", VlnSettings.TemporaryFolder, pi.PDFNumber);
|
|
string pdfTmp = string.Format(@"{0}.pdf", pi.PDFNumber);
|
|
string pdfPath = string.Format(@"{0}\{1}", VlnSettings.TemporaryFolder, pdfTmp);
|
|
if (!TryToDelete(summaryPDF)) break;
|
|
if (!TryToDelete(pdfPath)) break;
|
|
RevisionInfo ric = pi.MyDocVersion.DocVersionConfig.SelectedSlave > 0 ? RevisionInfo.GetCurrentByItemIDandUnitID(pi.ItemID, pi.MyDocVersion.DocVersionConfig.SelectedSlave) : RevisionInfo.GetCurrentByItemID(pi.ItemID);
|
|
// RevisionInfo rip = RevisionInfo.GetPreviousByItemID(pi.ItemID);
|
|
DateTime myDTS = pi.DTS;
|
|
string cbDTS = (pi.MyConfig as ProcedureConfig).Print_ChangeBarDate;
|
|
if ((cbDTS ?? "") != "")
|
|
myDTS = DateTime.Parse(cbDTS);
|
|
if (ric != null && ap.RevNumber == ric.RevisionNumber && ric.LatestVersion.MyStage.IsApproved == 1)
|
|
{
|
|
myDTS = ric.MyConfig.History_StartDate;
|
|
//UpdateProcedureDTS(pi, myDTS);
|
|
}
|
|
if (ric != null && ap.RevNumber != ric.RevisionNumber && ric.LatestVersion.MyStage.IsApproved == 1)
|
|
{
|
|
myDTS = ric.DTS;
|
|
// myDTS = DateTime.Parse(pi.ProcedureConfig.Print_RevDate);
|
|
}
|
|
ContentAuditInfoList cail;
|
|
AnnotationAuditInfoList aail;
|
|
if (pi.MyDocVersion.DocVersionConfig.SelectedSlave > 0)
|
|
{
|
|
pi = ProcedureInfo.GetItemAndChildrenByUnit(pi.ItemID, 0, pi.MyDocVersion.DocVersionConfig.SelectedSlave);
|
|
pi.ChangeBarDate = myDTS;
|
|
cail = ContentAuditInfoList.GetSummaryByUnit(pi.ItemID, pi.ItemID, false, pi.MyDocVersion.DocVersionConfig.SelectedSlave, pi.ChangeBarDate);
|
|
aail = AnnotationAuditInfoList.GetChronologyByUnit(pi.ItemID, pi.ItemID, pi.MyDocVersion.DocVersionConfig.SelectedSlave, pi.ChangeBarDate);
|
|
}
|
|
else
|
|
{
|
|
pi = ProcedureInfo.GetItemAndChildren(pi.ItemID);
|
|
pi.ChangeBarDate = myDTS;
|
|
cail = ContentAuditInfoList.GetSummary(pi.ItemID, pi.ItemID, false, pi.ChangeBarDate);
|
|
aail = AnnotationAuditInfoList.GetChronology(pi.ItemID, pi.ItemID, pi.ChangeBarDate);
|
|
}
|
|
Volian.Print.Library.PDFChronologyReport myChronoRpt = new Volian.Print.Library.PDFChronologyReport(summaryPDF, pi, cail, aail);
|
|
myChronoRpt.BuildSummary(ViewPDF);
|
|
FileInfo pdfFile = new FileInfo(summaryPDF);
|
|
FileStream fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
|
byte[] summaryBuf = new byte[pdfFile.Length];
|
|
fs.Read(summaryBuf, 0, summaryBuf.Length);
|
|
fs.Close();
|
|
Revision revision = null;
|
|
if (ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave > 0)
|
|
{
|
|
revision = Revision.GetByItemIDAndRevisionNumberAndUnitID(pi.ItemID, ap.RevNumber, ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave);
|
|
if (revision == null)
|
|
{
|
|
RevisionConfig cfg = new RevisionConfig();
|
|
cfg.History_StartDate = myDTS; // pi.DTS;
|
|
cfg.Applicability_Index = ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave;
|
|
//cfg.Save();
|
|
revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), DateTime.Now, Volian.Base.Library.VlnSettings.UserID);
|
|
// revision.MyConfig.History_StartDate = pi.DTS;
|
|
// revision.MyConfig.Save();
|
|
// revision = revision.Save();
|
|
}
|
|
else if (revision.Notes != RevNote || revision.RevisionDate != ap.RevDate)
|
|
{
|
|
revision.Notes = RevNote;
|
|
revision.RevisionDate = ap.RevDate;
|
|
revision = revision.Save();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
revision = Revision.GetByItemIDAndRevisionNumber(pi.ItemID, ap.RevNumber);
|
|
if (revision == null)
|
|
{
|
|
RevisionConfig cfg = new RevisionConfig();
|
|
cfg.History_StartDate = pi.DTS;
|
|
//cfg.Save();
|
|
revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), DateTime.Now, Volian.Base.Library.VlnSettings.UserID);
|
|
// revision.MyConfig.History_StartDate = pi.DTS;
|
|
// revision.MyConfig.Save();
|
|
// revision = revision.Save();
|
|
}
|
|
else if (revision.Notes != RevNote || revision.RevisionDate != ap.RevDate)
|
|
{
|
|
revision.Notes = RevNote;
|
|
revision.RevisionDate = ap.RevDate;
|
|
revision = revision.Save();
|
|
}
|
|
}
|
|
DateTime currentDTS = DateTime.Now;
|
|
Check check = Check.MakeCheck(revision, Stage.Get(RevStage), RevisionInfo.BuildRevisionChecks(pi), currentDTS, VlnSettings.UserID);
|
|
//make pdf with promsprinter and get byte stream
|
|
// Moved to end so that Item and Content are saved at the same time
|
|
//UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS);
|
|
string waterMark = Stage.Get(RevStage).IsApproved > 0 ? null : Stage.Get(RevStage).Name;
|
|
//ProcedureInfo myproc = pi;
|
|
//frmPDFStatusForm frm = new frmPDFStatusForm(myproc, ap.RevNumber, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location);
|
|
//myproc.ChangeBarDate = myDTS;
|
|
frmPDFStatusForm frm = new frmPDFStatusForm(pi, ap.RevNumAndDate, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location, pi.MyDocVersion.DocVersionConfig.Print_AddBlankPagesWhenUsingDuplexFoldouts);
|
|
frm.AllowAllWatermarks = true;
|
|
frm.CloseWhenDone = !ViewPDF;
|
|
frm.ShowDialog();
|
|
//if (ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave > 0)
|
|
//{
|
|
// using (ProcedureInfo myproc = ProcedureInfo.GetItemAndChildrenByUnit(pi.ItemID, 0, ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave))
|
|
// {
|
|
// //frmPDFStatusForm frm = new frmPDFStatusForm(myproc, ap.RevNumber, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location);
|
|
// myproc.ChangeBarDate = myDTS;
|
|
// frmPDFStatusForm frm = new frmPDFStatusForm(myproc, ap.RevNumAndDate, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location);
|
|
// frm.AllowAllWatermarks = true;
|
|
// frm.CloseWhenDone = !ViewPDF;
|
|
// frm.ShowDialog();
|
|
// }
|
|
//}
|
|
//else
|
|
//{
|
|
// using (ProcedureInfo myproc = ProcedureInfo.GetItemAndChildren(pi.ItemID))
|
|
// {
|
|
// //frmPDFStatusForm frm = new frmPDFStatusForm(myproc, ap.RevNumber, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location);
|
|
// myproc.ChangeBarDate = myDTS;
|
|
// frmPDFStatusForm frm = new frmPDFStatusForm(myproc, ap.RevNumAndDate, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location);
|
|
// frm.AllowAllWatermarks = true;
|
|
// frm.CloseWhenDone = !ViewPDF;
|
|
// frm.ShowDialog();
|
|
// }
|
|
//}
|
|
pdfFile = new FileInfo(pdfPath);
|
|
fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
|
byte[] buf = new byte[pdfFile.Length];
|
|
fs.Read(buf, 0, buf.Length);
|
|
fs.Close();
|
|
VEPROMS.CSLA.Library.Version version = VEPROMS.CSLA.Library.Version.MakeVersion(revision, Stage.Get(RevStage), buf, summaryBuf, currentDTS, VlnSettings.UserID);
|
|
StageInfo si = StageInfo.Get(RevStage);
|
|
int selectedSlave = pi.MyDocVersion.DocVersionConfig.SelectedSlave;
|
|
pi.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
|
|
if (si.IsApproved == 1)
|
|
UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, DateTime.Now, selectedSlave);
|
|
else
|
|
UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS, selectedSlave);
|
|
//UpdateProcedureDTS(pi, DateTime.Now);
|
|
pi.MyDocVersion.DocVersionConfig.SelectedSlave = selectedSlave;
|
|
}
|
|
return true;
|
|
}
|
|
private bool TryToDelete(string pdfFile)
|
|
{
|
|
int cntr = 0;
|
|
while (File.Exists(pdfFile))
|
|
{
|
|
try
|
|
{
|
|
File.Delete(pdfFile);
|
|
return true;
|
|
}
|
|
catch
|
|
{
|
|
cntr++;
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.AppendLine("Could not create");
|
|
sb.AppendLine();
|
|
sb.AppendLine(pdfFile + ".");
|
|
sb.AppendLine();
|
|
sb.AppendLine("If it is open, close and retry.");
|
|
if (cntr >= 3)
|
|
{
|
|
sb.Insert(0, "PAY ATTENTION!!!\r\n\r\n");
|
|
sb.AppendLine("\r\n\r\nFIRST CLOSE IT, THEN PRESS THE OK BUTTON!!!");
|
|
}
|
|
if(MessageBox.Show(sb.ToString(), "Error on CreatePdf", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
|
|
return false;
|
|
Application.DoEvents();
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private void UpdateProcedureDTS(ProcedureInfo pi, DateTime dts)
|
|
{
|
|
using (Item itm = Item.Get(pi.ItemID))
|
|
{
|
|
itm.DTS = dts;
|
|
itm.Save();
|
|
}
|
|
}
|
|
private void UpdateProcedureConfig(ProcedureInfo procedureInfo, string revNumber, DateTime revDate, DateTime dts, int selectedSlave)
|
|
{
|
|
ProcedureConfig pc = procedureInfo.MyConfig as ProcedureConfig;
|
|
if (pc == null) return;
|
|
pc.SelectedSlave = selectedSlave;
|
|
pc.Print_Rev = revNumber;
|
|
//AppRevDate Change
|
|
pc.Print_RevDate = revDate.ToString("MM/dd/yyyy");
|
|
pc.Print_ChangeBarDate = dts.ToString("MM/dd/yyyy HH:mm:ss");
|
|
using (Item itm = Item.Get(procedureInfo.ItemID))
|
|
{
|
|
itm.MyContent.Config = pc.ToString();
|
|
//itm.DTS = dts;
|
|
itm.UserID = Volian.Base.Library.VlnSettings.UserID;
|
|
itm.Save();
|
|
}
|
|
|
|
}
|
|
}
|
|
public class RevType
|
|
{
|
|
private int _TypeID;
|
|
public int TypeID
|
|
{
|
|
get { return _TypeID; }
|
|
set { _TypeID = value; }
|
|
}
|
|
private string _TypeName;
|
|
public string TypeName
|
|
{
|
|
get { return _TypeName; }
|
|
set { _TypeName = value; }
|
|
}
|
|
public RevType(int i, string s)
|
|
{
|
|
_TypeID = i;
|
|
_TypeName = s;
|
|
}
|
|
}
|
|
public class RevTypes : List<RevType>
|
|
{
|
|
}
|
|
public delegate void DisplayConsistencyReportEvent(object sender, ConsistencyReportArgs args);
|
|
public class ConsistencyReportArgs : EventArgs
|
|
{
|
|
private string _ReportName;
|
|
public string ReportName
|
|
{
|
|
get { return _ReportName; }
|
|
set { _ReportName = value; }
|
|
}
|
|
private ItemInfoList _MyItems;
|
|
public ItemInfoList MyItems
|
|
{
|
|
get { return _MyItems; }
|
|
set { _MyItems = value; }
|
|
}
|
|
public ConsistencyReportArgs(string reportName, ItemInfoList myItems)
|
|
{
|
|
_ReportName = reportName;
|
|
_MyItems = myItems;
|
|
}
|
|
}
|
|
} |