Zwischenstand Bearbeitung März

This commit is contained in:
Daniel Schick 2019-03-06 17:16:09 +00:00
parent 001a2deb77
commit 8e70a7ecde
12 changed files with 38 additions and 35 deletions

View File

@ -26,12 +26,12 @@
<value>1000</value> <value>1000</value>
</setting> </setting>
<setting name="LockingServerAddress" serializeAs="String"> <setting name="LockingServerAddress" serializeAs="String">
<value>http://192.168.2.4/LockingService/LockingService.svc</value> <!--value>http://192.168.2.4/LockingService/LockingService.svc</value-->
<!--value>http://heupferd/bsmd.LockingService/LockingService.svc</value--> <value>http://heupferd/bsmd.LockingService/LockingService.svc</value>
</setting> </setting>
<setting name="ConnectionString" serializeAs="String"> <setting name="ConnectionString" serializeAs="String">
<value>Data Source=192.168.2.12;Initial Catalog=nsw;Uid=dfuser;Pwd=dfpasswd;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False</value> <!--value>Data Source=192.168.2.12;Initial Catalog=nsw;Uid=dfuser;Pwd=dfpasswd;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False</value-->
<!--value>Data Source=(localdb)\Projects;Initial Catalog=nsw;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False</value--> <value>Data Source=(localdb)\Projects;Initial Catalog=nsw;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False</value>
</setting> </setting>
</ENI2.Properties.Settings> </ENI2.Properties.Settings>
</applicationSettings> </applicationSettings>

View File

@ -82,6 +82,7 @@ namespace ENI2
List<ValidationField> vFields = bsmd.database.ValidationRule.ValidationFields; List<ValidationField> vFields = bsmd.database.ValidationRule.ValidationFields;
RuleEngine.RegisterLocodeChecker(Util.GlobalStructures.IsValidLocode); RuleEngine.RegisterLocodeChecker(Util.GlobalStructures.IsValidLocode);
RuleEngine.RegisterPortAreaChecker(LocalizedLookup.PortAreaExists); RuleEngine.RegisterPortAreaChecker(LocalizedLookup.PortAreaExists);
RuleEngine.RegisterNationalityChecker(LocalizedLookup.CheckNationality);
// Connect to locking service (if enabled) // Connect to locking service (if enabled)
try try
@ -108,8 +109,7 @@ namespace ENI2
private void DatePicker_PreviewKeyDown(object sender, KeyEventArgs e) private void DatePicker_PreviewKeyDown(object sender, KeyEventArgs e)
{ {
var dp = sender as DatePicker; if (!(sender is DatePicker dp)) return;
if (dp == null) return;
if (e.Key == Key.D && Keyboard.Modifiers == ModifierKeys.Control) if (e.Key == Key.D && Keyboard.Modifiers == ModifierKeys.Control)
{ {
@ -140,7 +140,6 @@ namespace ENI2
ResetSplashCreated.Set(); ResetSplashCreated.Set();
System.Windows.Threading.Dispatcher.Run(); System.Windows.Threading.Dispatcher.Run();
} }
} }
} }

View File

