C2025-051 Add a "General Tools" option to the V->Proms Menu.
This commit is contained in:
436
PROMS/VEPROMS User Interface/frmGenTools.cs
Normal file
436
PROMS/VEPROMS User Interface/frmGenTools.cs
Normal file
@@ -0,0 +1,436 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using System.IO;
|
||||
using Volian.Controls.Library;
|
||||
using DevComponents.DotNetBar;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
|
||||
namespace VEPROMS
|
||||
{
|
||||
public partial class frmGenTools : Form
|
||||
{
|
||||
private SessionInfo _MySessionInfo;
|
||||
public SessionInfo MySessionInfo
|
||||
{
|
||||
get { return _MySessionInfo; }
|
||||
set { _MySessionInfo = value; }
|
||||
}
|
||||
|
||||
public frmGenTools(SessionInfo sessionInfo, frmVEPROMS veProms)
|
||||
{
|
||||
InitializeComponent();
|
||||
_MySessionInfo = sessionInfo;
|
||||
|
||||
// When opening General tools Check tab will be default.
|
||||
this.sideNavItmCheck.Checked = true;
|
||||
|
||||
setupProgessSteps1(); // C2017-030 - new Tools user interface
|
||||
|
||||
}
|
||||
|
||||
private void frmGenTools_Load(object sender, EventArgs e)
|
||||
{
|
||||
IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
}
|
||||
private bool IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
private void frmGenTools_FormClosing(object sender, EventArgs e)
|
||||
{
|
||||
IsClosing = true;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// tool renamed to Identify Orphan Items
|
||||
private void IdentifyDisconnectedItems()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Orphan Items");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
int rowCount = ESP_IdentifyDisconnectedItems.Execute("vesp_GetDisconnectedItemsCount");
|
||||
txtProcess.AppendText(string.Format("Orphan Items Count: {0}", rowCount));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (rowCount > 0)
|
||||
{
|
||||
txtResults.AppendText(string.Format("The database contains {0} Orphan items.", rowCount));
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText("These can be removed via the Remove Orphan Data Records in the Repair tools");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
else
|
||||
{
|
||||
txtResults.AppendText("No Orphan Records Found");// B2017-108 Always output results even if there isn't any
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// is one of two tools run from Check Obsolete RO Data
|
||||
private void IdentifyUnusedRoFstsAndFigures()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Unused RoFsts and Figures");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
int rowCountRoFst = ESP_GetUnusedRoFsts.Execute("vesp_GetUnusedRoFstsCount");
|
||||
int rowCountFigures = ESP_GetUnusedFigures.Execute("vesp_GetUnusedFiguresCount");
|
||||
txtProcess.AppendText(string.Format("Unused RoFsts Count: {0}, Unused Figures Count: {1}", rowCountRoFst, rowCountFigures));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (rowCountRoFst > 0 || rowCountFigures > 0)
|
||||
{
|
||||
txtResults.AppendText(string.Format("The database contains {0} unused RoFsts.", rowCountRoFst));
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(string.Format("The database contains {0} unused Figures items.", rowCountFigures));
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
else
|
||||
{
|
||||
txtResults.AppendText("No Unused RoFsts or Figures Found"); // B2017-108 Always output results even if there isn't any
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// is one of two tools run from Check Obsolete RO Data
|
||||
private void IdentifyROAssociations()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Unused RO Associations");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
int rowCount = ESP_GetROAssoc.Execute("vesp_GetUnusedROAssociationsCount");
|
||||
txtProcess.AppendText(string.Format("Unused RO Associations Count: {0}", rowCount));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (rowCount > 0)
|
||||
{
|
||||
txtResults.AppendText(string.Format("The database contains {0} unused RO Associations.", rowCount));
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
else
|
||||
{
|
||||
txtResults.AppendText("No unused RO Associations Found");// B2017-108 Always output results even if there isn't any
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// tool was renamed to Hidden Data Locations (on Check list)
|
||||
private void IdentifyNonEditableItems()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Hidden Item Locations");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
List<ItemInfo> myItems = ESP_IdentifyNonEditableItems.Execute("vesp_GetNonEditableItems");
|
||||
txtProcess.AppendText(string.Format("Hidden Items Count: {0}", myItems.Count));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (myItems.Count > 0)
|
||||
{
|
||||
txtResults.AppendText("The following items are hidden (non-editable)...");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
foreach (ItemInfo ii in myItems)
|
||||
{
|
||||
txtResults.AppendText(ii.Path);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
else
|
||||
{
|
||||
txtResults.AppendText("No Hidden Data Found");// B2017-108 Always output results even if there isn't any
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
//C2025-011 RO Update Tool Memory Enhancements
|
||||
//clear the list since no longer using it
|
||||
myItems.Clear();
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// tool was renamed to Show Users
|
||||
private void GetDatabaseSessions()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Show Users in PROMS");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
txtResults.Clear();
|
||||
txtResults.AppendText(ESP_GetDatabaseSessions.Execute("vesp_GetDatabaseSessions"));
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
MessageBox.Show("Show Users Completed", "Show Users");
|
||||
}
|
||||
|
||||
public List<string> roFstInfo_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args)
|
||||
{
|
||||
return VlnFlexGrid.ROTableUpdate(sender, args);
|
||||
}
|
||||
|
||||
private void btnClear_Click(object sender, EventArgs e)
|
||||
{
|
||||
txtResults.Clear();
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.DefaultExt = "txt";
|
||||
sfd.AddExtension = true;
|
||||
sfd.Filter = "Text Files (*.txt)|*.txt";
|
||||
sfd.FileName = string.Format("BatchRefreshResults_{0}", DateTime.Now.ToString("yyyyMMdd_HHmm"));
|
||||
sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS";
|
||||
DialogResult dr = sfd.ShowDialog();
|
||||
|
||||
if (dr == DialogResult.OK)
|
||||
{
|
||||
System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName);
|
||||
sw.Write(txtResults.Text);
|
||||
sw.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private ProgressBarItem _ProgressBar = null;
|
||||
|
||||
public ProgressBarItem ProgressBar
|
||||
{
|
||||
get { return _ProgressBar; }
|
||||
set
|
||||
{
|
||||
_ProgressBar = value;
|
||||
_ProgressBar.TextVisible = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void chkLater_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
pnlLater.Enabled = chkLater.Checked;
|
||||
}
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private void sideNavItmCheck_Click(object sender, EventArgs e)
|
||||
{
|
||||
GenToolType = E_GenToolType.Check;
|
||||
lblAdmToolProgressType.Text = "Checking:";
|
||||
setupProgessSteps1();
|
||||
}
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private void sideNavItmUsers_Click(object sender, EventArgs e)
|
||||
{
|
||||
GenToolType = E_GenToolType.Users;
|
||||
setupProgessSteps1();
|
||||
}
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private void sideNavItmExit_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
#region On/Off Swiches
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private enum E_GenToolType : int
|
||||
{
|
||||
Check = 0,
|
||||
Users = 3
|
||||
};
|
||||
private E_GenToolType GenToolType = 0;
|
||||
|
||||
DevComponents.DotNetBar.StepItem siOrphDatRecs = new DevComponents.DotNetBar.StepItem("siOrphDatRecs", "Orphan Data Records");
|
||||
DevComponents.DotNetBar.StepItem siHiddenDataLocs = new DevComponents.DotNetBar.StepItem("siHiddenDataLocs", "Hidden Data");
|
||||
DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data");
|
||||
|
||||
// this will update/rebuild the progress bar in the bottom panel of Tools
|
||||
private void setupProgessSteps1()
|
||||
{
|
||||
progressSteps1.Visible = false;
|
||||
progressSteps1.Items.Clear();
|
||||
|
||||
switch (GenToolType)
|
||||
{
|
||||
case E_GenToolType.Check:
|
||||
if (swCkOrphanDataRecs.Value)
|
||||
progressSteps1.Items.Add(siOrphDatRecs);
|
||||
if (swHiddenDataLocs.Value)
|
||||
progressSteps1.Items.Add(siHiddenDataLocs);
|
||||
if (swCkObsoleteROData.Value)
|
||||
progressSteps1.Items.Add(siObsoleteROData);
|
||||
splitContainer3.Panel2Collapsed = false;
|
||||
progressSteps1.Visible = true;
|
||||
progressSteps1.Refresh();
|
||||
break;
|
||||
|
||||
case E_GenToolType.Users:
|
||||
splitContainer3.Panel2Collapsed = true;
|
||||
progressSteps1.Visible = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// used for all of the Switch buttons (ON/OFF buttons)
|
||||
private void swCk_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
setupProgessSteps1();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// C2017-030 New Tools user interface
|
||||
// functions to handle the progress bar in the bottom panel of Tools
|
||||
private void StepProgress(int prgStpIdx, int val)
|
||||
{
|
||||
((DevComponents.DotNetBar.StepItem)progressSteps1.Items[prgStpIdx]).Value = val;
|
||||
}
|
||||
|
||||
private void ClearStepProgress()
|
||||
{
|
||||
for (int i = 0; i < progressSteps1.Items.Count; i++)
|
||||
{
|
||||
((DevComponents.DotNetBar.StepItem)progressSteps1.Items[i]).Value = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// C2017-030 New Tools user interface
|
||||
// button clicks for processing selected tools
|
||||
//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
private bool CheckProcessLater() // see if we should delay processing until later
|
||||
{
|
||||
if (chkLater.Checked)
|
||||
{
|
||||
long later = long.Parse(dtpDate.Value.ToString("yyyyMMdd") + dtpTime.Value.ToString("HHmm"));
|
||||
long now = long.Parse(DateTime.Now.ToString("yyyyMMddHHmm"));
|
||||
|
||||
while (now < later)
|
||||
{
|
||||
txtProcess.Clear();
|
||||
txtProcess.AppendText("Waiting...");
|
||||
System.Threading.Thread.Sleep(1000);//Check each second
|
||||
if (IsClosing) return false;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
Application.DoEvents();// Allow user interface to react
|
||||
now = long.Parse(DateTime.Now.ToString("yyyyMMddHHmm"));
|
||||
}
|
||||
}
|
||||
|
||||
return true;// Close after complete
|
||||
}
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private void btn_ShowUsers_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
|
||||
txtProcess.Clear();
|
||||
txtResults.Clear();
|
||||
|
||||
GetDatabaseSessions();
|
||||
}
|
||||
|
||||
private void btnRunCheck_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
|
||||
int prgStpIdx = -1;
|
||||
txtResults.Clear();
|
||||
txtProcess.Clear();
|
||||
|
||||
if (swCkOrphanDataRecs.Value)
|
||||
{
|
||||
StepProgress(++prgStpIdx, 50);
|
||||
IdentifyDisconnectedItems(); // orphan items
|
||||
StepProgress(prgStpIdx, 100);
|
||||
}
|
||||
|
||||
if (swHiddenDataLocs.Value)
|
||||
{
|
||||
StepProgress(++prgStpIdx, 50);
|
||||
IdentifyNonEditableItems(); // hidden items
|
||||
StepProgress(prgStpIdx, 100);
|
||||
}
|
||||
|
||||
if (swCkObsoleteROData.Value)
|
||||
{
|
||||
StepProgress(++prgStpIdx, 25);
|
||||
IdentifyROAssociations();
|
||||
StepProgress(prgStpIdx, 50);
|
||||
IdentifyUnusedRoFstsAndFigures();
|
||||
StepProgress(prgStpIdx, 100);
|
||||
}
|
||||
|
||||
MessageBox.Show("Check Functions Completed", "Check");
|
||||
|
||||
ClearStepProgress();
|
||||
}
|
||||
|
||||
//C2025-011 RO Update Tool Memory Enhancements
|
||||
private void txtProcess_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
//clears the stack to help with memory - should never need to undo text changes to this.
|
||||
txtProcess.ClearUndo();
|
||||
}
|
||||
|
||||
private void txtResults_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
//clears the stack to help with memory - should never need to undo text changes to this.
|
||||
txtResults.ClearUndo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user