Procedure History and related DB changes, version 1.6.146.

This commit is contained in:
Milan Hanajik 2015-11-26 23:51:49 +01:00
parent 3bb8cb2ab7
commit 893b7af55a
17 changed files with 260 additions and 117 deletions

View File

@ -246,7 +246,7 @@ namespace ResultsBrowser
if (LocalSettings.LastProcedureName != null)
{
IList<Entities.Procedure> listOfProcedures = FluentCommon.CreateSession(Database.Procedures)
.CreateQuery("FROM Procedure WHERE Name = :procName")
.CreateQuery("FROM Procedure WHERE ProcedureState = 'Active' AND Name = :procName")
.SetParameter("procName", LocalSettings.LastProcedureName)
.List<Entities.Procedure>();

View File

@ -1,10 +1,12 @@
iPerl:
- menej logovania vah MettlerToledo
- naukaldat process data pre UnknownPcbNr... vodomery
- vyuzit sirku obrazovky na Activity, Progress bar, Drop down menu
- log pre pevny start, podobne (zarazky) ako pre letmy
- 'Q2 corrected from ...' Evaluate a Publish parametre
- STOP nefunguje vzdy (alebo pomaly) - zlepsit uzivatelsky dojem
- zapamatat si sirku stlpcov v okne Procedures
- vyuzit sirku obrazovky na Activity, Progress bar, Drop down menu
- v iPerlCommunication ponukat stringy v drop-down menu
- na Process obrazovke posunut stupacku a rezervoar uplne doprava

View File

@ -338,7 +338,7 @@ namespace TBF.BenchControl
if (loadPathsOnly) return;
IList<Entities.Procedure> selectedProcs = session
.CreateQuery("FROM Procedure WHERE Name = :name")
.CreateQuery("FROM Procedure WHERE ProcedureState = 'Active' AND Name = :name")
.SetParameter("name", TBF.UiBridge.Bridge.SelectedProcedureName)
.List<Entities.Procedure>();

View File

@ -6,6 +6,14 @@ using System.Collections.Generic;
namespace TBF.Entities
{
public enum ProcedureState
{
Active,
History,
Template,
Count,
}
/// <summary>
/// Kind of meters for the procedure / test
/// </summary>

View File

@ -15,13 +15,20 @@ namespace TBF.Entities
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
public virtual string Name { get; set; }
public virtual MetersKind MetersKind { get; set; }
public virtual string Description { get; set; } /// Short description
public virtual string CreationUser { get; set; } /// Name of the user who has created or changed this procedure
public virtual DateTime CreationTime { get; set; } /// Date and time of the creation or change
public virtual string LastChgUser { get; set; } /// Name of the user who has created or changed this procedure
public virtual DateTime LastChgTime { get; set; } /// Date and time of the creation or change
public virtual string LongDescription { get; set; } /// Long description (notes)
public virtual ProcedureState ProcedureState { get; set; }
public virtual int Revision { get; set; }
public virtual int PredecessorId { get; set; }
public virtual bool ObtainedByCopy { get; set; }
///
public virtual MetersKind MetersKind { get; set; }
public virtual string Watermeters { get; set; } /// Water meter name or Id
public virtual string ProtocolTitle { get; set; } /// Title of the printed and saved protocol
@ -74,6 +81,10 @@ namespace TBF.Entities
result.LastChgUser = LastChgUser;
result.LastChgTime = LastChgTime;
result.LongDescription = LongDescription;
result.ProcedureState = ProcedureState.Active;
result.PredecessorId = Id;
result.Watermeters = Watermeters;
result.DataEntry = DataEntry;
result.ResultsPrinter = ResultsPrinter;

View File

@ -115,6 +115,7 @@ namespace TBF
public int MetrologyDlgWidth;
public int MetrologyDlgHeight;
/// Procedures
public int ProceduresDlgLeft;
public int ProceduresDlgTop;
@ -132,10 +133,15 @@ namespace TBF
public int OneProcedureDlgWidth;
public int OneProcedureDlgHeight;
/// OneProcedure
public int PrintOrderLeft;
public int PrintOrderTop;
[XmlArrayAttribute("HistoryColumnWidths")]
public int[] HistoryColumnWidths;
[XmlIgnore]
public int HistoryColumnCount { get { return (HistoryColumnWidths != null) ? HistoryColumnWidths.Length : 0; } }
/// Serial numbers
public string[] LastSNTexts;
[XmlIgnore]

View File

@ -349,7 +349,7 @@ namespace TBF
string oriProcName = procedureComboBox.Text;
IList<Procedure> procedures = FluentCommon.CreateSession(Database.Procedures)
.CreateQuery("FROM Procedure ORDER BY ItemNr")
.CreateQuery("FROM Procedure WHERE ProcedureState = 'Active' ORDER BY ItemNr")
.List<Procedure>();
procedureComboBox.Items.Clear();
@ -526,7 +526,7 @@ namespace TBF
}
IList<Procedure> procedure = session
.CreateQuery("FROM Procedure WHERE Name = :procedureName")
.CreateQuery("FROM Procedure WHERE ProcedureState = 'Active' AND Name = :procedureName")
.SetParameter("procedureName", testResults[0].ProcedureName)
.List<Procedure>();

View File

@ -13,13 +13,20 @@ namespace TBF.Mappings
Id(x => x.Id);
Map(x => x.ItemNr);
Map(x => x.Name);
Map(x => x.MetersKind);
Map(x => x.Description);
Map(x => x.CreationUser);
Map(x => x.CreationTime);
Map(x => x.LastChgUser);
Map(x => x.LastChgTime);
Map(x => x.LongDescription);
Map(x => x.ProcedureState);
Map(x => x.Revision);
Map(x => x.PredecessorId);
Map(x => x.ObtainedByCopy);
Map(x => x.MetersKind);
Map(x => x.Watermeters);
Map(x => x.ProtocolTitle);
Map(x => x.DataEntry);

View File

@ -35,6 +35,8 @@ namespace TBF
this.mainSplitContainer = new System.Windows.Forms.SplitContainer();
this.tabControl = new System.Windows.Forms.TabControl();
this.generalTabPage = new System.Windows.Forms.TabPage();
this.protocolTitleTextBox = new System.Windows.Forms.TextBox();
this.protocolTitleLabel = new System.Windows.Forms.Label();
this.metersKindRadioButton2 = new System.Windows.Forms.RadioButton();
this.metersKindRadioButton1 = new System.Windows.Forms.RadioButton();
this.transitionEndComboBox = new System.Windows.Forms.ComboBox();
@ -65,9 +67,6 @@ namespace TBF
this.label1 = new System.Windows.Forms.Label();
this.historyTabPage = new System.Windows.Forms.TabPage();
this.historyListViewEx = new TBF.UiControls.ListViewEx();
this.changedByClmnHdr = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.dateClmnHdr = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.descriptionClmnHdr = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.metrology1TabPage = new System.Windows.Forms.TabPage();
this.metrology1ListViewEx = new TBF.UiControls.ListViewEx();
this.metrology2TabPage = new System.Windows.Forms.TabPage();
@ -77,8 +76,6 @@ namespace TBF
this.parametersTabPage = new System.Windows.Forms.TabPage();
this.parametersListViewEx = new TBF.UiControls.ListViewEx();
this.sharedButtons = new TBF.UiControls.SharedButtons();
this.protocolTitleTextBox = new System.Windows.Forms.TextBox();
this.protocolTitleLabel = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.mainSplitContainer)).BeginInit();
this.mainSplitContainer.Panel1.SuspendLayout();
this.mainSplitContainer.Panel2.SuspendLayout();
@ -156,6 +153,17 @@ namespace TBF
this.generalTabPage.ToolTipText = global::TBF.Resources.Strings.String1;
this.generalTabPage.UseVisualStyleBackColor = true;
//
// protocolTitleTextBox
//
resources.ApplyResources(this.protocolTitleTextBox, "protocolTitleTextBox");
this.protocolTitleTextBox.Name = "protocolTitleTextBox";
//
// protocolTitleLabel
//
resources.ApplyResources(this.protocolTitleLabel, "protocolTitleLabel");
this.protocolTitleLabel.ImageKey = global::TBF.Resources.Strings.String1;
this.protocolTitleLabel.Name = "protocolTitleLabel";
//
// metersKindRadioButton2
//
resources.ApplyResources(this.metersKindRadioButton2, "metersKindRadioButton2");
@ -329,10 +337,6 @@ namespace TBF
// historyListViewEx
//
this.historyListViewEx.AllowColumnReorder = true;
this.historyListViewEx.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.changedByClmnHdr,
this.dateClmnHdr,
this.descriptionClmnHdr});
resources.ApplyResources(this.historyListViewEx, "historyListViewEx");
this.historyListViewEx.DoubleClickActivation = false;
this.historyListViewEx.FullRowSelect = true;
@ -341,18 +345,6 @@ namespace TBF
this.historyListViewEx.UseCompatibleStateImageBehavior = false;
this.historyListViewEx.View = System.Windows.Forms.View.Details;
//
// changedByClmnHdr
//
resources.ApplyResources(this.changedByClmnHdr, "changedByClmnHdr");
//
// dateClmnHdr
//
resources.ApplyResources(this.dateClmnHdr, "dateClmnHdr");
//
// descriptionClmnHdr
//
resources.ApplyResources(this.descriptionClmnHdr, "descriptionClmnHdr");
//
// metrology1TabPage
//
this.metrology1TabPage.Controls.Add(this.metrology1ListViewEx);
@ -435,17 +427,6 @@ namespace TBF
resources.ApplyResources(this.sharedButtons, "sharedButtons");
this.sharedButtons.Name = "sharedButtons";
//
// protocolTitleTextBox
//
resources.ApplyResources(this.protocolTitleTextBox, "protocolTitleTextBox");
this.protocolTitleTextBox.Name = "protocolTitleTextBox";
//
// protocolTitleLabel
//
resources.ApplyResources(this.protocolTitleLabel, "protocolTitleLabel");
this.protocolTitleLabel.ImageKey = global::TBF.Resources.Strings.String1;
this.protocolTitleLabel.Name = "protocolTitleLabel";
//
// ProcedureDlg
//
resources.ApplyResources(this, "$this");
@ -475,9 +456,6 @@ namespace TBF
private System.Windows.Forms.TabControl tabControl;
private System.Windows.Forms.TabPage historyTabPage;
private UiControls.ListViewEx historyListViewEx;
private System.Windows.Forms.ColumnHeader changedByClmnHdr;
private System.Windows.Forms.ColumnHeader dateClmnHdr;
private System.Windows.Forms.ColumnHeader descriptionClmnHdr;
private System.Windows.Forms.TabPage metrology1TabPage;
private UiControls.ListViewEx metrology1ListViewEx;
private System.Windows.Forms.TabPage metrology2TabPage;
@ -518,6 +496,5 @@ namespace TBF
private UiControls.ListViewEx parametersListViewEx;
private System.Windows.Forms.TextBox protocolTitleTextBox;
private System.Windows.Forms.Label protocolTitleLabel;
}
}