@ -24,7 +24,7 @@ namespace ENI2.DetailViewControls
private Message _wasMessage; private Message _wasMessage;
private WAS _was; private WAS _was;
private static string[] _wasteDeliveryList = private static readonly string[] _wasteDeliveryList =
{ {
"ALL", "ALL",
"SOME", "SOME",
@ -144,8 +144,7 @@ namespace ENI2.DetailViewControls
private void DataGridWaste_DeleteRequested(DatabaseEntity obj) private void DataGridWaste_DeleteRequested(DatabaseEntity obj)
{ {
Waste waste = obj as Waste; if (obj is Waste waste)
if (waste != null)
{ {
// are you sure dialog is in base class // are you sure dialog is in base class
_was.Waste.Remove(waste); _was.Waste.Remove(waste);

View File

@ -35,8 +35,8 @@
<MinimumRequiredVersion>3.5.1.0</MinimumRequiredVersion> <MinimumRequiredVersion>3.5.1.0</MinimumRequiredVersion>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish> <CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>publish.html</WebPage> <WebPage>publish.html</WebPage>
<ApplicationRevision>1</ApplicationRevision> <ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>5.1.4.%2a</ApplicationVersion> <ApplicationVersion>5.1.6.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut> <CreateDesktopShortcut>true</CreateDesktopShortcut>
<PublishWizardCompleted>true</PublishWizardCompleted> <PublishWizardCompleted>true</PublishWizardCompleted>

View File

@ -11,10 +11,11 @@ using bsmd.ExcelReadService;
namespace ENI2 namespace ENI2
{ {
static class LocalizedLookup internal static class LocalizedLookup
{ {
private static SQLiteConnection _con; private static readonly SQLiteConnection _con;
private const string _locode_DB_NAME = "db.sqlite"; private const string _locode_DB_NAME = "db.sqlite";
private static Dictionary<string, string> _nationalities = null;
static LocalizedLookup() static LocalizedLookup()
{ {
@ -71,6 +72,12 @@ namespace ENI2
return numResults > 0; return numResults > 0;
} }
public static bool CheckNationality(string nationality)
{
if (_nationalities == null) _nationalities = getNationalities();
return _nationalities.ContainsKey(nationality);
}
public static Dictionary<string, string> getNationalities() public static Dictionary<string, string> getNationalities()
{ {
Dictionary<string, string> result = new Dictionary<string, string>(); Dictionary<string, string> result = new Dictionary<string, string>();
@ -179,7 +186,7 @@ namespace ENI2
if (!reader.IsDBNull(0)) code = reader.GetString(0); if (!reader.IsDBNull(0)) code = reader.GetString(0);
if (!reader.IsDBNull(1)) description = reader.GetString(1); if (!reader.IsDBNull(1)) description = reader.GetString(1);
if ((code != null) && (code.Length == 1)) if (code?.Length == 1)
code = string.Format("0{0}", code); // bei einstelligen Werten 0 voranstellen code = string.Format("0{0}", code); // bei einstelligen Werten 0 voranstellen
if ((code != null) && (description != null)) if ((code != null) && (description != null))
@ -220,7 +227,7 @@ namespace ENI2
{ {
List<LocodeDB.LocodeEntry> results = new List<LocodeDB.LocodeEntry>(); List<LocodeDB.LocodeEntry> results = new List<LocodeDB.LocodeEntry>();
string query = "SELECT LocationCode, LocationName FROM SSN_LOCODES WHERE LocationName like $PAR"; const string query = "SELECT LocationCode, LocationName FROM SSN_LOCODES WHERE LocationName like $PAR";
SQLiteCommand cmd = new SQLiteCommand(query, _con); SQLiteCommand cmd = new SQLiteCommand(query, _con);
cmd.Parameters.AddWithValue("$PAR", city); cmd.Parameters.AddWithValue("$PAR", city);
IDataReader reader = cmd.ExecuteReader(); IDataReader reader = cmd.ExecuteReader();

View File

@ -3708,7 +3708,7 @@ namespace ENI2.Properties {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Risks. /// Looks up a localized string similar to Hazards.
/// </summary> /// </summary>
public static string textRisks { public static string textRisks {
get { get {

View File

@ -1298,7 +1298,7 @@
<value>Radionuclide name</value> <value>Radionuclide name</value>
</data> </data>
<data name="textRisks" xml:space="preserve"> <data name="textRisks" xml:space="preserve">
<value>Risks</value> <value>Hazards</value>
</data> </data>
<data name="textStowagePosition" xml:space="preserve"> <data name="textStowagePosition" xml:space="preserve">
<value>Stowage position</value> <value>Stowage position</value>

Binary file not shown.

View File

@ -1293,15 +1293,11 @@ namespace bsmd.ExcelReadService
} }
WAS was = wasMessage.Elements[0] as WAS; WAS was = wasMessage.Elements[0] as WAS;
was.DeleteElements(); was.DeleteElements();
Util.ScanMessage(was, reader); Util.ScanMessage(was, reader);
was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery"); was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery");
if (was.LastWasteDisposalPort?.Length > 5) was.LastWasteDisposalPort = reader.ReadLoCode("WAS.LastWasteDisposalPort");
{
string lastWasteDisposalPort = reader.ReadText("WAS.LastWasteDisposalPort");
List<string> deliveryLocodes = LocodeDB.AllLocodesForCityName(lastWasteDisposalPort);
if (deliveryLocodes.Count == 1)
was.LastWasteDisposalPort = deliveryLocodes[0];
}
string wastedispServProvName = reader.ReadText("WAS.WasteDisposalServiceProviderName"); string wastedispServProvName = reader.ReadText("WAS.WasteDisposalServiceProviderName");
if (wastedispServProvName != null) if (wastedispServProvName != null)

View File

@ -155,7 +155,7 @@ namespace bsmd.database
} }
else else
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue("ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET CrewMemberLastName = @P2, CrewMemberFirstName = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET CrewMemberLastName = @P2, CrewMemberFirstName = @P3, " +
"CrewMemberPlaceOfBirth = @P4, CrewMemberDateOfBirth = @P5, CrewMemberGender = @P6, CrewMemberNationality = @P7, "+ "CrewMemberPlaceOfBirth = @P4, CrewMemberDateOfBirth = @P5, CrewMemberGender = @P6, CrewMemberNationality = @P7, "+
"CrewMemberIdentityDocumentType = @P8, CrewMemberIdentityDocumentId = @P9, CrewMemberVisaNumber = @P10, " + "CrewMemberIdentityDocumentType = @P8, CrewMemberIdentityDocumentId = @P9, CrewMemberVisaNumber = @P10, " +

View File

@ -106,12 +106,14 @@ namespace bsmd.database
public delegate bool LocodeValidHandler(string locode, LocodeMode mode); public delegate bool LocodeValidHandler(string locode, LocodeMode mode);
public delegate bool PortAreaValidHandler(string locode, string portArea); public delegate bool PortAreaValidHandler(string locode, string portArea);
public delegate bool NationalityValidHandler(string nationality);
private static readonly ILog log = LogManager.GetLogger(typeof(RuleEngine)); private static readonly ILog log = LogManager.GetLogger(typeof(RuleEngine));
private static Dictionary<int, string> errorTextList = null; private static Dictionary<int, string> errorTextList = null;
private static Dictionary<int, string> violationTextList = null; private static Dictionary<int, string> violationTextList = null;
private static LocodeValidHandler _locodeChecker = null; private static LocodeValidHandler _locodeChecker = null;
private static PortAreaValidHandler _portAreaChecker = null; private static PortAreaValidHandler _portAreaChecker = null;
private static NationalityValidHandler _nationalityChecker = null;
public RuleEngine() public RuleEngine()
{ {
@ -125,11 +127,14 @@ namespace bsmd.database
public Dictionary<DatabaseEntity, List<MessageViolation>> ViolationDict { get; } = new Dictionary<DatabaseEntity, List<MessageViolation>>(); public Dictionary<DatabaseEntity, List<MessageViolation>> ViolationDict { get; } = new Dictionary<DatabaseEntity, List<MessageViolation>>();
public static PortAreaValidHandler PortAreaChecker { get { return _portAreaChecker; } } public static PortAreaValidHandler PortAreaChecker { get { return _portAreaChecker; } }
public static LocodeValidHandler LocodeChecker { get { return _locodeChecker; } }
public static NationalityValidHandler NationalityChecker { get { return _nationalityChecker; } }
#region public static property validation #region public static property validation
public static void RegisterLocodeChecker(LocodeValidHandler handler) { _locodeChecker = handler; } public static void RegisterLocodeChecker(LocodeValidHandler handler) { _locodeChecker = handler; }
public static void RegisterPortAreaChecker(PortAreaValidHandler handler) { _portAreaChecker = handler; } public static void RegisterPortAreaChecker(PortAreaValidHandler handler) { _portAreaChecker = handler; }
public static void RegisterNationalityChecker(NationalityValidHandler handler) { _nationalityChecker = handler; }
/// <summary> /// <summary>
/// Test function checks decorated properties on an entity for errors (only errors, violations cannot /// Test function checks decorated properties on an entity for errors (only errors, violations cannot
@ -271,9 +276,9 @@ namespace bsmd.database
} }
break; break;
case ValidationCode.FLAG_CODE: case ValidationCode.FLAG_CODE:
{ {
Regex rgx = new Regex("[A-Z]{2}"); if(!RuleEngine.NationalityChecker(value))
if(!rgx.IsMatch(value)) errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename)); errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
} }
break; break;
case ValidationCode.TWO_DIGIT: case ValidationCode.TWO_DIGIT:
@ -464,9 +469,7 @@ namespace bsmd.database
public static bool IsGermanLocode(string val) public static bool IsGermanLocode(string val)
{ {
return gerLocodeList.Contains(val.ToUpper()); return gerLocodeList.Contains(val.ToUpper());
} }
public static LocodeValidHandler LocodeChecker { get { return _locodeChecker; } }
#endregion #endregion

View File

@ -43,8 +43,7 @@ namespace bsmd.database
public bool? WasteDisposalValidExemption { get; set; } public bool? WasteDisposalValidExemption { get; set; }
[ShowReport] [ShowReport]
[Validation2(ValidationCode.LOCODE)] [Validation2(ValidationCode.LOCODE)]
[LookupName("WAS.LastWasteDisposalPort")]
[MaxLength(5)] [MaxLength(5)]
[ENI2Validation] [ENI2Validation]
public string LastWasteDisposalPort { get; set; } public string LastWasteDisposalPort { get; set; }