Version 3.8.11.1:
Korrekturen zum Go-Live, hauptsächlich bei der (statischen) Validierung
This commit is contained in:
parent
88b18d3bf1
commit
7be0296cba
@ -80,6 +80,7 @@ namespace ENI2
|
||||
|
||||
// Preload validation fields
|
||||
List<ValidationField> vFields = bsmd.database.ValidationRule.ValidationFields;
|
||||
RuleEngine.RegisterLocodeChecker(bsmd.ExcelReadService.LocodeDB.IsValidLocode);
|
||||
|
||||
// Connect to locking service (if enabled)
|
||||
try
|
||||
|
||||
@ -26,14 +26,7 @@ namespace ENI2.Controls
|
||||
public LocodeControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public enum LocodeMode
|
||||
{
|
||||
STANDARD,
|
||||
NO_PORT_FLAG,
|
||||
SSN
|
||||
};
|
||||
}
|
||||
|
||||
protected enum LocodeState
|
||||
{
|
||||
@ -60,11 +53,11 @@ namespace ENI2.Controls
|
||||
string portName = null;
|
||||
switch (this.LocodeSource)
|
||||
{
|
||||
case LocodeMode.NO_PORT_FLAG:
|
||||
case RuleEngine.LocodeMode.NO_PORT_FLAG:
|
||||
portName = LocodeDB.LocationNameFromLocode(value); break;
|
||||
case LocodeMode.STANDARD:
|
||||
case RuleEngine.LocodeMode.STANDARD:
|
||||
portName = LocodeDB.PortNameFromLocode(value); break;
|
||||
case LocodeMode.SSN:
|
||||
case RuleEngine.LocodeMode.SSN:
|
||||
portName = LocalizedLookup.SSNPortNameFromLocode(value); break;
|
||||
}
|
||||
LocodeState locodeState = portName.IsNullOrEmpty() ? LocodeState.INVALID : LocodeState.OK;
|
||||
@ -89,7 +82,7 @@ namespace ENI2.Controls
|
||||
set { SetValue(LocodeValueProperty, value); }
|
||||
}
|
||||
|
||||
public LocodeMode LocodeSource { get; set; }
|
||||
public RuleEngine.LocodeMode LocodeSource { get; set; }
|
||||
|
||||
#region static methods
|
||||
|
||||
@ -137,11 +130,11 @@ namespace ENI2.Controls
|
||||
string portname = null;
|
||||
switch(this.LocodeSource)
|
||||
{
|
||||
case LocodeMode.NO_PORT_FLAG:
|
||||
case RuleEngine.LocodeMode.NO_PORT_FLAG:
|
||||
portname = LocodeDB.LocationNameFromLocode(directLocode); break;
|
||||
case LocodeMode.STANDARD:
|
||||
case RuleEngine.LocodeMode.STANDARD:
|
||||
portname = LocodeDB.PortNameFromLocode(directLocode); break;
|
||||
case LocodeMode.SSN:
|
||||
case RuleEngine.LocodeMode.SSN:
|
||||
portname = LocalizedLookup.SSNPortNameFromLocode(directLocode); break;
|
||||
}
|
||||
|
||||
@ -164,11 +157,11 @@ namespace ENI2.Controls
|
||||
|
||||
switch(this.LocodeSource)
|
||||
{
|
||||
case LocodeMode.NO_PORT_FLAG:
|
||||
case RuleEngine.LocodeMode.NO_PORT_FLAG:
|
||||
locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString, false); break;
|
||||
case LocodeMode.STANDARD:
|
||||
case RuleEngine.LocodeMode.STANDARD:
|
||||
locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break;
|
||||
case LocodeMode.SSN:
|
||||
case RuleEngine.LocodeMode.SSN:
|
||||
locodeEntries = LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString); break;
|
||||
}
|
||||
locodeEntries.Sort();
|
||||
|
||||
@ -87,7 +87,9 @@ namespace ENI2
|
||||
this.listBoxMessages.ItemsSource = this._listBoxList;
|
||||
|
||||
_messages = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessagesForCore(_core, DBManager.MessageLoad.ALL);
|
||||
|
||||
List<Message> missingMessages = bsmd.database.Util.CreateMessagesForCore(_core, _messages, this.LockedBy);
|
||||
_messages.AddRange(missingMessages);
|
||||
|
||||
BindingOperations.EnableCollectionSynchronization(_messages, this.messageListLock);
|
||||
Dispatcher.BeginInvoke((Action)(() => this.listBoxMessages.SelectedIndex = 0));
|
||||
}
|
||||
@ -377,7 +379,10 @@ namespace ENI2
|
||||
if(messageError.NotificationClass == aMessage.MessageNotificationClassDisplay)
|
||||
{
|
||||
aMessage.InternalStatus = Message.BSMDStatus.SUSPENDED;
|
||||
aMessage.ChangedBy = "";
|
||||
aMessage.StatusInfo = string.Format("Validation error: {0}", messageError.ErrorText);
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(aMessage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,6 +78,7 @@ namespace ENI2.DetailViewControls
|
||||
if (this._tiefdMessage == null)
|
||||
{
|
||||
this._tiefdMessage = this.Core.CreateMessage(Message.NotificationClass.TIEFD);
|
||||
DBManager.Instance.Save(this._tiefdMessage);
|
||||
this.Messages.Add(this._tiefdMessage);
|
||||
}
|
||||
|
||||
@ -90,6 +91,7 @@ namespace ENI2.DetailViewControls
|
||||
tiefd.MessageCore = this.Core;
|
||||
tiefd.MessageHeader = this._tiefdMessage;
|
||||
_tiefdMessage.Elements.Add(tiefd);
|
||||
DBManager.Instance.Save(tiefd);
|
||||
}
|
||||
|
||||
this.tiefdGroupBox.DataContext = tiefd;
|
||||
|
||||
@ -35,8 +35,8 @@
|
||||
<MinimumRequiredVersion>3.5.1.0</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>publish.html</WebPage>
|
||||
<ApplicationRevision>1</ApplicationRevision>
|
||||
<ApplicationVersion>3.8.10.%2a</ApplicationVersion>
|
||||
<ApplicationRevision>2</ApplicationRevision>
|
||||
<ApplicationVersion>3.8.11.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
|
||||
@ -366,7 +366,7 @@ namespace ENI2
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(closedDialog.Core);
|
||||
|
||||
// Meldeklassen für neuen Anlauf erzeugen:
|
||||
bsmd.database.Util.CreateMessagesForCore(closedDialog.Core, userEntity);
|
||||
bsmd.database.Util.CreateMessagesForCore(closedDialog.Core, null, userEntity);
|
||||
|
||||
this.AnmeldungenControl_MessageCoreSelected(closedDialog.Core); // in einem neuen Reiter öffnen
|
||||
}
|
||||
@ -424,7 +424,7 @@ namespace ENI2
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(newCore);
|
||||
|
||||
// Meldeklassen für neuen Anlauf erzeugen:
|
||||
bsmd.database.Util.CreateMessagesForCore(newCore, userEntity);
|
||||
bsmd.database.Util.CreateMessagesForCore(newCore, null, userEntity);
|
||||
this.AnmeldungenControl_MessageCoreSelected(newCore); // in einem neuen Reiter öffnen
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,7 +92,8 @@ namespace ENI2
|
||||
|
||||
// suche auslösen
|
||||
|
||||
this.anmeldungen = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoresWithFilters(filterDict, resultLimit);
|
||||
this.anmeldungen = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoresWithFilters(filterDict, resultLimit);
|
||||
this.dataGrid.SelectedItem = null;
|
||||
|
||||
BindingOperations.EnableCollectionSynchronization(this.anmeldungen, this.searchLock); // prevent sync lock exceptions (trat bei Sandra auf)
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
12
nsw/HIS-NORD/Statusabfrage_NSW.txt
Normal file
12
nsw/HIS-NORD/Statusabfrage_NSW.txt
Normal file
@ -0,0 +1,12 @@
|
||||
Referenzsystem (Testsystem)
|
||||
login: BSMD-REF
|
||||
password: Hd47%23fz9Bl48sxU%232
|
||||
format: xml
|
||||
url: https://ref-app.his-nord.de/HIS-Service/StatusInfoNSW.jsp
|
||||
|
||||
|
||||
Livesystem
|
||||
login: BSMD-PROD
|
||||
password: Po47#fr7V45jtU#4
|
||||
format: xml
|
||||
url: https://www.his-nord.de/HIS-Service/StatusInfoNSW.jsp
|
||||
@ -12,6 +12,7 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SQLite;
|
||||
using bsmd.database;
|
||||
using ENI2;
|
||||
|
||||
namespace bsmd.ExcelReadService
|
||||
{
|
||||
@ -57,6 +58,20 @@ namespace bsmd.ExcelReadService
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool IsValidLocode(string locode, RuleEngine.LocodeMode mode)
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case RuleEngine.LocodeMode.NO_PORT_FLAG:
|
||||
return !LocodeDB.LocationNameFromLocode(locode).IsNullOrEmpty();
|
||||
case RuleEngine.LocodeMode.SSN:
|
||||
return !LocalizedLookup.SSNPortNameFromLocode(locode).IsNullOrEmpty();
|
||||
default:
|
||||
return !LocodeDB.PortNameFromLocode(locode).IsNullOrEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static List<string> AllLocodesForCityName(string city)
|
||||
{
|
||||
List<string> results = new List<string>();
|
||||
|
||||
@ -339,19 +339,15 @@ namespace bsmd.database
|
||||
|
||||
|
||||
public string GetShipNameFromCore(MessageCore core)
|
||||
{
|
||||
foreach(Message message in this.GetMessagesForCore(core, MessageLoad.ALL))
|
||||
{
|
||||
|
||||
Message statMessage = this.GetMessage(core, Message.NotificationClass.STAT);
|
||||
|
||||
if ((statMessage != null) && (statMessage.Elements.Count > 0))
|
||||
{
|
||||
if (message.MessageNotificationClass == Message.NotificationClass.STAT)
|
||||
{
|
||||
if (message.Elements.Count > 0)
|
||||
{
|
||||
STAT stat = message.Elements[0] as STAT;
|
||||
if (stat != null)
|
||||
return stat.ShipName;
|
||||
}
|
||||
break;
|
||||
}
|
||||
STAT stat = statMessage.Elements[0] as STAT;
|
||||
if (stat != null)
|
||||
return stat.ShipName;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ namespace bsmd.database
|
||||
public HAZ HAZ { get; set; }
|
||||
|
||||
[ShowReport]
|
||||
[Validation(ValidationCode.NOT_NULL)]
|
||||
[Validation(ValidationCode.STRING_EXACT_LEN, 4)]
|
||||
[MaxLength(10)]
|
||||
[ENI2Validation]
|
||||
public string UNNumber { get; set; }
|
||||
@ -437,11 +437,12 @@ namespace bsmd.database
|
||||
if (!this.NetQuantity_KGM.HasValue && !this.GrossQuantity_KGM.HasValue && !this.Volume_MTQ.HasValue)
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.V802, null, null, this.Title, this.Identifier, this.HAZ.IsDeparture ? "HAZD" : "HAZA"));
|
||||
|
||||
if ((this.GeneralCargoIBC ?? false) && this.ContainerNumber.IsNullOrEmpty() && this.VehicleLicenseNumber.IsNullOrEmpty())
|
||||
if (!(this.GeneralCargoIBC ?? false) && this.ContainerNumber.IsNullOrEmpty() && this.VehicleLicenseNumber.IsNullOrEmpty())
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.V808, null, null, this.Title, this.Identifier, this.HAZ.IsDeparture ? "HAZD": "HAZA"));
|
||||
|
||||
if((this.NetQuantity_KGM.HasValue && this.NetQuantity_KGM.Value > 100000) ||
|
||||
(this.GrossQuantity_KGM.HasValue && this.GrossQuantity_KGM.Value > 100000))
|
||||
(this.GrossQuantity_KGM.HasValue && this.GrossQuantity_KGM.Value > 100000) ||
|
||||
(this.Volume_MTQ.HasValue && this.Volume_MTQ.Value > 100))
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.V809, null, null, this.Title, this.Identifier, this.HAZ.IsDeparture ? "HAZD" : "HAZA"));
|
||||
|
||||
foreach (SubsidiaryRisks sr in this.SubsidiaryRiskList)
|
||||
|
||||
@ -61,7 +61,7 @@ namespace bsmd.database
|
||||
public DateTime? ETDFromLastPort { get; set; }
|
||||
|
||||
[ShowReport]
|
||||
[Validation(ValidationCode.NOT_NULL)]
|
||||
[Validation(ValidationCode.LOCODE_SSN)]
|
||||
[MaxLength(5)]
|
||||
[ENI2Validation]
|
||||
public string NextPort { get; set; }
|
||||
@ -220,11 +220,11 @@ namespace bsmd.database
|
||||
{
|
||||
if(this.ETDFromPortOfCall.HasValue && this.ETAToPortOfCall.HasValue &&
|
||||
(this.ETDFromPortOfCall < this.ETAToPortOfCall))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromPortOfCall", this.ETDFromPortOfCall.ToString(), this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromPortOfCall", this.ETDFromPortOfCall.ToString(), this.Title, null, this.Tablename));
|
||||
|
||||
if(this.CallPurposes.IsNullOrEmpty())
|
||||
{
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.LIST_EMPTY, null, "CallPurpose", this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.LIST_EMPTY, "CallPurposes", "CallPurpose", this.Title, null, this.Tablename));
|
||||
}
|
||||
|
||||
}
|
||||
@ -232,24 +232,24 @@ namespace bsmd.database
|
||||
{
|
||||
if (this.ETDFromKielCanal.HasValue && this.ETAToKielCanal.HasValue &&
|
||||
(this.ETDFromKielCanal < this.ETAToKielCanal))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromKielCanal", this.ETDFromKielCanal.ToString(), this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromKielCanal", this.ETDFromKielCanal.ToString(), this.Title, null, this.Tablename));
|
||||
}
|
||||
|
||||
if((this.LastPort != null) && !this.LastPort.Equals("ZZUKN") && !this.ETDFromLastPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETDFromLastPort", null, this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETDFromLastPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
if((this.LastPort != null) && this.LastPort.Equals("ZZUKN") && this.ETDFromLastPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort", null, this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
if (this.ETDFromPortOfCall.HasValue && this.ETAToNextPort.HasValue &&
|
||||
this.ETAToNextPort < ETDFromPortOfCall)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETAToNextPort", null, this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETAToNextPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
if ((this.NextPort != null) && !this.NextPort.Equals("ZZUKN") && !this.ETAToNextPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETAToNextPort", null, this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETAToNextPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
if((this.NextPort != null) && this.NextPort.Equals("ZZUKN") && this.ETAToNextPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETAToNextPort", null, this.Title, this.Tablename));
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETAToNextPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,6 @@
|
||||
|
||||
[assembly: AssemblyCompany("schick Informatik")]
|
||||
[assembly: AssemblyProduct("BSMD NSW interface")]
|
||||
[assembly: AssemblyInformationalVersion("3.8.10")]
|
||||
[assembly: AssemblyInformationalVersion("3.8.11")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014-2017 schick Informatik")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
@ -1,4 +1,4 @@
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: AssemblyVersion("3.8.10.*")]
|
||||
[assembly: AssemblyVersion("3.8.11.*")]
|
||||
|
||||
|
||||
@ -96,9 +96,19 @@ namespace bsmd.database
|
||||
|
||||
#endregion
|
||||
|
||||
public enum LocodeMode
|
||||
{
|
||||
STANDARD,
|
||||
NO_PORT_FLAG,
|
||||
SSN
|
||||
};
|
||||
|
||||
public delegate bool LocodeValidHandler(string locode, LocodeMode mode);
|
||||
|
||||
private static ILog log = LogManager.GetLogger(typeof(RuleEngine));
|
||||
private static Dictionary<int, string> errorTextList = null;
|
||||
private static Dictionary<int, string> violationTextList = null;
|
||||
private static LocodeValidHandler _locodeChecker = null;
|
||||
|
||||
private Dictionary<DatabaseEntity, List<MessageError>> errorDict = new Dictionary<DatabaseEntity, List<MessageError>>();
|
||||
private Dictionary<DatabaseEntity, List<MessageViolation>> violationDict = new Dictionary<DatabaseEntity, List<MessageViolation>>();
|
||||
@ -116,6 +126,8 @@ namespace bsmd.database
|
||||
|
||||
#region public static property validation
|
||||
|
||||
public static void RegisterLocodeChecker(LocodeValidHandler handler) { _locodeChecker = handler; }
|
||||
|
||||
/// <summary>
|
||||
/// Test function checks decorated properties on an entity for errors (only errors, violations cannot
|
||||
/// happen here)
|
||||
@ -185,6 +197,27 @@ namespace bsmd.database
|
||||
{
|
||||
Regex rgx = new Regex("[A-Z]{2}[A-Z0-9]{3}");
|
||||
if (!rgx.IsMatch(value)) errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
if (_locodeChecker != null)
|
||||
if (!_locodeChecker(value, LocodeMode.STANDARD))
|
||||
errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
}
|
||||
break;
|
||||
case ValidationCode.LOCODE_NOPORT:
|
||||
{
|
||||
Regex rgx = new Regex("[A-Z]{2}[A-Z0-9]{3}");
|
||||
if (!rgx.IsMatch(value)) errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
if (_locodeChecker != null)
|
||||
if (!_locodeChecker(value, LocodeMode.NO_PORT_FLAG))
|
||||
errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
}
|
||||
break;
|
||||
case ValidationCode.LOCODE_SSN:
|
||||
{
|
||||
Regex rgx = new Regex("[A-Z]{2}[A-Z0-9]{3}");
|
||||
if (!rgx.IsMatch(value)) errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
if (_locodeChecker != null)
|
||||
if (!_locodeChecker(value, LocodeMode.SSN))
|
||||
errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
}
|
||||
break;
|
||||
case ValidationCode.LOCODE_GER:
|
||||
@ -227,8 +260,11 @@ namespace bsmd.database
|
||||
break;
|
||||
case ValidationCode.STRING_EXACT_LEN:
|
||||
{
|
||||
if (value.Length != maxlen)
|
||||
errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
if (!value.IsNullOrEmpty())
|
||||
{
|
||||
if (value.Length != maxlen)
|
||||
errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ValidationCode.STRING_MAXLEN:
|
||||
|
||||
@ -68,7 +68,7 @@ namespace bsmd.database
|
||||
public int? GrossTonnage { get; set; }
|
||||
|
||||
[ShowReport]
|
||||
[Validation(ValidationCode.LOCODE)]
|
||||
[Validation(ValidationCode.LOCODE_NOPORT)]
|
||||
[MaxLength(5)]
|
||||
[ENI2Validation]
|
||||
public string PortOfRegistry { get; set; }
|
||||
@ -115,7 +115,7 @@ namespace bsmd.database
|
||||
public string ISMCompanyName { get; set; }
|
||||
|
||||
[ShowReport]
|
||||
//[Validation(ValidationCode.STRING_EXACT_LEN, 7)]
|
||||
[Validation(ValidationCode.STRING_EXACT_LEN, 7)]
|
||||
[MaxLength(10)]
|
||||
[ENI2Validation]
|
||||
public string ISMCompanyId { get; set; }
|
||||
|
||||
@ -118,10 +118,18 @@ namespace bsmd.database
|
||||
|
||||
/// <summary>
|
||||
/// Hilfsfunktion für "manuelle" Anlage eines Schiffsanlaufs. Die Objekte sind bereits gespeichert.
|
||||
/// Es werden nur noch nicht vorhandene Meldeklassen erzeugt
|
||||
/// </summary>
|
||||
public static List<Message> CreateMessagesForCore(MessageCore core, ReportingParty user = null)
|
||||
public static List<Message> CreateMessagesForCore(MessageCore core, List<Message> existingMessages, ReportingParty user = null)
|
||||
{
|
||||
List<Message> result = new List<Message>();
|
||||
Dictionary<Message.NotificationClass, Message> messageDict = new Dictionary<Message.NotificationClass, Message>();
|
||||
if(!existingMessages.IsNullOrEmpty())
|
||||
{
|
||||
foreach (Message aMessage in existingMessages)
|
||||
messageDict.Add(aMessage.MessageNotificationClass, aMessage);
|
||||
}
|
||||
|
||||
bool isDE, isDK;
|
||||
if((core != null) && (core.PoC != null))
|
||||
{
|
||||
@ -130,6 +138,8 @@ namespace bsmd.database
|
||||
|
||||
foreach (Message.NotificationClass notificationClass in Enum.GetValues(typeof(Message.NotificationClass)))
|
||||
{
|
||||
if (messageDict.ContainsKey(notificationClass)) continue;
|
||||
|
||||
if(isDE)
|
||||
{
|
||||
if ((notificationClass == Message.NotificationClass.CREWD) ||
|
||||
@ -167,7 +177,6 @@ namespace bsmd.database
|
||||
{
|
||||
((MDH)classElement).SetBoolsToFalse();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
DBManager.Instance.Save(message);
|
||||
|
||||
@ -32,6 +32,8 @@ namespace bsmd.database
|
||||
LIST_EMPTY,
|
||||
IMPLAUSIBLE,
|
||||
IMPLAUSIBLE_ZZUKN,
|
||||
LOCODE_NOPORT,
|
||||
LOCODE_SSN,
|
||||
POSITION_COUNT = 22,
|
||||
STRING_UNNUMBER = 23,
|
||||
STRING_IMOCLASS = 24,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.34209
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@ -12,8 +12,8 @@ namespace bsmd.dbh.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<Generator>PublicSettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Web References\DBHWebReference\answ-osis-extern.wsdl" />
|
||||
|
||||
@ -13,7 +13,7 @@ namespace bsmd.hisnord.Properties {
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
|
||||
@ -959,7 +959,8 @@ namespace bsmd.hisnord
|
||||
if (s2s.ShipToShipActivityTypeCode.HasValue)
|
||||
hn_lastactivity.ShipToShipActivityType = s2s.ShipToShipActivityTypeCode.Value.ToString();
|
||||
|
||||
hn_lastactivity.ShipToShipActivitySecurityMattersToReportOf = s2s.ShipToShipActivitySecurityMattersToReport;
|
||||
if(!s2s.ShipToShipActivitySecurityMattersToReport.IsNullOrEmpty())
|
||||
hn_lastactivity.ShipToShipActivitySecurityMattersToReportOf = s2s.ShipToShipActivitySecurityMattersToReport;
|
||||
|
||||
secItemNames.Add(ItemsChoiceType4.ShipToShipActivities);
|
||||
secItems.Add(hn_lastactivity);
|
||||
@ -1789,7 +1790,8 @@ namespace bsmd.hisnord
|
||||
pi.Name = marpolPosition.Name;
|
||||
if (marpolPosition.FlashpointInformation.HasValue)
|
||||
pi.FlashpointInformation = (flashpointinfotype)marpolPosition.FlashpointInformation.Value;
|
||||
pi.Flashpoint_CEL = marpolPosition.Flashpoint_CEL;
|
||||
if(!marpolPosition.Flashpoint_CEL.IsNullOrEmpty())
|
||||
pi.Flashpoint_CEL = marpolPosition.Flashpoint_CEL;
|
||||
if (marpolPosition.Quantity_KGM.HasValue)
|
||||
pi.Quantity_KGM = (float)marpolPosition.Quantity_KGM.Value;
|
||||
pi.StowagePosition = marpolPosition.StowagePosition;
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<Generator>PublicSettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
@ -13,7 +13,7 @@ namespace bsmd.status.Properties {
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
|
||||
@ -67,6 +67,7 @@
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="Status.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
@ -84,7 +85,7 @@
|
||||
<None Include="bsmd.status.licenseheader" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<Generator>PublicSettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user