View File

@ -258,6 +258,8 @@ namespace TBF
Left = (ls.OneProcedureDlgLeft != 0) ? ls.OneProcedureDlgLeft : 150;
Top = (ls.OneProcedureDlgTop != 0) ? ls.OneProcedureDlgTop : 150;
InitializeHistoryTab(); /// Create ListViewEx columns for 'History of changes'
/// Create LisViewEx columns and edit controls for 'Metrology1', 'Metrology2' and 'Process' tabs
PrepareMetrology12AndProcessTabs();
@ -290,6 +292,7 @@ namespace TBF
{
ctrl.Initialize();
}
RefreshAllTabs();
}
@ -371,6 +374,73 @@ namespace TBF
#endregion
#region History
void InitializeHistoryTab()
{
TBF.LocalSettings ls = Program.LocalSettings;
historyListViewEx.Columns.Add(Strings.Name, (ls.HistoryColumnCount > 0) ? ls.HistoryColumnWidths[0] : 80);
historyListViewEx.Columns.Add(Strings.Revision, (ls.HistoryColumnCount > 0) ? ls.HistoryColumnWidths[0] : 80);
historyListViewEx.Columns.Add(Strings.Date_and_time_, (ls.HistoryColumnCount > 1) ? ls.HistoryColumnWidths[1] : 120);
historyListViewEx.Columns.Add(Strings.User_, (ls.HistoryColumnCount > 2) ? ls.HistoryColumnWidths[2] : 55);
historyListViewEx.Columns.Add(Strings.DescriptionColHdr, (ls.HistoryColumnCount > 3) ? ls.HistoryColumnWidths[3] : 300);
RefreshHistoryTab();
}
void RefreshHistoryTab()
{
NHibernate.ISession session = FluentCommon.CreateSession(Database.Procedures);
IList<Entities.Procedure> procedures = session
.CreateQuery("FROM Procedure WHERE ProcedureState = 'History'")
.List<Entities.Procedure>();
int predecessorId = LoadedProcedure.PredecessorId;
IList<Entities.Procedure> oneProcedure = session
.CreateQuery(string.Format("FROM Procedure WHERE ProcedureState = 'Active' AND Id = {0}", predecessorId))
.List<Entities.Procedure>();
if (oneProcedure.Count == 1)
{
predecessorId = oneProcedure[0].PredecessorId;
}
else
{
return;
}
while (predecessorId != 0)
{
bool found = false;
foreach (var p in procedures)
{
if (p.Id == predecessorId)
{
found = true;
ListViewItem item = new ListViewItem(p.Name);
item.SubItems.Add(p.Revision.ToString());
item.SubItems.Add(p.LastChgTime.ToShortDateString());
item.SubItems.Add(p.LastChgUser.ToString());
item.SubItems.Add(p.Description);
historyListViewEx.Items.Add(item);
predecessorId = p.PredecessorId; /// Iterate
break;
}
}
if (!found) break;
}
}
void UpdateFromHistoryTab()
{
// Do nothing
}
#endregion
#region Metrology1, Metrology2, Process, and Parameters
void PrepareMetrology12AndProcessTabs()

