Compare commits
1 Commits
C2025-001
...
C2025-048-
Author | SHA1 | Date | |
---|---|---|---|
f866fea500 |
@@ -735,27 +735,23 @@ namespace RODBInterface
|
||||
else
|
||||
parentValue = nd.InnerText;
|
||||
|
||||
if (parentName != "#whitespace")
|
||||
//applicValues = "";
|
||||
applicValues = string.Format("<APL DefaultVal={0}", parentValue);
|
||||
int pcChildIdx = 0;
|
||||
//C2022-001 only save the child ro value in the RO.FST if it is different than the parent (default) value
|
||||
foreach (string c in pcChildern)
|
||||
{
|
||||
//applicValues = "";
|
||||
applicValues = string.Format("<APL DefaultVal={0}", parentValue);
|
||||
int pcChildIdx = 0;
|
||||
//C2022-001 only save the child ro value in the RO.FST if it is different than the parent (default) value
|
||||
|
||||
foreach (string c in pcChildern)
|
||||
//string csufx = CvtUserFldToFld(c);
|
||||
pcChildIdx++;
|
||||
string csufx = string.Format("_PCCHILD{0}", pcChildIdx);
|
||||
//applicValues += ",";
|
||||
XmlNode cn = elmnode.SelectSingleNode(parentName + csufx);
|
||||
if (cn == null || cn.InnerText.Length == 0) // B2024-004 use Parent value if Child text length is zero
|
||||
applicValues += string.Format(",UnitIdx={0} Value={1}", pcChildIdx, parentValue); // use parent value as default
|
||||
else
|
||||
{
|
||||
//string csufx = CvtUserFldToFld(c);
|
||||
pcChildIdx++;
|
||||
string csufx = string.Format("_PCCHILD{0}", pcChildIdx);
|
||||
//applicValues += ",";
|
||||
XmlNode cn = elmnode.SelectSingleNode(parentName + csufx);
|
||||
if (cn == null || cn.InnerText.Length == 0) // B2024-004 use Parent value if Child text length is zero
|
||||
applicValues += string.Format(",UnitIdx={0} Value={1}", pcChildIdx, parentValue); // use parent value as default
|
||||
else
|
||||
{
|
||||
if (parentValue != cn.InnerText)
|
||||
applicValues += string.Format(",UnitIdx={0} Value={1}", pcChildIdx, cn.InnerText);
|
||||
}
|
||||
if (parentValue != cn.InnerText)
|
||||
applicValues += string.Format(",UnitIdx={0} Value={1}", pcChildIdx, cn.InnerText);
|
||||
}
|
||||
}
|
||||
applicValues += " /APL>";
|
||||
|
@@ -17320,7 +17320,7 @@ GO
|
||||
[RofstID] [int] NOT NULL,
|
||||
[roid] [varchar](50) NOT NULL,
|
||||
[value] [varchar](max) NOT NULL,
|
||||
[AccPageID] [varchar](100) NULL,
|
||||
[AccPageID] [varchar](max) NULL,
|
||||
CONSTRAINT [PK_RofstDefaultValue] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[RofstID] ASC,
|
||||
@@ -18917,10 +18917,9 @@ GO
|
||||
Copyright 2020 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Jake Ropar / Matthew Schill
|
||||
==========================================================================================================
|
||||
Author: Jake Ropar
|
||||
Create Date: 06/23/2022
|
||||
Modify Date: 08/18/2025
|
||||
Description: Finalizes Rofst Header Record / Updates LoadedDate if Success
|
||||
==========================================================================================================
|
||||
*/
|
||||
@@ -18937,18 +18936,13 @@ GO
|
||||
Set LoadedDate = GetDate()
|
||||
Where RofstID = @RofstID;
|
||||
|
||||
|
||||
--always rebuild the rofst child and default indexes
|
||||
DBCC DBREINDEX ('RofstChild');
|
||||
DBCC DBREINDEX ('RofstDefaultValue');
|
||||
|
||||
-- Rebuild/Reorganize Indexes
|
||||
Exec [dbo].[vesp_UtilityCheckIndexes] 20.0, 5.0, 0, 1;
|
||||
|
||||
|
||||
Return;
|
||||
End
|
||||
GO
|
||||
Go
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Error on Creation'
|
||||
@@ -24299,56 +24293,6 @@ Go
|
||||
--- end changes for:
|
||||
---C2025-023 - Electronic Procedures - Modifications to PROMS
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Begin: C2025-045: Improve Performance loading procedures with Alarms
|
||||
==========================================================================================================
|
||||
*/
|
||||
|
||||
IF Exists(SELECT 1 from information_schema.columns where character_maximum_length=-1 and column_name = 'AccPageID' and table_name = 'RofstDefaultValue')
|
||||
Begin
|
||||
ALTER TABLE RofstDefaultValue ALTER COLUMN AccPageID varchar(100)
|
||||
END
|
||||
GO
|
||||
|
||||
IF (@@Error = 0) PRINT 'Updating size of RofstDefaultValue.AccPageID Succeeded'
|
||||
ELSE PRINT 'Updating size of RofstDefaultValue.AccPageID Failed to Execute'
|
||||
GO
|
||||
|
||||
EXEC sp_refreshview [dbo.vwRofstData_RofstDefaultValues]
|
||||
EXEC sp_refreshview [dbo.vwRofstData_RofstBaseRoids]
|
||||
GO
|
||||
|
||||
IF (@@Error = 0) PRINT 'Refreshing views: (vwRofstData_RofstDefaultValues,vwRofstData_RofstBaseRoids) Succeeded'
|
||||
ELSE PRINT 'Refreshing views: (vwRofstData_RofstDefaultValues,vwRofstData_RofstBaseRoids) Failed to Execute'
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_RofstDefaultValue_RofstID_AccPageID')
|
||||
BEGIN
|
||||
CREATE NONCLUSTERED INDEX [IX_RofstDefaultValue_RofstID_AccPageID] ON [dbo].[RofstDefaultValue]
|
||||
(
|
||||
[RofstID] ASC,
|
||||
[AccPageID] ASC
|
||||
)
|
||||
INCLUDE
|
||||
(
|
||||
[roid]
|
||||
,[value]
|
||||
)
|
||||
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
|
||||
END
|
||||
GO
|
||||
|
||||
IF (@@Error = 0) PRINT 'Adding Index IX_RofstDefaultValue_RofstID_AccPageID Succeeded'
|
||||
ELSE PRINT 'Adding Index IX_RofstDefaultValue_RofstID_AccPageID Failed to Execute'
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
End: C2025-045: Improve Performance loading procedures with Alarms
|
||||
==========================================================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
---------------------------------------------------------------------------
|
||||
@@ -24383,8 +24327,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '08/18/2025 2:07 PM'
|
||||
set @RevDescription = 'Updated Index maintenance that occurs after RO FST Load to improve RO Performance'
|
||||
set @RevDate = '08/12/2025 4:12 PM'
|
||||
set @RevDescription = 'Updated Fix Hyphen Characters'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
@@ -111,6 +111,10 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\3rdPartyLibraries\DotNetBar\DotNetBar4.6Build\DevComponents.DotNetBar2.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\3rdPartyLibraries\Ionic\Ionic.Zip.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Itenso.Rtf.Interpreter">
|
||||
<HintPath>..\..\..\..\3rdPartyLibraries\RtfConverter\bin\Debug\Itenso.Rtf.Interpreter.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -129,8 +133,6 @@
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.Runtime.Remoting" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
|
@@ -1309,7 +1309,7 @@ namespace VEPROMS
|
||||
pi.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
|
||||
if (si.IsApproved == 1)
|
||||
{
|
||||
dlgExportImport dlg = new dlgExportImport("Export", pi, MyFrmVEPROMS, (E_UCFImportOptions)0, selectedSlave); // "true tell export to convert ROs and Transitions to text
|
||||
dlgExportImport dlg = new dlgExportImport("Export", pi, MyFrmVEPROMS, (E_UCFImportOptions)0); // "true tell export to convert ROs and Transitions to text
|
||||
dlg.DocReplace = frm.DocReplace; // this tells approval to prepare an export file with resolved transitions and ROs, word sections are saved with resolved ROs during approval PDF creation and saved in DocReplace
|
||||
System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
|
||||
dlg.ExportItem(xd, pi, "procedure");
|
||||
|
@@ -7,7 +7,7 @@ using Volian.Controls.Library;
|
||||
using Volian.Base.Library;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using Ionic.Zip;
|
||||
using System.Text.RegularExpressions;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
@@ -188,13 +188,14 @@ namespace VEPROMS
|
||||
if (MyFolder != null)
|
||||
{
|
||||
sfd.FileName = string.Format("{0}-{1}.expx", Database.ActiveDatabase, MyFolder.Name);
|
||||
if (sfd.ShowDialog(this) == DialogResult.OK && sfd.FileName != string.Empty)
|
||||
{
|
||||
txtExport.Text = sfd.FileName;
|
||||
if (File.Exists(txtExport.Text))
|
||||
File.Delete(txtExport.Text);
|
||||
MyExpZipFileName = txtExport.Text;
|
||||
}
|
||||
if (sfd.ShowDialog(this) == DialogResult.OK && sfd.FileName != string.Empty)
|
||||
{
|
||||
txtExport.Text = sfd.FileName;
|
||||
if (File.Exists(txtExport.Text))
|
||||
File.Delete(txtExport.Text);
|
||||
MyExpxZipFile = new ZipFile(txtExport.Text, Encoding.UTF8);
|
||||
MyExpxZipFile.Save();
|
||||
}
|
||||
}
|
||||
else if (MyProcedure != null)
|
||||
{
|
||||
@@ -210,8 +211,8 @@ namespace VEPROMS
|
||||
else
|
||||
lblExportStatus.Text = "Awaiting Export File Name:";
|
||||
}
|
||||
private string MyExpZipFileName = null;
|
||||
private string MyImpZipFileName = null;
|
||||
private ZipFile MyExpxZipFile = null;
|
||||
private ZipFile MyImpxZipFile = null;
|
||||
private DateTime MyStart;
|
||||
private bool successfullExport = true;
|
||||
|
||||
@@ -891,94 +892,84 @@ namespace VEPROMS
|
||||
}
|
||||
private bool LoadImportDataDocument()
|
||||
{
|
||||
using (FileStream zipToOpen = new FileStream(MyExpZipFileName, FileMode.OpenOrCreate))
|
||||
floatFoldout = new Dictionary<int, int>();
|
||||
ZipEntry ze = MyExpxZipFile[0];
|
||||
string fn = PEIPath + @"\" + ze.FileName;
|
||||
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
|
||||
XmlDocument xd = new XmlDocument();
|
||||
xd.Load(fn);
|
||||
bool didImp = LoadFormats(xd, "folder/formats/format");
|
||||
if (!didImp)
|
||||
{
|
||||
using (ZipArchive MyExpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
|
||||
{
|
||||
floatFoldout = new Dictionary<int, int>();
|
||||
ZipArchiveEntry ze = MyExpxZipFile.Entries[0];
|
||||
if (!Directory.Exists(Path.Combine(PEIPath, "folder")))
|
||||
Directory.CreateDirectory(Path.Combine(PEIPath, "folder"));
|
||||
string fn = Path.Combine(PEIPath, "folder", ze.Name);
|
||||
ze.ExtractToFile(fn, true);
|
||||
XmlDocument xd = new XmlDocument();
|
||||
xd.Load(fn);
|
||||
bool didImp = LoadFormats(xd, "folder/formats/format");
|
||||
if (!didImp)
|
||||
{
|
||||
this.Cursor = Cursors.Default;
|
||||
this.btnImport.Enabled = true; // allow user to select a different export file to import
|
||||
this.btnDoImport.Enabled = true; // allow user to change mind and perform the import
|
||||
return false; // Return False to Indicate that the Import did not succeed
|
||||
}
|
||||
string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText;
|
||||
Folder ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name);
|
||||
if (ff == null)
|
||||
{
|
||||
// C2020-032: Import Procedure set when existing name exists, allow user to import with 'Copy (#) of'.
|
||||
// This is similar functionality to the import of a procedure without the overwrite part.
|
||||
string msg = string.Format("The procedure set you are importing, {0}, already exists.\n\nDo you want to import {0} as a COPY of the existing set?\n\nThis will prefix the name with \"Copy (#) of\"", name);
|
||||
DialogResult dr = MessageBox.Show(this, msg, "Create Copy Of Existing Procedure Set", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop);
|
||||
if (dr == DialogResult.OK)
|
||||
{
|
||||
string number = "";
|
||||
int max = -1;
|
||||
// get maximum number of existing copies.
|
||||
foreach (FolderInfo fi in MyFolder.ChildFolders)
|
||||
{
|
||||
int indx = fi.Name.IndexOf("Copy (");
|
||||
if (indx > -1)
|
||||
{
|
||||
int indxend = fi.Name.IndexOf(")", indx);
|
||||
if (indxend > indx)
|
||||
{
|
||||
string tmp = fi.Name.Substring(indx + 6, indxend - (indx + 6));
|
||||
int ii = Convert.ToInt32(tmp);
|
||||
if (ii > max) max = ii;
|
||||
}
|
||||
}
|
||||
}
|
||||
number = max > -1 ? (max + 1).ToString() : "1";
|
||||
name = string.Format("Copy ({0}) of {1}", number, name);
|
||||
|
||||
ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
_MyNewFolder = FolderInfo.Get(ff.FolderID);
|
||||
AddAnnotationTypes(xd);
|
||||
DocVersionInfo dvi = AddDocVersion(ff, xd);
|
||||
MyDocVersion = dvi;
|
||||
xd = null;
|
||||
lblImportStatus.Text = "Creating Procedures...";
|
||||
Application.DoEvents();
|
||||
ProcedureInfo pi = null;
|
||||
pbImportProcedure.Value = 0;
|
||||
pbImportProcedure.Maximum = MyExpxZipFile.Entries.Count - 1;
|
||||
if (!Directory.Exists(Path.Combine(PEIPath, "procedures")))
|
||||
Directory.CreateDirectory(Path.Combine(PEIPath, "procedures"));
|
||||
for (int i = 1; i < MyExpxZipFile.Entries.Count; i++)
|
||||
{
|
||||
ze = MyExpxZipFile.Entries[i];
|
||||
fn = Path.Combine(PEIPath, "procedures", ze.Name);
|
||||
ze.ExtractToFile(fn, true);
|
||||
xd = new XmlDocument();
|
||||
xd.Load(fn);
|
||||
pi = AddProcedure(xd.DocumentElement, dvi, pi);
|
||||
GC.Collect(); // need to cleanup memory after importing each procedure due to use of Regular Expressions in processing RO and Transition links
|
||||
}
|
||||
DirectoryInfo di = new DirectoryInfo(PEIPath);
|
||||
DirectoryInfo[] dis = di.GetDirectories();
|
||||
for (int d = 0; d < dis.Length; d++)
|
||||
dis[d].Delete(true);
|
||||
lblImportStatus.Text = "Updating Transitions";
|
||||
AddTransitions();
|
||||
FixFloatingFoldouts();
|
||||
SaveTransitionAndItemContentIDs();
|
||||
return true;
|
||||
}
|
||||
this.Cursor = Cursors.Default;
|
||||
this.btnImport.Enabled = true; // allow user to select a different export file to import
|
||||
this.btnDoImport.Enabled = true; // allow user to change mind and perform the import
|
||||
return false; // Return False to Indicate that the Import did not succeed
|
||||
}
|
||||
string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText;
|
||||
Folder ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name);
|
||||
if (ff == null)
|
||||
{
|
||||
// C2020-032: Import Procedure set when existing name exists, allow user to import with 'Copy (#) of'.
|
||||
// This is similar functionality to the import of a procedure without the overwrite part.
|
||||
string msg = string.Format("The procedure set you are importing, {0}, already exists.\n\nDo you want to import {0} as a COPY of the existing set?\n\nThis will prefix the name with \"Copy (#) of\"", name);
|
||||
DialogResult dr = MessageBox.Show(this, msg, "Create Copy Of Existing Procedure Set", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop);
|
||||
if (dr == DialogResult.OK)
|
||||
{
|
||||
string number = "";
|
||||
int max = -1;
|
||||
// get maximum number of existing copies.
|
||||
foreach (FolderInfo fi in MyFolder.ChildFolders)
|
||||
{
|
||||
int indx = fi.Name.IndexOf("Copy (");
|
||||
if (indx > -1)
|
||||
{
|
||||
int indxend = fi.Name.IndexOf(")", indx);
|
||||
if (indxend > indx)
|
||||
{
|
||||
string tmp = fi.Name.Substring(indx + 6, indxend - (indx + 6));
|
||||
int ii = Convert.ToInt32(tmp);
|
||||
if (ii > max) max = ii;
|
||||
}
|
||||
}
|
||||
}
|
||||
number = max > -1 ? (max + 1).ToString() : "1";
|
||||
name = string.Format("Copy ({0}) of {1}", number, name);
|
||||
|
||||
ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
_MyNewFolder = FolderInfo.Get(ff.FolderID);
|
||||
AddAnnotationTypes(xd);
|
||||
DocVersionInfo dvi = AddDocVersion(ff, xd);
|
||||
MyDocVersion = dvi;
|
||||
xd = null;
|
||||
lblImportStatus.Text = "Creating Procedures...";
|
||||
Application.DoEvents();
|
||||
ProcedureInfo pi = null;
|
||||
pbImportProcedure.Value = 0;
|
||||
pbImportProcedure.Maximum = MyExpxZipFile.Entries.Count - 1;
|
||||
for (int i = 1; i < MyExpxZipFile.Entries.Count; i++)
|
||||
{
|
||||
ze = MyExpxZipFile[i];
|
||||
fn = PEIPath + @"\" + ze.FileName;
|
||||
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
|
||||
xd = new XmlDocument();
|
||||
xd.Load(fn);
|
||||
pi = AddProcedure(xd.DocumentElement, dvi, pi);
|
||||
GC.Collect(); // need to cleanup memory after importing each procedure due to use of Regular Expressions in processing RO and Transition links
|
||||
}
|
||||
DirectoryInfo di = new DirectoryInfo(PEIPath);
|
||||
DirectoryInfo[] dis = di.GetDirectories();
|
||||
for (int d = 0; d < dis.Length; d++)
|
||||
dis[d].Delete(true);
|
||||
lblImportStatus.Text = "Updating Transitions";
|
||||
AddTransitions();
|
||||
FixFloatingFoldouts();
|
||||
SaveTransitionAndItemContentIDs();
|
||||
return true;
|
||||
}
|
||||
private void FixSectionStart(ProcedureInfo pi)
|
||||
{
|
||||
@@ -1263,85 +1254,85 @@ namespace VEPROMS
|
||||
// the xml files are then added (or replaced) in the .impx file.
|
||||
private void SaveTransitionAndItemContentIDs()
|
||||
{
|
||||
using (FileStream zipToOpen = new FileStream(MyImpZipFileName, FileMode.OpenOrCreate))
|
||||
XmlDocument xd = new XmlDocument();
|
||||
XmlElement xe = xd.CreateElement("items");
|
||||
xd.AppendChild(xe);
|
||||
string fn = PEIPath + @"\items.xml";
|
||||
foreach (int key in Old2NewItem.Keys)
|
||||
{
|
||||
using (ZipArchive MyImpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
|
||||
xe = xd.CreateElement("item");
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString()));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewItem[key].ToString()));
|
||||
xd.DocumentElement.AppendChild(xe);
|
||||
}
|
||||
xd.Save(fn);
|
||||
ZipEntry ze = MyImpxZipFile["items.xml"];
|
||||
MyImpxZipFile.RemoveEntry(ze);
|
||||
MyImpxZipFile.Save();
|
||||
MyImpxZipFile.AddFile(fn, "");
|
||||
MyImpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("contents");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\contents.xml";
|
||||
foreach (int key in Old2NewContent.Keys)
|
||||
{
|
||||
xe = xd.CreateElement("content");
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString()));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewContent[key].ToString()));
|
||||
xd.DocumentElement.AppendChild(xe);
|
||||
}
|
||||
xd.Save(fn);
|
||||
ze = MyImpxZipFile["contents.xml"];
|
||||
MyImpxZipFile.RemoveEntry(ze);
|
||||
MyImpxZipFile.Save();
|
||||
MyImpxZipFile.AddFile(fn, "");
|
||||
MyImpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("transitions");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\transitions.xml";
|
||||
if (PendingTransitions != null && PendingTransitions.DocumentElement.HasChildNodes)
|
||||
{
|
||||
foreach (XmlNode nd in PendingTransitions.DocumentElement.ChildNodes)
|
||||
{
|
||||
XmlDocument xd = new XmlDocument();
|
||||
XmlElement xe = xd.CreateElement("items");
|
||||
xd.AppendChild(xe);
|
||||
string fn = PEIPath + @"\items.xml";
|
||||
foreach (int key in Old2NewItem.Keys)
|
||||
{
|
||||
xe = xd.CreateElement("item");
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString()));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewItem[key].ToString()));
|
||||
xd.DocumentElement.AppendChild(xe);
|
||||
}
|
||||
xd.Save(fn);
|
||||
ZipArchiveEntry ze = MyImpxZipFile.GetEntry("items.xml");
|
||||
ze.Delete();
|
||||
_ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
|
||||
File.Delete(fn);
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("contents");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\contents.xml";
|
||||
foreach (int key in Old2NewContent.Keys)
|
||||
{
|
||||
xe = xd.CreateElement("content");
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString()));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewContent[key].ToString()));
|
||||
xd.DocumentElement.AppendChild(xe);
|
||||
}
|
||||
xd.Save(fn);
|
||||
ze = MyImpxZipFile.GetEntry("contents.xml");
|
||||
ze.Delete();
|
||||
_ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
|
||||
File.Delete(fn);
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("transitions");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\transitions.xml";
|
||||
if (PendingTransitions != null && PendingTransitions.DocumentElement.HasChildNodes)
|
||||
{
|
||||
foreach (XmlNode nd in PendingTransitions.DocumentElement.ChildNodes)
|
||||
{
|
||||
if (nd.InnerText == "")
|
||||
xd.DocumentElement.AppendChild(xd.ImportNode(nd, true));
|
||||
}
|
||||
}
|
||||
xd.Save(fn);
|
||||
ze = MyImpxZipFile.GetEntry("transitions.xml");
|
||||
ze.Delete();
|
||||
_ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
|
||||
File.Delete(fn);
|
||||
if (nd.InnerText == "")
|
||||
xd.DocumentElement.AppendChild(xd.ImportNode(nd, true));
|
||||
}
|
||||
}
|
||||
xd.Save(fn);
|
||||
ze = MyImpxZipFile["transitions.xml"];
|
||||
MyImpxZipFile.RemoveEntry(ze);
|
||||
MyImpxZipFile.Save();
|
||||
MyImpxZipFile.AddFile(fn, "");
|
||||
MyImpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
}
|
||||
|
||||
// This is called only when we are importing an entire folder and there is a .impx file (a zip file)
|
||||
// the name of the .impx file is based on the folder name containing the export file being imported
|
||||
// This will read in the saved ItemIDs (old and new), ContentIDs (old andnew), library document IDs (old and new), and pending transitions
|
||||
private void ReadTransitionAndItemContentIDs(ZipArchive MyImpxZipFile)
|
||||
private void ReadTransitionAndItemContentIDs()
|
||||
{
|
||||
ZipArchiveEntry ze = MyImpxZipFile.GetEntry("items.xml");
|
||||
ZipEntry ze = MyImpxZipFile["items.xml"];
|
||||
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
|
||||
string fn = PEIPath + @"\items.xml";
|
||||
ze.ExtractToFile(fn, true);
|
||||
XmlDocument xd = new XmlDocument();
|
||||
xd.Load(fn);
|
||||
// B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old item ids
|
||||
File.Delete(fn);
|
||||
ze = MyImpxZipFile.GetEntry("contents.xml");
|
||||
ze = MyImpxZipFile["contents.xml"];
|
||||
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
|
||||
fn = PEIPath + @"\contents.xml";
|
||||
ze.ExtractToFile(fn, true);
|
||||
xd = new XmlDocument();
|
||||
xd.Load(fn);
|
||||
// B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old content ids
|
||||
File.Delete(fn);
|
||||
ze = MyImpxZipFile.GetEntry("libdocs.xml");
|
||||
ze = MyImpxZipFile["libdocs.xml"];
|
||||
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
|
||||
fn = PEIPath + @"\libdocs.xml";
|
||||
ze.ExtractToFile(fn, true);
|
||||
xd = new XmlDocument();
|
||||
xd.Load(fn);
|
||||
XmlNodeList nl = xd.SelectNodes("//libdoc");
|
||||
@@ -1353,9 +1344,9 @@ namespace VEPROMS
|
||||
Old2NewLibDoc.Add(oldid, newid);
|
||||
}
|
||||
File.Delete(fn);
|
||||
ze = MyImpxZipFile.GetEntry("transitions.xml");
|
||||
ze = MyImpxZipFile["transitions.xml"];
|
||||
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
|
||||
fn = PEIPath + @"\transitions.xml";
|
||||
ze.ExtractToFile(fn, true);
|
||||
PendingTransitions.Load(fn);
|
||||
File.Delete(fn);
|
||||
}
|
||||
@@ -1383,53 +1374,53 @@ namespace VEPROMS
|
||||
else
|
||||
dn = fi.Name.Substring(0, fi.Name.IndexOf("."));
|
||||
txtImport.Text = ofd.FileName;
|
||||
MyExpZipFileName = txtImport.Text;
|
||||
string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn);
|
||||
MyImpZipFileName = fn;
|
||||
if (File.Exists(fn))
|
||||
ReadOptions ro = new ReadOptions();
|
||||
ro.Encoding = Encoding.UTF8;
|
||||
MyExpxZipFile = ZipFile.Read(txtImport.Text, ro);
|
||||
string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn);
|
||||
if (File.Exists(fn))
|
||||
{
|
||||
using (ZipArchive MyImpxZipFile = ZipFile.OpenRead(fn))
|
||||
ReadTransitionAndItemContentIDs(MyImpxZipFile);
|
||||
MyImpxZipFile = ZipFile.Read(fn, ro);
|
||||
ReadTransitionAndItemContentIDs();
|
||||
}
|
||||
else
|
||||
{
|
||||
using (FileStream zipToOpen = new FileStream(fn, FileMode.OpenOrCreate))
|
||||
{
|
||||
using (ZipArchive MyImpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
|
||||
{
|
||||
//transitions
|
||||
XmlElement xe = PendingTransitions.CreateElement("transitions");
|
||||
PendingTransitions.AppendChild(xe);
|
||||
fn = PEIPath + @"\transitions.xml";
|
||||
PendingTransitions.Save(fn);
|
||||
_ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
|
||||
File.Delete(fn);
|
||||
//itemids
|
||||
XmlDocument xd = new XmlDocument();
|
||||
xe = xd.CreateElement("items");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\items.xml";
|
||||
xd.Save(fn);
|
||||
_ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
|
||||
File.Delete(fn);
|
||||
//contentids
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("contents");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\contents.xml";
|
||||
xd.Save(fn);
|
||||
_ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
|
||||
File.Delete(fn);
|
||||
//libdocids
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("libdocs");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\libdocs.xml";
|
||||
xd.Save(fn);
|
||||
_ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
|
||||
File.Delete(fn);
|
||||
}
|
||||
}
|
||||
MyImpxZipFile = new ZipFile(fn, Encoding.UTF8);
|
||||
//transitions
|
||||
XmlElement xe = PendingTransitions.CreateElement("transitions");
|
||||
PendingTransitions.AppendChild(xe);
|
||||
fn = PEIPath + @"\transitions.xml";
|
||||
PendingTransitions.Save(fn);
|
||||
MyImpxZipFile.AddFile(fn, "");
|
||||
MyImpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
//itemids
|
||||
XmlDocument xd = new XmlDocument();
|
||||
xe = xd.CreateElement("items");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\items.xml";
|
||||
xd.Save(fn);
|
||||
MyImpxZipFile.AddFile(fn, "");
|
||||
MyImpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
//contentids
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("contents");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\contents.xml";
|
||||
xd.Save(fn);
|
||||
MyImpxZipFile.AddFile(fn, "");
|
||||
MyImpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
//libdocids
|
||||
xd = new XmlDocument();
|
||||
xe = xd.CreateElement("libdocs");
|
||||
xd.AppendChild(xe);
|
||||
fn = PEIPath + @"\libdocs.xml";
|
||||
xd.Save(fn);
|
||||
MyImpxZipFile.AddFile(fn, "");
|
||||
MyImpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
}
|
||||
}
|
||||
if (MyDocVersion != null)
|
||||
@@ -1604,31 +1595,27 @@ namespace VEPROMS
|
||||
ExportAssociation(xe, ai, "association");
|
||||
string fn = PEIPath + @"\folder.xml";
|
||||
xn.OwnerDocument.Save(fn);
|
||||
using (FileStream zipToOpen = new FileStream(MyExpZipFileName, FileMode.OpenOrCreate))
|
||||
MyExpxZipFile.AddFile(fn, "folder");
|
||||
MyExpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
//here
|
||||
lblExportStatus.Text = "Exporting Procedures...";
|
||||
Application.DoEvents();
|
||||
if (dvi.Procedures.Count > 0)
|
||||
{
|
||||
using (ZipArchive MyExpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
|
||||
{
|
||||
_ = MyExpxZipFile.CreateEntryFromFile(fn, $"folder/{Path.GetFileName(fn)}");
|
||||
pbExportProcedure.Value = 0;
|
||||
pbExportProcedure.Maximum = dvi.Procedures.Count;
|
||||
lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures";
|
||||
foreach (ItemInfo ii in dvi.Procedures)
|
||||
{
|
||||
XmlDocument xd = new XmlDocument();
|
||||
ExportItem(xd, ii, "procedure");
|
||||
fn = string.Format(@"{0}\proc{1}.xml", PEIPath, pbExportProcedure.Value.ToString().PadLeft(4, '0'));
|
||||
xd.Save(fn);
|
||||
MyExpxZipFile.AddFile(fn, "procedures");
|
||||
MyExpxZipFile.Save();
|
||||
File.Delete(fn);
|
||||
//here
|
||||
lblExportStatus.Text = "Exporting Procedures...";
|
||||
Application.DoEvents();
|
||||
if (dvi.Procedures.Count > 0)
|
||||
{
|
||||
pbExportProcedure.Value = 0;
|
||||
pbExportProcedure.Maximum = dvi.Procedures.Count;
|
||||
lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures";
|
||||
foreach (ItemInfo ii in dvi.Procedures)
|
||||
{
|
||||
XmlDocument xd = new XmlDocument();
|
||||
ExportItem(xd, ii, "procedure");
|
||||
fn = string.Format(@"{0}\proc{1}.xml", PEIPath, pbExportProcedure.Value.ToString().PadLeft(4, '0'));
|
||||
xd.Save(fn);
|
||||
_ = MyExpxZipFile.CreateEntryFromFile(fn, $"procedures/{Path.GetFileName(fn)}");
|
||||
File.Delete(fn);
|
||||
xd = null;
|
||||
}
|
||||
}
|
||||
xd = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1852,14 +1839,12 @@ namespace VEPROMS
|
||||
//and handled/overridden in dlgExportEP.cs
|
||||
}
|
||||
|
||||
protected virtual void SetEPEnhancedDocLinks(ref XmlElement xe, ItemInfo ii)
|
||||
protected virtual void SetROLocation(ref XmlElement xindivid, ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti)
|
||||
{
|
||||
//do nothing - this will be for Electronic procedures only
|
||||
//and handled/overridden in dlgExportEP.cs
|
||||
}
|
||||
|
||||
|
||||
protected virtual void SetROLocation(ref XmlElement xindivid, ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti)
|
||||
protected virtual void SetEPEnhancedDocLinks(ref XmlElement xe, ItemInfo ii)
|
||||
{
|
||||
//do nothing - this will be for Electronic procedures only
|
||||
//and handled/overridden in dlgExportEP.cs
|
||||
|
@@ -1603,7 +1603,7 @@ namespace VEPROMS
|
||||
{
|
||||
using (DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi))
|
||||
{
|
||||
prnDlg.OverwritePDF = false; // turn off overwriting of PDFs C2025-048.
|
||||
prnDlg.OverwritePDF = false; // turn off overwriting of PDFs B2025-041
|
||||
prnDlg.SelectedSlave = pi.ProcedureConfig.SelectedSlave == 0 ? -1 : pi.ProcedureConfig.SelectedSlave; //added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit
|
||||
prnDlg.MySessionInfo = MySessionInfo;
|
||||
prnDlg.SetupForProcedure(); // Setup filename
|
||||
|
@@ -839,7 +839,7 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
using (SqlCommand cmd = cn.CreateCommand())
|
||||
{
|
||||
cmd.CommandTimeout = 0;
|
||||
cmd.CommandTimeout = Database.DefaultTimeout;
|
||||
cmd.CommandType = CommandType.StoredProcedure;
|
||||
cmd.CommandText = "vesp_RofstHeaderFinalizeLoad";
|
||||
|
||||
|
Reference in New Issue
Block a user