Compare commits

...

8 Commits

6 changed files with 257 additions and 233 deletions

View File

@@ -735,23 +735,27 @@ namespace RODBInterface
else else
parentValue = nd.InnerText; parentValue = nd.InnerText;
//applicValues = ""; if (parentName != "#whitespace")
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); //applicValues = "";
pcChildIdx++; applicValues = string.Format("<APL DefaultVal={0}", parentValue);
string csufx = string.Format("_PCCHILD{0}", pcChildIdx); int pcChildIdx = 0;
//applicValues += ","; //C2022-001 only save the child ro value in the RO.FST if it is different than the parent (default) value
XmlNode cn = elmnode.SelectSingleNode(parentName + csufx);
if (cn == null || cn.InnerText.Length == 0) // B2024-004 use Parent value if Child text length is zero foreach (string c in pcChildern)
applicValues += string.Format(",UnitIdx={0} Value={1}", pcChildIdx, parentValue); // use parent value as default
else
{ {
if (parentValue != cn.InnerText) //string csufx = CvtUserFldToFld(c);
applicValues += string.Format(",UnitIdx={0} Value={1}", pcChildIdx, cn.InnerText); 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);
}
} }
} }
applicValues += " /APL>"; applicValues += " /APL>";

View File

@@ -18917,9 +18917,10 @@ GO
Copyright 2020 - Volian Enterprises, Inc. All rights reserved. Copyright 2020 - Volian Enterprises, Inc. All rights reserved.
*****************************************************************************/ *****************************************************************************/
/* /*
========================================================================================================== ==========================================================================================================
Author: Jake Ropar Author: Jake Ropar / Matthew Schill
Create Date: 06/23/2022 Create Date: 06/23/2022
Modify Date: 08/18/2025
Description: Finalizes Rofst Header Record / Updates LoadedDate if Success Description: Finalizes Rofst Header Record / Updates LoadedDate if Success
========================================================================================================== ==========================================================================================================
*/ */
@@ -18936,13 +18937,18 @@ GO
Set LoadedDate = GetDate() Set LoadedDate = GetDate()
Where RofstID = @RofstID; Where RofstID = @RofstID;
--always rebuild the rofst child and default indexes
DBCC DBREINDEX ('RofstChild');
DBCC DBREINDEX ('RofstDefaultValue');
-- Rebuild/Reorganize Indexes -- Rebuild/Reorganize Indexes
Exec [dbo].[vesp_UtilityCheckIndexes] 20.0, 5.0, 0, 1; Exec [dbo].[vesp_UtilityCheckIndexes] 20.0, 5.0, 0, 1;
Return; Return;
End End
Go GO
IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Succeeded' IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Succeeded'
ELSE PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Error on Creation' ELSE PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Error on Creation'
@@ -24377,8 +24383,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255) DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255) DECLARE @RevDescription varchar(255)
set @RevDate = '08/13/2025 8:07 AM' set @RevDate = '08/18/2025 2:07 PM'
set @RevDescription = 'Improve Performance loading procedures with Alarms' set @RevDescription = 'Updated Index maintenance that occurs after RO FST Load to improve RO Performance'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription

View File

@@ -111,10 +111,6 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\3rdPartyLibraries\DotNetBar\DotNetBar4.6Build\DevComponents.DotNetBar2.dll</HintPath> <HintPath>..\..\..\..\3rdPartyLibraries\DotNetBar\DotNetBar4.6Build\DevComponents.DotNetBar2.dll</HintPath>
</Reference> </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"> <Reference Include="Itenso.Rtf.Interpreter">
<HintPath>..\..\..\..\3rdPartyLibraries\RtfConverter\bin\Debug\Itenso.Rtf.Interpreter.dll</HintPath> <HintPath>..\..\..\..\3rdPartyLibraries\RtfConverter\bin\Debug\Itenso.Rtf.Interpreter.dll</HintPath>
</Reference> </Reference>
@@ -133,6 +129,8 @@
<Reference Include="System.Deployment" /> <Reference Include="System.Deployment" />
<Reference Include="System.Design" /> <Reference Include="System.Design" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Runtime.Remoting" /> <Reference Include="System.Runtime.Remoting" />
<Reference Include="System.Web" /> <Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" /> <Reference Include="System.Web.Extensions" />

