(1) power users obtain nr.6 on startup, (2) maxBatchNr from DB detected and used, (3) more logging, ver. 2.4.258.
This commit is contained in:
@@ -7,12 +7,15 @@ using System.Security.Cryptography;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using Config.Resources;
|
using Config.Resources;
|
||||||
|
using log4net;
|
||||||
|
|
||||||
namespace Config.Entities
|
namespace Config.Entities
|
||||||
{
|
{
|
||||||
public class User
|
public class User
|
||||||
{
|
{
|
||||||
public virtual int Id { get; protected set; }
|
static readonly ILog log = LogManager.GetLogger(typeof(User));
|
||||||
|
|
||||||
|
public virtual int Id { get; protected set; }
|
||||||
public virtual string Name { get; set; }
|
public virtual string Name { get; set; }
|
||||||
public virtual int Number { get; set; }
|
public virtual int Number { get; set; }
|
||||||
public virtual string Password { get; set; }
|
public virtual string Password { get; set; }
|
||||||
@@ -140,6 +143,7 @@ namespace Config.Entities
|
|||||||
{
|
{
|
||||||
currentUser = this;
|
currentUser = this;
|
||||||
lastAuthorization = DateTime.Now;
|
lastAuthorization = DateTime.Now;
|
||||||
|
log.FatalFormat("Power user '{0}' authorized @level '{1}'", userName, requiredGroupMembership);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,7 +153,8 @@ namespace Config.Entities
|
|||||||
{
|
{
|
||||||
currentUser = this;
|
currentUser = this;
|
||||||
lastAuthorization = DateTime.Now;
|
lastAuthorization = DateTime.Now;
|
||||||
return true;
|
log.FatalFormat("User '{0}' authorized @level '{1}'", userName, requiredGroupMembership);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -182,6 +182,23 @@ namespace Results
|
|||||||
WaterMeterDataList = session.CreateQuery("FROM WaterMeterData").List<Entities.WaterMeterData>();
|
WaterMeterDataList = session.CreateQuery("FROM WaterMeterData").List<Entities.WaterMeterData>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads shared data from the database
|
||||||
|
/// </summary>
|
||||||
|
/// <exception>Throws NHibernate exceptions</exception>
|
||||||
|
public static int GetMaxSavedBatchNr()
|
||||||
|
{
|
||||||
|
ISession session = DB.CreateSession();
|
||||||
|
IList<Entities.Batch> batches = session.CreateQuery("FROM Batch").List<Entities.Batch>();
|
||||||
|
|
||||||
|
int maxBatchNr = 0;
|
||||||
|
foreach (var b in batches)
|
||||||
|
{
|
||||||
|
if (b.BatchNr > maxBatchNr) maxBatchNr = b.BatchNr;
|
||||||
|
}
|
||||||
|
return maxBatchNr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update TestData, Components and WaterMeterData fo tests and water meters in batch results
|
/// Update TestData, Components and WaterMeterData fo tests and water meters in batch results
|
||||||
|
|||||||
@@ -21,6 +21,17 @@ namespace TBF.BenchControl.Sequences
|
|||||||
public override string ToString() { return "Sequences.MainSeq"; }
|
public override string ToString() { return "Sequences.MainSeq"; }
|
||||||
|
|
||||||
|
|
||||||
|
int simultWithPurgingCount;
|
||||||
|
Generic.IComponentCfg simultWithPurgingCfg;
|
||||||
|
IList<Config.Entities.Test> simultWithPurgingTests;
|
||||||
|
IList<Generic.ITestParams> simultWithPurgingParams;
|
||||||
|
|
||||||
|
int simultWithEvacuationCount;
|
||||||
|
Generic.IComponentCfg simultWithEvacuationCfg;
|
||||||
|
IList<Config.Entities.Test> simultWithEvacuationTests;
|
||||||
|
IList<Generic.ITestParams> simultWithEvacuationParams;
|
||||||
|
|
||||||
|
|
||||||
System.Windows.Forms.Form modelessDlg;
|
System.Windows.Forms.Form modelessDlg;
|
||||||
///
|
///
|
||||||
delegate void iPerlCommFormDlgt(MainSeq myRef, Generic.IComponentCfg cfg, IList<Test> tests, IList<Generic.ITestParams> multiTestParams);
|
delegate void iPerlCommFormDlgt(MainSeq myRef, Generic.IComponentCfg cfg, IList<Test> tests, IList<Generic.ITestParams> multiTestParams);
|
||||||
@@ -65,7 +76,11 @@ namespace TBF.BenchControl.Sequences
|
|||||||
/// <summary> Constructor </summary>
|
/// <summary> Constructor </summary>
|
||||||
public MainSeq()
|
public MainSeq()
|
||||||
{
|
{
|
||||||
}
|
simultWithPurgingTests = new List<Config.Entities.Test>();
|
||||||
|
simultWithPurgingParams = new List<Generic.ITestParams>();
|
||||||
|
simultWithEvacuationTests = new List<Config.Entities.Test>();
|
||||||
|
simultWithEvacuationParams = new List<Generic.ITestParams>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -82,15 +97,15 @@ namespace TBF.BenchControl.Sequences
|
|||||||
Selection selection;
|
Selection selection;
|
||||||
bool benchFilled = false;
|
bool benchFilled = false;
|
||||||
|
|
||||||
int simultWithPurgingCount = 0;
|
simultWithPurgingCount = 0;
|
||||||
Generic.IComponentCfg simultWithPurgingCfg = null;
|
simultWithPurgingCfg = null;
|
||||||
IList<Config.Entities.Test> simultWithPurgingTests = new List<Config.Entities.Test>();
|
simultWithPurgingTests.Clear();
|
||||||
IList<Generic.ITestParams> simultWithPurgingParams = new List<Generic.ITestParams>();
|
simultWithPurgingParams.Clear();
|
||||||
|
|
||||||
int simultWithEvacuationCount = 0;
|
simultWithEvacuationCount = 0;
|
||||||
Generic.IComponentCfg simultWithEvacuationCfg = null;
|
simultWithEvacuationCfg = null;
|
||||||
IList<Config.Entities.Test> simultWithEvacuationTests = new List<Config.Entities.Test>();
|
simultWithEvacuationTests.Clear();
|
||||||
IList<Generic.ITestParams> simultWithEvacuationParams = new List<Generic.ITestParams>();
|
simultWithEvacuationParams.Clear();
|
||||||
|
|
||||||
StateMachine.LoadProcedure(true); // TODO: Implement as an operation so that the worker thread is not blocked
|
StateMachine.LoadProcedure(true); // TODO: Implement as an operation so that the worker thread is not blocked
|
||||||
|
|
||||||
@@ -213,7 +228,7 @@ namespace TBF.BenchControl.Sequences
|
|||||||
//--------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------
|
||||||
select_procedure:
|
select_procedure:
|
||||||
|
|
||||||
/// Make sure the CycleBeginForm is closed (aftrer an abnormal procedure/test end, etc.)
|
/// Make sure the CycleBeginForm is closed (after an abnormal procedure/test end, etc.)
|
||||||
CloseBeginForm();
|
CloseBeginForm();
|
||||||
|
|
||||||
selection = MakeSelection(MKSelContext.ProcedureNotSelected);
|
selection = MakeSelection(MKSelContext.ProcedureNotSelected);
|
||||||
@@ -228,7 +243,9 @@ namespace TBF.BenchControl.Sequences
|
|||||||
///
|
///
|
||||||
StateMachine.LoadProcedureParams(StateMachine.Procedure);
|
StateMachine.LoadProcedureParams(StateMachine.Procedure);
|
||||||
|
|
||||||
|
///
|
||||||
/// Prepare new water meters
|
/// Prepare new water meters
|
||||||
|
///
|
||||||
foreach (var wm in WaterMeters) wm.ClearData(); /// Clean water meter data
|
foreach (var wm in WaterMeters) wm.ClearData(); /// Clean water meter data
|
||||||
|
|
||||||
bool compound = (StateMachine.Procedure.MetersKind == MetersKind.Combined);
|
bool compound = (StateMachine.Procedure.MetersKind == MetersKind.Combined);
|
||||||
@@ -259,14 +276,16 @@ namespace TBF.BenchControl.Sequences
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
/// Prepare empty results
|
/// Prepare empty results
|
||||||
|
///
|
||||||
BatchRslts = Results.BatchResults.NewFromProcedure(Program.LocalSettings.BatchNr,
|
BatchRslts = Results.BatchResults.NewFromProcedure(Program.LocalSettings.BatchNr,
|
||||||
(BenchInfo != null) ? BenchInfo.TestBenchId : 1,
|
(BenchInfo != null) ? BenchInfo.TestBenchId : 1,
|
||||||
User.CurrentUser.Name, User.CurrentUser.Number, Program.Version,
|
User.CurrentUser.Name, User.CurrentUser.Number, Program.Version,
|
||||||
StateMachine.Procedure, waterMeterData, waterMeterParts);
|
StateMachine.Procedure, waterMeterData, waterMeterParts);
|
||||||
|
|
||||||
StateMachine.CycleStartTimeStamp = BatchRslts.Batch.StartTime;
|
StateMachine.CycleStartTimeStamp = BatchRslts.Batch.StartTime;
|
||||||
|
|
||||||
|
|
||||||
Bridge.OnProcedureSelected(this, new ProcedureSelectedEventArgs(StateMachine.Procedure));
|
Bridge.OnProcedureSelected(this, new ProcedureSelectedEventArgs(StateMachine.Procedure));
|
||||||
|
|
||||||
/// Display 'Cycle Begin Form'
|
/// Display 'Cycle Begin Form'
|
||||||
@@ -305,76 +324,7 @@ namespace TBF.BenchControl.Sequences
|
|||||||
|
|
||||||
fill_the_bench:
|
fill_the_bench:
|
||||||
|
|
||||||
///
|
CollectSimultSteps();
|
||||||
/// Collect steps (e.g. iPerl communication) to be done simultaneously with purging
|
|
||||||
///
|
|
||||||
simultWithPurgingCount = 0;
|
|
||||||
simultWithPurgingCfg = null;
|
|
||||||
simultWithPurgingTests.Clear();
|
|
||||||
simultWithPurgingParams.Clear();
|
|
||||||
///
|
|
||||||
foreach (var test in StateMachine.Tests)
|
|
||||||
{
|
|
||||||
Generic.IComponent testMethodComp = TbfComponents.FindComponent(test.Method);
|
|
||||||
if (testMethodComp == null) break;
|
|
||||||
|
|
||||||
testMethodComp.Cfg.UpdateTestParams(test);
|
|
||||||
|
|
||||||
ISimultTestMethod simultTest = testMethodComp as ISimultTestMethod;
|
|
||||||
MetersPath sensPath = StateMachine.GetMetersPath(test);
|
|
||||||
|
|
||||||
if (simultTest == null || !simultTest.SimultWithPrevious || sensPath == null) break;
|
|
||||||
|
|
||||||
if (simultWithPurgingCount == 0)
|
|
||||||
{
|
|
||||||
simultWithPurgingCfg = simultTest.Cfg;
|
|
||||||
}
|
|
||||||
else if (simultTest.Cfg != simultWithPurgingCfg)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
simultWithPurgingTests.Add(test);
|
|
||||||
simultWithPurgingParams.Add(testMethodComp.Cfg.GetTestParams().Clone() as Generic.ITestParams);
|
|
||||||
simultWithPurgingCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Collect steps (e.g. iPerl communication) to be done simultaneously with evacuation
|
|
||||||
///
|
|
||||||
simultWithEvacuationCount = 0;
|
|
||||||
simultWithEvacuationCfg = null;
|
|
||||||
simultWithEvacuationTests.Clear();
|
|
||||||
simultWithEvacuationParams.Clear();
|
|
||||||
///
|
|
||||||
for (int i = StateMachine.Tests.Count - 1; i >= simultWithPurgingCount; i--)
|
|
||||||
{
|
|
||||||
var test = StateMachine.Tests[i];
|
|
||||||
|
|
||||||
Generic.IComponent testMethodComp = TbfComponents.FindComponent(test.Method);
|
|
||||||
if (testMethodComp == null) break;
|
|
||||||
|
|
||||||
testMethodComp.Cfg.UpdateTestParams(test);
|
|
||||||
|
|
||||||
ISimultTestMethod simultTest = testMethodComp as ISimultTestMethod;
|
|
||||||
MetersPath sensPath = StateMachine.GetMetersPath(test);
|
|
||||||
|
|
||||||
if (simultTest == null || !simultTest.SimultWithNext || sensPath == null) break;
|
|
||||||
|
|
||||||
if (simultWithEvacuationCount == 0)
|
|
||||||
{
|
|
||||||
simultWithEvacuationCfg = simultTest.Cfg;
|
|
||||||
}
|
|
||||||
else if (simultTest.Cfg != simultWithEvacuationCfg)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
simultWithEvacuationTests.Insert(0, test);
|
|
||||||
simultWithEvacuationParams.Insert(0, testMethodComp.Cfg.GetTestParams().Clone() as Generic.ITestParams);
|
|
||||||
simultWithEvacuationCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
///
|
||||||
if (simultWithPurgingCount > 0)
|
if (simultWithPurgingCount > 0)
|
||||||
{
|
{
|
||||||
@@ -465,6 +415,10 @@ namespace TBF.BenchControl.Sequences
|
|||||||
|
|
||||||
Bridge.Bench2UI(ButtonsEtc.StopBtnEn); /// Hide buttons
|
Bridge.Bench2UI(ButtonsEtc.StopBtnEn); /// Hide buttons
|
||||||
|
|
||||||
|
if (selection != Selection.Cycle)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
if (selection == Selection.Cycle)
|
if (selection == Selection.Cycle)
|
||||||
{
|
{
|
||||||
float TimeEstimateTotal; /// Time estimate of the selected cycle or test
|
float TimeEstimateTotal; /// Time estimate of the selected cycle or test
|
||||||
@@ -703,6 +657,7 @@ namespace TBF.BenchControl.Sequences
|
|||||||
|
|
||||||
Program.LocalSettings.BatchNr++;
|
Program.LocalSettings.BatchNr++;
|
||||||
Program.LocalSettings.Save();
|
Program.LocalSettings.Save();
|
||||||
|
log.FatalFormat("BatchNr = {0} (incremented)", Program.LocalSettings.BatchNr);
|
||||||
|
|
||||||
|
|
||||||
if (simultWithEvacuationCount > 0)
|
if (simultWithEvacuationCount > 0)
|
||||||
@@ -1145,5 +1100,79 @@ namespace TBF.BenchControl.Sequences
|
|||||||
.EnterState();
|
.EnterState();
|
||||||
while (true) StateMachine.WaitRunDevsRunOps();
|
while (true) StateMachine.WaitRunDevsRunOps();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
void CollectSimultSteps()
|
||||||
|
{
|
||||||
|
///
|
||||||
|
/// Collect steps (e.g. iPerl communication) to be done simultaneously with purging
|
||||||
|
///
|
||||||
|
simultWithPurgingCount = 0;
|
||||||
|
simultWithPurgingCfg = null;
|
||||||
|
simultWithPurgingTests.Clear();
|
||||||
|
simultWithPurgingParams.Clear();
|
||||||
|
///
|
||||||
|
foreach (var test in StateMachine.Tests)
|
||||||
|
{
|
||||||
|
Generic.IComponent testMethodComp = TbfComponents.FindComponent(test.Method);
|
||||||
|
if (testMethodComp == null) break;
|
||||||
|
|
||||||
|
testMethodComp.Cfg.UpdateTestParams(test);
|
||||||
|
|
||||||
|
ISimultTestMethod simultTest = testMethodComp as ISimultTestMethod;
|
||||||
|
MetersPath sensPath = StateMachine.GetMetersPath(test);
|
||||||
|
|
||||||
|
if (simultTest == null || !simultTest.SimultWithPrevious || sensPath == null) break;
|
||||||
|
|
||||||
|
if (simultWithPurgingCount == 0)
|
||||||
|
{
|
||||||
|
simultWithPurgingCfg = simultTest.Cfg;
|
||||||
|
}
|
||||||
|
else if (simultTest.Cfg != simultWithPurgingCfg)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
simultWithPurgingTests.Add(test);
|
||||||
|
simultWithPurgingParams.Add(testMethodComp.Cfg.GetTestParams().Clone() as Generic.ITestParams);
|
||||||
|
simultWithPurgingCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Collect steps (e.g. iPerl communication) to be done simultaneously with evacuation
|
||||||
|
///
|
||||||
|
simultWithEvacuationCount = 0;
|
||||||
|
simultWithEvacuationCfg = null;
|
||||||
|
simultWithEvacuationTests.Clear();
|
||||||
|
simultWithEvacuationParams.Clear();
|
||||||
|
///
|
||||||
|
for (int i = StateMachine.Tests.Count - 1; i >= simultWithPurgingCount; i--)
|
||||||
|
{
|
||||||
|
var test = StateMachine.Tests[i];
|
||||||
|
|
||||||
|
Generic.IComponent testMethodComp = TbfComponents.FindComponent(test.Method);
|
||||||
|
if (testMethodComp == null) break;
|
||||||
|
|
||||||
|
testMethodComp.Cfg.UpdateTestParams(test);
|
||||||
|
|
||||||
|
ISimultTestMethod simultTest = testMethodComp as ISimultTestMethod;
|
||||||
|
MetersPath sensPath = StateMachine.GetMetersPath(test);
|
||||||
|
|
||||||
|
if (simultTest == null || !simultTest.SimultWithNext || sensPath == null) break;
|
||||||
|
|
||||||
|
if (simultWithEvacuationCount == 0)
|
||||||
|
{
|
||||||
|
simultWithEvacuationCfg = simultTest.Cfg;
|
||||||
|
}
|
||||||
|
else if (simultTest.Cfg != simultWithEvacuationCfg)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
simultWithEvacuationTests.Insert(0, test);
|
||||||
|
simultWithEvacuationParams.Insert(0, testMethodComp.Cfg.GetTestParams().Clone() as Generic.ITestParams);
|
||||||
|
simultWithEvacuationCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,19 +116,26 @@ namespace TBF
|
|||||||
Program.LocalSettings = LocalSettings.Load(Program.LocalSettingsBackupName);
|
Program.LocalSettings = LocalSettings.Load(Program.LocalSettingsBackupName);
|
||||||
if (Program.LocalSettings == null || Program.LocalSettings.TestBenches == null)
|
if (Program.LocalSettings == null || Program.LocalSettings.TestBenches == null)
|
||||||
{
|
{
|
||||||
|
log.FatalFormat("Local settings: Could not load file {0}, nor {1}.", Program.LocalSettingsFileName, Program.LocalSettingsBackupName);
|
||||||
|
log.Fatal("Application terminated.");
|
||||||
return; /// Fatal error
|
return; /// Fatal error
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LocalSettings.Save(); /// Save the settings to overwrite the wrong file
|
LocalSettings.Save(); /// Save the settings to overwrite the wrong file
|
||||||
|
log.FatalFormat("Local settings: Could not load file {0}, successfully loaded {1}", Program.LocalSettingsFileName, Program.LocalSettingsBackupName);
|
||||||
|
log.FatalFormat("BatchNr = {0}", LocalSettings.BatchNr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/// Loading local seetings from the regular config file was successful. Update the backup
|
/// Loading local seetings from the regular config file was successful. Update the backup
|
||||||
File.Copy(Program.LocalSettingsFileName, Program.LocalSettingsBackupName, true);
|
File.Copy(Program.LocalSettingsFileName, Program.LocalSettingsBackupName, true);
|
||||||
|
log.FatalFormat("Local settings: Successfully loaded from {0}", Program.LocalSettingsFileName);
|
||||||
|
log.FatalFormat("BatchNr = {0}", LocalSettings.BatchNr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string culture = LocalSettings.Language.Replace('_', '-');
|
string culture = LocalSettings.Language.Replace('_', '-');
|
||||||
@@ -145,11 +152,13 @@ namespace TBF
|
|||||||
//AltCulture = null;
|
//AltCulture = null;
|
||||||
AltCulture = new System.Globalization.CultureInfo("SK");
|
AltCulture = new System.Globalization.CultureInfo("SK");
|
||||||
|
|
||||||
|
|
||||||
/// This belongs to Application.Run(new MainWnd()) ...
|
/// This belongs to Application.Run(new MainWnd()) ...
|
||||||
/// and should be executed before opening 'loginDlg'
|
/// and should be executed before opening 'loginDlg'
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
|
||||||
|
|
||||||
/// Ensure that there is at least one bench in the configuration
|
/// Ensure that there is at least one bench in the configuration
|
||||||
while (Program.LocalSettings.BenchesCount == 0)
|
while (Program.LocalSettings.BenchesCount == 0)
|
||||||
{
|
{
|
||||||
@@ -170,7 +179,8 @@ namespace TBF
|
|||||||
|
|
||||||
/// User login
|
/// User login
|
||||||
bool retryLogin = true; /// true = stay in a login loop
|
bool retryLogin = true; /// true = stay in a login loop
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
LoginDlgWithBenchSelection loginDlgBench;
|
LoginDlgWithBenchSelection loginDlgBench;
|
||||||
if (LocalSettings.LastBenchName != null)
|
if (LocalSettings.LastBenchName != null)
|
||||||
{
|
{
|
||||||
@@ -188,11 +198,12 @@ namespace TBF
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
for (int i = 0; i < LocalSettings.BenchesCount; i++)
|
for (int i = 0; i < LocalSettings.BenchesCount; i++)
|
||||||
{
|
{
|
||||||
if (LocalSettings.TestBenches[i].BenchName == loginDlgBench.BenchName)
|
if (LocalSettings.TestBenches[i].BenchName == loginDlgBench.BenchName)
|
||||||
{
|
{
|
||||||
|
log.FatalFormat("Test bench name: {0}", loginDlgBench.BenchName);
|
||||||
|
|
||||||
User loadedUser = null;
|
User loadedUser = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -200,7 +211,7 @@ namespace TBF
|
|||||||
|
|
||||||
if (User.IsPowerUser(loginDlgBench.User, loginDlgBench.Password))
|
if (User.IsPowerUser(loginDlgBench.User, loginDlgBench.Password))
|
||||||
{
|
{
|
||||||
loadedUser = new User(loginDlgBench.User);
|
loadedUser = new User(loginDlgBench.User, 6);
|
||||||
authorized = loadedUser.Authorize(loginDlgBench.User, loginDlgBench.Password);
|
authorized = loadedUser.Authorize(loginDlgBench.User, loginDlgBench.Password);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,6 +242,14 @@ namespace TBF
|
|||||||
Results.DB.DbType = Config.Data.CurrentBench.WaterMetersDBSettings.DbType;
|
Results.DB.DbType = Config.Data.CurrentBench.WaterMetersDBSettings.DbType;
|
||||||
Results.DB.ConnectionString = Config.Data.CurrentBench.WaterMetersDBSettings.ConnectionString;
|
Results.DB.ConnectionString = Config.Data.CurrentBench.WaterMetersDBSettings.ConnectionString;
|
||||||
Results.DB.LoadSharedData();
|
Results.DB.LoadSharedData();
|
||||||
|
int maxBatchNr = Results.DB.GetMaxSavedBatchNr();
|
||||||
|
if (Program.LocalSettings.BatchNr <= maxBatchNr)
|
||||||
|
{
|
||||||
|
log.FatalFormat("Max. BatchNr in DB = {0}, LocalSettings.BatchNr = {1}", maxBatchNr, Program.LocalSettings.BatchNr);
|
||||||
|
Program.LocalSettings.BatchNr = maxBatchNr + 1;
|
||||||
|
Program.LocalSettings.Save();
|
||||||
|
log.FatalFormat("LocalSettings.BatchNr updated to {0}", Program.LocalSettings.BatchNr);
|
||||||
|
}
|
||||||
|
|
||||||
retryLogin = false;
|
retryLogin = false;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("2.5.257.1")]
|
[assembly: AssemblyVersion("2.5.258.1")]
|
||||||
[assembly: AssemblyFileVersion("2.5.257.1")]
|
[assembly: AssemblyFileVersion("2.5.258.1")]
|
||||||
|
|||||||
Reference in New Issue
Block a user