View File

@ -930,21 +930,6 @@
<data name="&gt;&gt;generalTabPage.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="changedByClmnHdr.Text" xml:space="preserve">
<value>Changed by</value>
</data>
<data name="changedByClmnHdr.Width" type="System.Int32, mscorlib">
<value>80</value>
</data>
<data name="dateClmnHdr.Text" xml:space="preserve">
<value>Date</value>
</data>
<data name="descriptionClmnHdr.Text" xml:space="preserve">
<value>Description</value>
</data>
<data name="descriptionClmnHdr.Width" type="System.Int32, mscorlib">
<value>400</value>
</data>
<data name="historyListViewEx.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@ -961,7 +946,7 @@
<value>historyListViewEx</value>
</data>
<data name="&gt;&gt;historyListViewEx.Type" xml:space="preserve">
<value>TBF.UiControls.ListViewEx, TBF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>TBF.UiControls.ListViewEx, TBF, Version=1.5.146.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;historyListViewEx.Parent" xml:space="preserve">
<value>historyTabPage</value>
@ -1012,7 +997,7 @@
<value>metrology1ListViewEx</value>
</data>
<data name="&gt;&gt;metrology1ListViewEx.Type" xml:space="preserve">
<value>TBF.UiControls.ListViewEx, TBF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>TBF.UiControls.ListViewEx, TBF, Version=1.5.146.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;metrology1ListViewEx.Parent" xml:space="preserve">
<value>metrology1TabPage</value>
@ -1063,7 +1048,7 @@
<value>metrology2ListViewEx</value>
</data>
<data name="&gt;&gt;metrology2ListViewEx.Type" xml:space="preserve">
<value>TBF.UiControls.ListViewEx, TBF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>TBF.UiControls.ListViewEx, TBF, Version=1.5.146.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;metrology2ListViewEx.Parent" xml:space="preserve">
<value>metrology2TabPage</value>
@ -1114,7 +1099,7 @@
<value>processListViewEx</value>
</data>
<data name="&gt;&gt;processListViewEx.Type" xml:space="preserve">
<value>TBF.UiControls.ListViewEx, TBF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>TBF.UiControls.ListViewEx, TBF, Version=1.5.146.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;processListViewEx.Parent" xml:space="preserve">
<value>processTabPage</value>
@ -1165,7 +1150,7 @@
<value>parametersListViewEx</value>
</data>
<data name="&gt;&gt;parametersListViewEx.Type" xml:space="preserve">
<value>TBF.UiControls.ListViewEx, TBF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>TBF.UiControls.ListViewEx, TBF, Version=1.5.146.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;parametersListViewEx.Parent" xml:space="preserve">
<value>parametersTabPage</value>
@ -1249,7 +1234,7 @@
<value>sharedButtons</value>
</data>
<data name="&gt;&gt;sharedButtons.Type" xml:space="preserve">
<value>TBF.UiControls.SharedButtons, TBF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>TBF.UiControls.SharedButtons, TBF, Version=1.5.146.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;sharedButtons.Parent" xml:space="preserve">
<value>mainSplitContainer.Panel2</value>
@ -1305,24 +1290,6 @@
<data name="$this.Text" xml:space="preserve">
<value>Procedure</value>
</data>
<data name="&gt;&gt;changedByClmnHdr.Name" xml:space="preserve">
<value>changedByClmnHdr</value>
</data>
<data name="&gt;&gt;changedByClmnHdr.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;dateClmnHdr.Name" xml:space="preserve">
<value>dateClmnHdr</value>
</data>
<data name="&gt;&gt;dateClmnHdr.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;descriptionClmnHdr.Name" xml:space="preserve">
<value>descriptionClmnHdr</value>
</data>
<data name="&gt;&gt;descriptionClmnHdr.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ProcedureDlg</value>
</data>