View File

@@ -7,7 +7,7 @@ using Volian.Controls.Library;
using Volian.Base.Library; using Volian.Base.Library;
using System.Xml; using System.Xml;
using System.IO; using System.IO;
using Ionic.Zip; using System.IO.Compression;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using JR.Utils.GUI.Forms; using JR.Utils.GUI.Forms;
using System.Linq; using System.Linq;
@@ -188,14 +188,13 @@ namespace VEPROMS
if (MyFolder != null) if (MyFolder != null)
{ {
sfd.FileName = string.Format("{0}-{1}.expx", Database.ActiveDatabase, MyFolder.Name); sfd.FileName = string.Format("{0}-{1}.expx", Database.ActiveDatabase, MyFolder.Name);
if (sfd.ShowDialog(this) == DialogResult.OK && sfd.FileName != string.Empty) if (sfd.ShowDialog(this) == DialogResult.OK && sfd.FileName != string.Empty)
{ {
txtExport.Text = sfd.FileName; txtExport.Text = sfd.FileName;
if (File.Exists(txtExport.Text)) if (File.Exists(txtExport.Text))
File.Delete(txtExport.Text); File.Delete(txtExport.Text);
MyExpxZipFile = new ZipFile(txtExport.Text, Encoding.UTF8); MyExpZipFileName = txtExport.Text;
MyExpxZipFile.Save(); }
}
} }
else if (MyProcedure != null) else if (MyProcedure != null)
{ {
@@ -211,8 +210,8 @@ namespace VEPROMS
else else
lblExportStatus.Text = "Awaiting Export File Name:"; lblExportStatus.Text = "Awaiting Export File Name:";
} }
private ZipFile MyExpxZipFile = null; private string MyExpZipFileName = null;
private ZipFile MyImpxZipFile = null; private string MyImpZipFileName = null;
private DateTime MyStart; private DateTime MyStart;
private bool successfullExport = true; private bool successfullExport = true;
@@ -892,84 +891,94 @@ namespace VEPROMS
} }
private bool LoadImportDataDocument() private bool LoadImportDataDocument()
{ {
floatFoldout = new Dictionary<int, int>(); using (FileStream zipToOpen = new FileStream(MyExpZipFileName, FileMode.OpenOrCreate))
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)
{ {
this.Cursor = Cursors.Default; using (ZipArchive MyExpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
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 = ""; floatFoldout = new Dictionary<int, int>();
int max = -1; ZipArchiveEntry ze = MyExpxZipFile.Entries[0];
// get maximum number of existing copies. if (!Directory.Exists(Path.Combine(PEIPath, "folder")))
foreach (FolderInfo fi in MyFolder.ChildFolders) 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)
{ {
int indx = fi.Name.IndexOf("Copy ("); this.Cursor = Cursors.Default;
if (indx > -1) 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
int indxend = fi.Name.IndexOf(")", indx); return false; // Return False to Indicate that the Import did not succeed
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"; string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText;
name = string.Format("Copy ({0}) of {1}", number, name); 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); 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;
} }
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) private void FixSectionStart(ProcedureInfo pi)
{ {
@@ -1254,85 +1263,85 @@ namespace VEPROMS
// the xml files are then added (or replaced) in the .impx file. // the xml files are then added (or replaced) in the .impx file.
private void SaveTransitionAndItemContentIDs() private void SaveTransitionAndItemContentIDs()
{ {
XmlDocument xd = new XmlDocument(); using (FileStream zipToOpen = new FileStream(MyImpZipFileName, FileMode.OpenOrCreate))
XmlElement xe = xd.CreateElement("items");
xd.AppendChild(xe);
string fn = PEIPath + @"\items.xml";
foreach (int key in Old2NewItem.Keys)
{ {
xe = xd.CreateElement("item"); using (ZipArchive MyImpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
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)
{ {
if (nd.InnerText == "") XmlDocument xd = new XmlDocument();
xd.DocumentElement.AppendChild(xd.ImportNode(nd, true)); 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);
} }
} }
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) // 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 // 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 // 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() private void ReadTransitionAndItemContentIDs(ZipArchive MyImpxZipFile)
{ {
ZipEntry ze = MyImpxZipFile["items.xml"]; ZipArchiveEntry ze = MyImpxZipFile.GetEntry("items.xml");
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
string fn = PEIPath + @"\items.xml"; string fn = PEIPath + @"\items.xml";
ze.ExtractToFile(fn, true);
XmlDocument xd = new XmlDocument(); XmlDocument xd = new XmlDocument();
xd.Load(fn); xd.Load(fn);
// B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old item ids // B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old item ids
File.Delete(fn); File.Delete(fn);
ze = MyImpxZipFile["contents.xml"]; ze = MyImpxZipFile.GetEntry("contents.xml");
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
fn = PEIPath + @"\contents.xml"; fn = PEIPath + @"\contents.xml";
ze.ExtractToFile(fn, true);
xd = new XmlDocument(); xd = new XmlDocument();
xd.Load(fn); xd.Load(fn);
// B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old content ids // B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old content ids
File.Delete(fn); File.Delete(fn);
ze = MyImpxZipFile["libdocs.xml"]; ze = MyImpxZipFile.GetEntry("libdocs.xml");
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
fn = PEIPath + @"\libdocs.xml"; fn = PEIPath + @"\libdocs.xml";
ze.ExtractToFile(fn, true);
xd = new XmlDocument(); xd = new XmlDocument();
xd.Load(fn); xd.Load(fn);
XmlNodeList nl = xd.SelectNodes("//libdoc"); XmlNodeList nl = xd.SelectNodes("//libdoc");
@@ -1344,9 +1353,9 @@ namespace VEPROMS
Old2NewLibDoc.Add(oldid, newid); Old2NewLibDoc.Add(oldid, newid);
} }
File.Delete(fn); File.Delete(fn);
ze = MyImpxZipFile["transitions.xml"]; ze = MyImpxZipFile.GetEntry("transitions.xml");
ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
fn = PEIPath + @"\transitions.xml"; fn = PEIPath + @"\transitions.xml";
ze.ExtractToFile(fn, true);
PendingTransitions.Load(fn); PendingTransitions.Load(fn);
File.Delete(fn); File.Delete(fn);
} }
@@ -1374,53 +1383,53 @@ namespace VEPROMS
else else
dn = fi.Name.Substring(0, fi.Name.IndexOf(".")); dn = fi.Name.Substring(0, fi.Name.IndexOf("."));
txtImport.Text = ofd.FileName; txtImport.Text = ofd.FileName;
ReadOptions ro = new ReadOptions(); MyExpZipFileName = txtImport.Text;
ro.Encoding = Encoding.UTF8; string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn);
MyExpxZipFile = ZipFile.Read(txtImport.Text, ro); MyImpZipFileName = fn;
string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn); if (File.Exists(fn))
if (File.Exists(fn))
{ {
MyImpxZipFile = ZipFile.Read(fn, ro); using (ZipArchive MyImpxZipFile = ZipFile.OpenRead(fn))
ReadTransitionAndItemContentIDs(); ReadTransitionAndItemContentIDs(MyImpxZipFile);
} }
else else
{ {
MyImpxZipFile = new ZipFile(fn, Encoding.UTF8); using (FileStream zipToOpen = new FileStream(fn, FileMode.OpenOrCreate))
//transitions {
XmlElement xe = PendingTransitions.CreateElement("transitions"); using (ZipArchive MyImpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
PendingTransitions.AppendChild(xe); {
fn = PEIPath + @"\transitions.xml"; //transitions
PendingTransitions.Save(fn); XmlElement xe = PendingTransitions.CreateElement("transitions");
MyImpxZipFile.AddFile(fn, ""); PendingTransitions.AppendChild(xe);
MyImpxZipFile.Save(); fn = PEIPath + @"\transitions.xml";
File.Delete(fn); PendingTransitions.Save(fn);
//itemids _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
XmlDocument xd = new XmlDocument(); File.Delete(fn);
xe = xd.CreateElement("items"); //itemids
xd.AppendChild(xe); XmlDocument xd = new XmlDocument();
fn = PEIPath + @"\items.xml"; xe = xd.CreateElement("items");
xd.Save(fn); xd.AppendChild(xe);
MyImpxZipFile.AddFile(fn, ""); fn = PEIPath + @"\items.xml";
MyImpxZipFile.Save(); xd.Save(fn);
File.Delete(fn); _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
//contentids File.Delete(fn);
xd = new XmlDocument(); //contentids
xe = xd.CreateElement("contents"); xd = new XmlDocument();
xd.AppendChild(xe); xe = xd.CreateElement("contents");
fn = PEIPath + @"\contents.xml"; xd.AppendChild(xe);
xd.Save(fn); fn = PEIPath + @"\contents.xml";
MyImpxZipFile.AddFile(fn, ""); xd.Save(fn);
MyImpxZipFile.Save(); _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
File.Delete(fn); File.Delete(fn);
//libdocids //libdocids
xd = new XmlDocument(); xd = new XmlDocument();
xe = xd.CreateElement("libdocs"); xe = xd.CreateElement("libdocs");
xd.AppendChild(xe); xd.AppendChild(xe);
fn = PEIPath + @"\libdocs.xml"; fn = PEIPath + @"\libdocs.xml";
xd.Save(fn); xd.Save(fn);
MyImpxZipFile.AddFile(fn, ""); _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn));
MyImpxZipFile.Save(); File.Delete(fn);
File.Delete(fn); }
}
} }
} }
if (MyDocVersion != null) if (MyDocVersion != null)
@@ -1595,27 +1604,31 @@ namespace VEPROMS
ExportAssociation(xe, ai, "association"); ExportAssociation(xe, ai, "association");
string fn = PEIPath + @"\folder.xml"; string fn = PEIPath + @"\folder.xml";
xn.OwnerDocument.Save(fn); xn.OwnerDocument.Save(fn);
MyExpxZipFile.AddFile(fn, "folder"); using (FileStream zipToOpen = new FileStream(MyExpZipFileName, FileMode.OpenOrCreate))
MyExpxZipFile.Save();
File.Delete(fn);
//here
lblExportStatus.Text = "Exporting Procedures...";
Application.DoEvents();
if (dvi.Procedures.Count > 0)
{ {
pbExportProcedure.Value = 0; using (ZipArchive MyExpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
pbExportProcedure.Maximum = dvi.Procedures.Count; {
lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures"; _ = MyExpxZipFile.CreateEntryFromFile(fn, $"folder/{Path.GetFileName(fn)}");
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); File.Delete(fn);
xd = null; //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;
}
}
} }
} }
} }
@@ -1839,12 +1852,14 @@ namespace VEPROMS
//and handled/overridden in dlgExportEP.cs //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 //do nothing - this will be for Electronic procedures only
//and handled/overridden in dlgExportEP.cs //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 //do nothing - this will be for Electronic procedures only
//and handled/overridden in dlgExportEP.cs //and handled/overridden in dlgExportEP.cs