View File

@ -294,7 +294,7 @@ namespace TBF
if (LocalSettings.LastProcedureName != null)
{
IList<Entities.Procedure> listOfProcedures = FluentCommon.CreateSession(Database.Procedures)
.CreateQuery("FROM Procedure WHERE Name = :procName")
.CreateQuery("FROM Procedure WHERE ProcedureState = 'Active' AND Name = :procName")
.SetParameter("procName", LocalSettings.LastProcedureName)
.List<Entities.Procedure>();

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.5.145.1")]
[assembly: AssemblyFileVersion("1.5.145.1")]
[assembly: AssemblyVersion("1.6.146.1")]
[assembly: AssemblyFileVersion("1.6.146.1")]

View File

@ -1851,6 +1851,24 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Procedure {0} added..
/// </summary>
internal static string Procedure_0_added {
get {
return ResourceManager.GetString("Procedure_0_added", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Procedure {0} modified..
/// </summary>
internal static string Procedure_0_modified {
get {
return ResourceManager.GetString("Procedure_0_modified", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Procedures.
/// </summary>
@ -2247,6 +2265,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Revision.
/// </summary>
internal static string Revision {
get {
return ResourceManager.GetString("Revision", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to ROI Detection in Progress.
/// </summary>

View File

@ -1153,4 +1153,13 @@
<data name="RetryBtnText" xml:space="preserve">
<value>Retry</value>
</data>
<data name="Procedure_0_added" xml:space="preserve">
<value>Procedure {0} added.</value>
</data>
<data name="Procedure_0_modified" xml:space="preserve">
<value>Procedure {0} modified.</value>
</data>
<data name="Revision" xml:space="preserve">
<value>Revision</value>
</data>
</root>

View File

@ -114,7 +114,7 @@ namespace TBF.UiControls
string oriTestName = testComboBox.Text;
IList<Procedure> procedures = FluentCommon.CreateSession(Database.Procedures)
.CreateQuery("FROM Procedure WHERE Name = :name")
.CreateQuery("FROM Procedure WHERE ProcedureState = 'Active' AND Name = :name")
.SetParameter("name", Program.MainWnd.ProcedureName)
.List<Procedure>();

View File

@ -67,7 +67,7 @@ namespace TBF.UiControls
{
/// Load the procedures
session = FluentCommon.CreateSession(Database.Procedures);
MyItems = session.CreateQuery("FROM Procedure ORDER BY ItemNr")
MyItems = session.CreateQuery("FROM Procedure WHERE ProcedureState = 'Active' ORDER BY ItemNr")
.List<Entities.Procedure>();
base.RedrawAll();
@ -110,8 +110,10 @@ namespace TBF.UiControls
{
FluentCommon.DeleteFromDb(session, entity);
}
int itemNr = 0;
foreach (var entity in MyItems)
{
(entity as Entities.Procedure).ItemNr = itemNr++;
FluentCommon.SaveToDb(session, entity);
}
@ -138,7 +140,42 @@ namespace TBF.UiControls
if (notUsed) break;
}
base.AddOne(new Entities.Procedure(newName, MyItems.Count + 1));
Entities.Procedure newProcedure = new Entities.Procedure(newName, MyItems.Count);
newProcedure.ProcedureState = Entities.ProcedureState.Active;
newProcedure.Revision = 1;
newProcedure.PredecessorId = 0;
newProcedure.ObtainedByCopy = false;
newProcedure.CreationUser = Entities.User.CurrentUser.Name;
newProcedure.CreationTime = DateTime.Now;
if (new ProcedureDlg(newProcedure).ShowDialog() == DialogResult.OK)
{
/// TODO: Make name uniqueness test
parent.Unlock();
using(var transaction = session.BeginTransaction())
{
try
{
newProcedure.LastChgUser = Entities.User.CurrentUser.Name;
newProcedure.LastChgTime = DateTime.Now;
base.AddOne(newProcedure);
session.SaveOrUpdate(newProcedure);
transaction.Commit();
MessageBox.Show(string.Format(Strings.Procedure_0_added, newProcedure.Name),
Strings.Confirmation,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
catch (Exception exc)
{
transaction.Rollback();
}
}
session.Flush();
}
}
public new void RemoveSelected()
@ -153,38 +190,43 @@ namespace TBF.UiControls
public void editButton_Click(object sender, EventArgs e)
{
if (SelectedItems.Count != 1) return;
int dbId = (SelectedItems[0].Tag as Entities.Procedure).Id;
if (dbId == 0)
{
session.SaveOrUpdate(SelectedItems[0].Tag as Entities.Procedure);
}
dbId = (SelectedItems[0].Tag as Entities.Procedure).Id;
///
/// Entities.Procedure has to be loaded in a different session otherwise
/// the database would be updated in case the dialog was closed with 'Cancel' button.
///
using (ISession editSession = FluentCommon.CreateSession(Database.Procedures))
{
IList<Entities.Procedure> procedure = editSession
.CreateQuery("FROM Procedure WHERE Id = :id")
.SetParameter("id", dbId)
.List<Entities.Procedure>();
if (procedure.Count != 1) return;
ProcedureDlg dlg = new ProcedureDlg(procedure[0]);
if (dlg.ShowDialog() == DialogResult.OK)
Entities.Procedure originalProcedure = SelectedItems[0].Tag as Entities.Procedure;
Entities.Procedure modifiedProcedure = originalProcedure.Clone();
modifiedProcedure.ItemNr = originalProcedure.ItemNr;
modifiedProcedure.Revision = originalProcedure.Revision + 1;
modifiedProcedure.ObtainedByCopy = false;
if (new ProcedureDlg(modifiedProcedure).ShowDialog() == DialogResult.OK)
{
/// TODO: Make name uniqueness test
parent.Unlock();
using (var transaction = editSession.BeginTransaction())
{
editSession.SaveOrUpdate(procedure[0]);
transaction.Commit();
}
using (var transaction = session.BeginTransaction())
{
try
{
originalProcedure.ProcedureState = Entities.ProcedureState.History;
modifiedProcedure.LastChgUser = Entities.User.CurrentUser.Name;
modifiedProcedure.LastChgTime = DateTime.Now;
session.SaveOrUpdate(originalProcedure);
session.SaveOrUpdate(modifiedProcedure);
transaction.Commit();
SelectedItems[0].Tag = modifiedProcedure;
MessageBox.Show(string.Format(Strings.Procedure_0_modified, modifiedProcedure.Name),
Strings.Confirmation,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
catch (Exception exc)
{
transaction.Rollback();
}
}
session.Flush();
}
ReloadAndRedrawAll();
@ -198,17 +240,34 @@ namespace TBF.UiControls
/// Make a copy of the selected procedure
Entities.Procedure newProcedure = selectedProcedure.Clone();
newProcedure.Name = selectedProcedure.Name + Strings.New_name_copy;
newProcedure.ItemNr = MyItems.Count;
newProcedure.ProcedureState = Entities.ProcedureState.Active;
newProcedure.Revision = 1;
newProcedure.PredecessorId = selectedProcedure.Id;
newProcedure.ObtainedByCopy = true;
newProcedure.CreationUser = Entities.User.CurrentUser.Name;
newProcedure.CreationTime = DateTime.Now;
if ((new ProcedureDlg(newProcedure)).ShowDialog() == DialogResult.OK)
{
/// TODO: Make name uniqueness test
parent.Unlock();
using (var transaction = session.BeginTransaction())
{
newProcedure.LastChgUser = Entities.User.CurrentUser.Name;
newProcedure.LastChgTime = DateTime.Now;
base.AddOne(newProcedure);
session.SaveOrUpdate(newProcedure);
transaction.Commit();
MessageBox.Show(string.Format(Strings.Procedure_0_added, newProcedure.Name),
Strings.Confirmation,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
base.AddOne(newProcedure);
}