View File

@@ -1245,6 +1245,7 @@ namespace VEPROMS
using (DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi)) using (DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi))
{ {
prnDlg.OverwritePDF = false; // turn off overwriting of PDFs B2025-041
prnDlg.SelectedSlave = args.UnitIndex; prnDlg.SelectedSlave = args.UnitIndex;
prnDlg.MySessionInfo = MySessionInfo; prnDlg.MySessionInfo = MySessionInfo;
prnDlg.SetupForProcedure(); // Setup filename prnDlg.SetupForProcedure(); // Setup filename
@@ -1602,7 +1603,7 @@ namespace VEPROMS
{ {
using (DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi)) using (DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi))
{ {
prnDlg.OverwritePDF = false; // turn off overwriting of PDFs. prnDlg.OverwritePDF = false; // turn off overwriting of PDFs C2025-048.
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.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.MySessionInfo = MySessionInfo;
prnDlg.SetupForProcedure(); // Setup filename prnDlg.SetupForProcedure(); // Setup filename

View File

@@ -839,7 +839,7 @@ namespace VEPROMS.CSLA.Library
{ {
using (SqlCommand cmd = cn.CreateCommand()) using (SqlCommand cmd = cn.CreateCommand())
{ {
cmd.CommandTimeout = Database.DefaultTimeout; cmd.CommandTimeout = 0;
cmd.CommandType = CommandType.StoredProcedure; cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "vesp_RofstHeaderFinalizeLoad"; cmd.CommandText = "vesp_RofstHeaderFinalizeLoad";