Version 5.0.5

This commit is contained in:
Daniel Schick 2018-03-26 18:53:32 +00:00
parent 09c4e38513
commit dccb6f178b
15 changed files with 179 additions and 298 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

@ -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.0.4.%2a</ApplicationVersion> <ApplicationVersion>5.0.5.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut> <CreateDesktopShortcut>true</CreateDesktopShortcut>
<PublishWizardCompleted>true</PublishWizardCompleted> <PublishWizardCompleted>true</PublishWizardCompleted>

Binary file not shown.

View File

@ -1110,7 +1110,9 @@ namespace bsmd.ReportGenerator
if (LocalizedLookup.getVesselTypes().ContainsKey(value)) if (LocalizedLookup.getVesselTypes().ContainsKey(value))
result = string.Format("{0} - {1}", value, LocalizedLookup.getVesselTypes()[value]); result = string.Format("{0} - {1}", value, LocalizedLookup.getVesselTypes()[value]);
break; break;
case "INFShipClass":
case "INF-Ship-Class": case "INF-Ship-Class":
case "INF - Ship - Class":
{ {
switch(value) switch(value)
{ {
@ -1121,6 +1123,7 @@ namespace bsmd.ReportGenerator
} }
} }
break; break;
case "PackingGroup":
case "Packing Group": case "Packing Group":
{ {
switch (value) switch (value)

View File

@ -41,7 +41,7 @@ namespace bsmd.database
[ShowReport] [ShowReport]
[LookupName("AGNT.AgentStreetAndNumber")] [LookupName("AGNT.AgentStreetAndNumber")]
[MaxLength(99)] [MaxLength(99)]
[ENI2Validation] [ENI2Validation]
public string AgentStreetAndNumber { get; set; } public string AgentStreetAndNumber { get; set; }

View File

@ -264,6 +264,11 @@ namespace bsmd.database
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "Flashpoint_CEL", null, this.Title, this.Identifier, this.HAZ.IsDeparture ? "HAZD" : "HAZA")); errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "Flashpoint_CEL", null, this.Title, this.Identifier, this.HAZ.IsDeparture ? "HAZD" : "HAZA"));
} }
if(!this.Hazards.HasValue)
{
violations.Add(RuleEngine.CreateViolation(ValidationCode.V810, "Hazards", null, this.Title, this.Identifier, this.HAZ.IsDeparture ? "HAZD" : "HAZA"));
}
} }
#endregion #endregion

View File

@ -2,6 +2,6 @@
[assembly: AssemblyCompany("schick Informatik")] [assembly: AssemblyCompany("schick Informatik")]
[assembly: AssemblyProduct("BSMD NSW interface")] [assembly: AssemblyProduct("BSMD NSW interface")]
[assembly: AssemblyInformationalVersion("5.0.4")] [assembly: AssemblyInformationalVersion("5.0.5")]
[assembly: AssemblyCopyright("Copyright © 2014-2018 schick Informatik")] [assembly: AssemblyCopyright("Copyright © 2014-2018 schick Informatik")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]

View File

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("5.0.4.*")] [assembly: AssemblyVersion("5.0.5.*")]

View File

@ -157,7 +157,11 @@ namespace bsmd.database
// add "generic" validation properties to check list // add "generic" validation properties to check list
props.AddRange(objType.GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(ValidationAttribute)))); props.AddRange(objType.GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(ValidationAttribute))));
// add "block" validation properties to check list // add "block" validation properties to check list
props.AddRange(objType.GetProperties().Where( prop => Attribute.IsDefined(prop, attribType)) ); props.AddRange(objType.GetProperties().Where( prop => Attribute.IsDefined(prop, attribType)) );
// alle "MaxLength" Properties hinzufügen die sonst keine Validierung haben
props.AddRange(objType.GetProperties().Where(prop => (!Attribute.IsDefined(prop, typeof(ValidationAttribute)) &&
!Attribute.IsDefined(prop, attribType) &&
Attribute.IsDefined(prop, typeof(MaxLengthAttribute)))));
foreach (PropertyInfo property in props) foreach (PropertyInfo property in props)
{ {

View File

@ -79,6 +79,7 @@ namespace bsmd.database
V807 = 807, V807 = 807,
V808 = 808, V808 = 808,
V809 = 809, V809 = 809,
V810 = 810,
V821 = 821, V821 = 821,
} }

View File

@ -21,7 +21,7 @@ namespace bsmd.dbh.ResponseService
bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial, bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial,
bsmd.dbh.response.RootReportingClassesError RootReportingClassesError, bsmd.dbh.response.RootReportingClassesError RootReportingClassesError,
bsmd.dbh.response.RootReportingClassesResetted ReportingClassesResetted, bsmd.dbh.response.RootReportingClassesResetted ReportingClassesResetted,
bsmd.dbh.response.Message[] Messages); bsmd.dbh.response.RootMessage[] Messages);
} }

View File

@ -18,7 +18,7 @@ namespace bsmd.dbh.ResponseService
bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial, bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial,
bsmd.dbh.response.RootReportingClassesError RootReportingClassesError, bsmd.dbh.response.RootReportingClassesError RootReportingClassesError,
bsmd.dbh.response.RootReportingClassesResetted ReportingClassesResetted, bsmd.dbh.response.RootReportingClassesResetted ReportingClassesResetted,
bsmd.dbh.response.Message[] Messages) bsmd.dbh.response.RootMessage[] Messages)
{ {
// Der Fehler hier aktuell ist dass alles funktioniert, außer dass "Messages" nicht // Der Fehler hier aktuell ist dass alles funktioniert, außer dass "Messages" nicht

View File

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// Dieser Code wurde von einem Tool generiert. // Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.34209 // Laufzeitversion:4.0.30319.42000
// //
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird. // der Code erneut generiert wird.
@ -11,13 +11,14 @@
using System.Xml.Serialization; using System.Xml.Serialization;
// //
// This source code was auto-generated by xsd, Version=4.0.30319.1. // Dieser Quellcode wurde automatisch generiert von xsd, Version=4.6.1055.0.
// //
namespace bsmd.dbh.response namespace bsmd.dbh.response
{ {
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")] [System.ComponentModel.DesignerCategoryAttribute("code")]
@ -34,8 +35,12 @@ namespace bsmd.dbh.response
private string transitIdField; private string transitIdField;
private string[] sisNumbersField;
private System.DateTime timestampField; private System.DateTime timestampField;
private string senderReferenceField;
private RootType typeField; private RootType typeField;
private RootReportingClassesFull reportingClassesFullField; private RootReportingClassesFull reportingClassesFullField;
@ -46,7 +51,7 @@ namespace bsmd.dbh.response
private RootReportingClassesResetted reportingClassesResettedField; private RootReportingClassesResetted reportingClassesResettedField;
private Message[] messagesField; private RootMessage[] messagesField;
/// <remarks/> /// <remarks/>
public string Version public string Version
@ -100,6 +105,20 @@ namespace bsmd.dbh.response
} }
} }
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("SisNumber", IsNullable = false)]
public string[] SisNumbers
{
get
{
return this.sisNumbersField;
}
set
{
this.sisNumbersField = value;
}
}
/// <remarks/> /// <remarks/>
public System.DateTime Timestamp public System.DateTime Timestamp
{ {
@ -113,6 +132,19 @@ namespace bsmd.dbh.response
} }
} }
/// <remarks/>
public string SenderReference
{
get
{
return this.senderReferenceField;
}
set
{
this.senderReferenceField = value;
}
}
/// <remarks/> /// <remarks/>
public RootType Type public RootType Type
{ {
@ -180,7 +212,7 @@ namespace bsmd.dbh.response
/// <remarks/> /// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("Message", IsNullable = false)] [System.Xml.Serialization.XmlArrayItemAttribute("Message", IsNullable = false)]
public Message[] Messages public RootMessage[] Messages
{ {
get get
{ {
@ -194,7 +226,7 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public enum RootType public enum RootType
@ -217,7 +249,7 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")] [System.ComponentModel.DesignerCategoryAttribute("code")]
@ -225,11 +257,11 @@ namespace bsmd.dbh.response
public partial class RootReportingClassesFull public partial class RootReportingClassesFull
{ {
private RootReportingClassesFullReportingClass[] reportingClassField; private ReportingClassCode[] reportingClassField;
/// <remarks/> /// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("ReportingClass")] [System.Xml.Serialization.XmlElementAttribute("ReportingClass")]
public RootReportingClassesFullReportingClass[] ReportingClass public ReportingClassCode[] ReportingClass
{ {
get get
{ {
@ -243,10 +275,9 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public enum ReportingClassCode
public enum RootReportingClassesFullReportingClass
{ {
/// <remarks/> /// <remarks/>
@ -261,6 +292,9 @@ namespace bsmd.dbh.response
/// <remarks/> /// <remarks/>
SEC, SEC,
/// <remarks/>
AGNT,
/// <remarks/> /// <remarks/>
POBA, POBA,
@ -326,7 +360,7 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")] [System.ComponentModel.DesignerCategoryAttribute("code")]
@ -334,11 +368,11 @@ namespace bsmd.dbh.response
public partial class RootReportingClassesPartial public partial class RootReportingClassesPartial
{ {
private RootReportingClassesPartialReportingClass[] reportingClassField; private ReportingClassCode[] reportingClassField;
/// <remarks/> /// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("ReportingClass")] [System.Xml.Serialization.XmlElementAttribute("ReportingClass")]
public RootReportingClassesPartialReportingClass[] ReportingClass public ReportingClassCode[] ReportingClass
{ {
get get
{ {
@ -352,90 +386,7 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public enum RootReportingClassesPartialReportingClass
{
/// <remarks/>
NOA_NOD,
/// <remarks/>
ATA,
/// <remarks/>
ATD,
/// <remarks/>
SEC,
/// <remarks/>
POBA,
/// <remarks/>
POBD,
/// <remarks/>
NAME,
/// <remarks/>
TIEFA,
/// <remarks/>
TIEFD,
/// <remarks/>
BKRA,
/// <remarks/>
BKRD,
/// <remarks/>
STAT,
/// <remarks/>
LADG,
/// <remarks/>
INFO,
/// <remarks/>
SERV,
/// <remarks/>
PRE72H,
/// <remarks/>
MDH,
/// <remarks/>
WAS,
/// <remarks/>
CREW,
/// <remarks/>
PAS,
/// <remarks/>
BPOL,
/// <remarks/>
TOWA,
/// <remarks/>
TOWD,
/// <remarks/>
HAZA,
/// <remarks/>
HAZD,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")] [System.ComponentModel.DesignerCategoryAttribute("code")]
@ -443,11 +394,11 @@ namespace bsmd.dbh.response
public partial class RootReportingClassesError public partial class RootReportingClassesError
{ {
private RootReportingClassesErrorReportingClass[] reportingClassField; private ReportingClassCode[] reportingClassField;
/// <remarks/> /// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("ReportingClass")] [System.Xml.Serialization.XmlElementAttribute("ReportingClass")]
public RootReportingClassesErrorReportingClass[] ReportingClass public ReportingClassCode[] ReportingClass
{ {
get get
{ {
@ -461,90 +412,7 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public enum RootReportingClassesErrorReportingClass
{
/// <remarks/>
NOA_NOD,
/// <remarks/>
ATA,
/// <remarks/>
ATD,
/// <remarks/>
SEC,
/// <remarks/>
POBA,
/// <remarks/>
POBD,
/// <remarks/>
NAME,
/// <remarks/>
TIEFA,
/// <remarks/>
TIEFD,
/// <remarks/>
BKRA,
/// <remarks/>
BKRD,
/// <remarks/>
STAT,
/// <remarks/>
LADG,
/// <remarks/>
INFO,
/// <remarks/>
SERV,
/// <remarks/>
PRE72H,
/// <remarks/>
MDH,
/// <remarks/>
WAS,
/// <remarks/>
CREW,
/// <remarks/>
PAS,
/// <remarks/>
BPOL,
/// <remarks/>
TOWA,
/// <remarks/>
TOWD,
/// <remarks/>
HAZA,
/// <remarks/>
HAZD,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")] [System.ComponentModel.DesignerCategoryAttribute("code")]
@ -552,11 +420,11 @@ namespace bsmd.dbh.response
public partial class RootReportingClassesResetted public partial class RootReportingClassesResetted
{ {
private RootReportingClassesResettedReportingClass[] reportingClassField; private ReportingClassCode[] reportingClassField;
/// <remarks/> /// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("ReportingClass")] [System.Xml.Serialization.XmlElementAttribute("ReportingClass")]
public RootReportingClassesResettedReportingClass[] ReportingClass public ReportingClassCode[] ReportingClass
{ {
get get
{ {
@ -570,95 +438,12 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public enum RootReportingClassesResettedReportingClass
{
/// <remarks/>
NOA_NOD,
/// <remarks/>
ATA,
/// <remarks/>
ATD,
/// <remarks/>
SEC,
/// <remarks/>
POBA,
/// <remarks/>
POBD,
/// <remarks/>
NAME,
/// <remarks/>
TIEFA,
/// <remarks/>
TIEFD,
/// <remarks/>
BKRA,
/// <remarks/>
BKRD,
/// <remarks/>
STAT,
/// <remarks/>
LADG,
/// <remarks/>
INFO,
/// <remarks/>
SERV,
/// <remarks/>
PRE72H,
/// <remarks/>
MDH,
/// <remarks/>
WAS,
/// <remarks/>
CREW,
/// <remarks/>
PAS,
/// <remarks/>
BPOL,
/// <remarks/>
TOWA,
/// <remarks/>
TOWD,
/// <remarks/>
HAZA,
/// <remarks/>
HAZD,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")] [System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class Message public partial class RootMessage
{ {
private string idField; private string idField;
@ -723,7 +508,7 @@ namespace bsmd.dbh.response
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()] [System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public enum RootMessageType public enum RootMessageType
@ -741,5 +526,4 @@ namespace bsmd.dbh.response
/// <remarks/> /// <remarks/>
ERROR, ERROR,
} }
} }

View File

@ -1249,7 +1249,27 @@ namespace bsmd.dbh
rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? DBHWebReference.RootSECValidISSCOnBoard.Y : DBHWebReference.RootSECValidISSCOnBoard.N; rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? DBHWebReference.RootSECValidISSCOnBoard.Y : DBHWebReference.RootSECValidISSCOnBoard.N;
rootIMDG.ContainerNumber = imdgPos.ContainerNumber; rootIMDG.ContainerNumber = imdgPos.ContainerNumber;
rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber; rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber;
// rootIMDG.StowagePosition = imdgPos.StowagePosition;
if (imdgPos.StowagePosition.IsNullOrEmpty())
{
rootIMDG.Items = new string[3];
rootIMDG.ItemsElementName = new ItemsChoiceType4[3];
rootIMDG.Items[0] = imdgPos.Bay;
rootIMDG.ItemsElementName[0] = ItemsChoiceType4.Bay;
rootIMDG.Items[1] = imdgPos.Row;
rootIMDG.ItemsElementName[1] = ItemsChoiceType4.Row;
rootIMDG.Items[2] = imdgPos.Tier;
rootIMDG.ItemsElementName[2] = ItemsChoiceType4.Tier;
}
else
{
rootIMDG.Items = new string[1] { imdgPos.StowagePosition };
rootIMDG.ItemsElementName = new ItemsChoiceType4[1] { ItemsChoiceType4.StowagePosition };
}
rootIMDG.PortOfLoading = imdgPos.PortOfLoading; rootIMDG.PortOfLoading = imdgPos.PortOfLoading;
rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge; rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge;
rootIMDG.Remarks = imdgPos.Remarks; rootIMDG.Remarks = imdgPos.Remarks;
@ -1482,7 +1502,27 @@ namespace bsmd.dbh
rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N; rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N;
rootIMDG.ContainerNumber = imdgPos.ContainerNumber; rootIMDG.ContainerNumber = imdgPos.ContainerNumber;
rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber; rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber;
//rootIMDG.StowagePosition = imdgPos.StowagePosition;
if (imdgPos.StowagePosition.IsNullOrEmpty())
{
rootIMDG.Items = new string[3];
rootIMDG.ItemsElementName = new ItemsChoiceType4[3];
rootIMDG.Items[0] = imdgPos.Bay;
rootIMDG.ItemsElementName[0] = ItemsChoiceType4.Bay;
rootIMDG.Items[1] = imdgPos.Row;
rootIMDG.ItemsElementName[1] = ItemsChoiceType4.Row;
rootIMDG.Items[2] = imdgPos.Tier;
rootIMDG.ItemsElementName[2] = ItemsChoiceType4.Tier;
}
else
{
rootIMDG.Items = new string[1] { imdgPos.StowagePosition };
rootIMDG.ItemsElementName = new ItemsChoiceType4[1] { ItemsChoiceType4.StowagePosition };
}
rootIMDG.PortOfLoading = imdgPos.PortOfLoading; rootIMDG.PortOfLoading = imdgPos.PortOfLoading;
rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge; rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge;
rootIMDG.Remarks = imdgPos.Remarks; rootIMDG.Remarks = imdgPos.Remarks;

View File

@ -22,10 +22,10 @@ namespace bsmd.dbh
private static ILog _log = LogManager.GetLogger("dbh Response"); private static ILog _log = LogManager.GetLogger("dbh Response");
public static void ProcessResponse(string VisitId, string TransitId, DateTime Timestamp, public static void ProcessResponse(string VisitId, string TransitId, DateTime Timestamp,
string SenderReference, response.RootType Type, bsmd.dbh.response.Message[] Messages, string SenderReference, response.RootType Type, bsmd.dbh.response.RootMessage[] Messages,
bsmd.dbh.response.RootReportingClassesFull ReportingClassesFull, bsmd.dbh.response.RootReportingClassesFull ReportingClassesFull,
bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial, bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial,
bsmd.dbh.response.RootReportingClassesError RootReportingClassesError, bsmd.dbh.response.RootReportingClassesError ReportingClassesError,
bsmd.dbh.response.RootReportingClassesResetted ReportingClassesResetted, bsmd.dbh.response.RootReportingClassesResetted ReportingClassesResetted,
string connectionString) string connectionString)
{ {
@ -52,8 +52,14 @@ namespace bsmd.dbh
} }
DatabaseEntity dbEntity = DBManager.Instance.GetMessageById(messageId); DatabaseEntity dbEntity = DBManager.Instance.GetMessageById(messageId);
if (dbEntity != null) Message aMessage = dbEntity as Message;
if (aMessage != null)
{
_log.InfoFormat("Message type {0} found for SenderReference {1}", ((Message)dbEntity).MessageNotificationClassDisplay, messageId); _log.InfoFormat("Message type {0} found for SenderReference {1}", ((Message)dbEntity).MessageNotificationClassDisplay, messageId);
foreach (MessageError existingError in aMessage.ErrorList)
DBManager.Instance.Delete(existingError);
}
MessageCore aCore = null; MessageCore aCore = null;
if (dbEntity == null) if (dbEntity == null)
@ -65,6 +71,7 @@ namespace bsmd.dbh
aCore.BSMDStatusInternal = MessageCore.BSMDStatus.RESPONDED; aCore.BSMDStatusInternal = MessageCore.BSMDStatus.RESPONDED;
aCore.Cancelled = true; aCore.Cancelled = true;
DBManager.Instance.Save(aCore); DBManager.Instance.Save(aCore);
return;
} }
} }
@ -78,24 +85,28 @@ namespace bsmd.dbh
{ {
_log.WarnFormat("SenderReference DB Entity Object is no MessageHeader, aborting ({0})", dbEntity.GetType()); _log.WarnFormat("SenderReference DB Entity Object is no MessageHeader, aborting ({0})", dbEntity.GetType());
return; return;
} }
Message aMessage = dbEntity as Message;
switch (Type) switch (Type)
{ {
case dbh.response.RootType.VISIT: case dbh.response.RootType.VISIT:
// neue VISIT - ID _log.InfoFormat("Visit-Id received: {0}", VisitId ?? "??!");
if(!VisitId.IsNullOrEmpty()) if(!VisitId.IsNullOrEmpty())
aMessage.MessageCore.VisitId = VisitId; aMessage.MessageCore.VisitId = VisitId;
aMessage.MessageCore.BSMDStatusInternal = MessageCore.BSMDStatus.PREPARE; aMessage.MessageCore.BSMDStatusInternal = MessageCore.BSMDStatus.PREPARE;
aMessage.SendSuccess = true; aMessage.SendSuccess = true;
DBManager.Instance.Save(aMessage.MessageCore); DBManager.Instance.Save(aMessage.MessageCore);
aMessage.InternalStatus = Message.BSMDStatus.CONFIRMED;
DBManager.Instance.Save(aMessage);
break; break;
case dbh.response.RootType.TRANSIT: case dbh.response.RootType.TRANSIT:
_log.InfoFormat("Transit-Id received: {0}", TransitId ?? "??!");
aMessage.MessageCore.TransitId = TransitId; aMessage.MessageCore.TransitId = TransitId;
aMessage.MessageCore.BSMDStatusInternal = MessageCore.BSMDStatus.PREPARE; aMessage.MessageCore.BSMDStatusInternal = MessageCore.BSMDStatus.PREPARE;
aMessage.SendSuccess = true; aMessage.SendSuccess = true;
DBManager.Instance.Save(aMessage.MessageCore); DBManager.Instance.Save(aMessage.MessageCore);
aMessage.InternalStatus = Message.BSMDStatus.CONFIRMED;
DBManager.Instance.Save(aMessage);
break; break;
case dbh.response.RootType.RESET: case dbh.response.RootType.RESET:
// Die Liste ist auch bei erfolgtem RESET offenbar immer NULL... // Die Liste ist auch bei erfolgtem RESET offenbar immer NULL...
@ -116,15 +127,48 @@ namespace bsmd.dbh
aMessage.SendSuccess = true; aMessage.SendSuccess = true;
aMessage.InternalStatus = Message.BSMDStatus.CONFIRMED; aMessage.InternalStatus = Message.BSMDStatus.CONFIRMED;
aMessage.Status = Message.MessageStatus.ACCEPTED; aMessage.Status = Message.MessageStatus.ACCEPTED;
_log.InfoFormat("CONFIRMED"); _log.InfoFormat("full message class accepted");
} }
else if ((ReportingClassesPartial != null) && (ReportingClassesPartial.ReportingClass.Length > 0))
{ {
_log.InfoFormat("no match"); // this was successful, save status to MessageHeader
aMessage.SendSuccess = true;
aMessage.InternalStatus = Message.BSMDStatus.ERROR;
aMessage.Status = Message.MessageStatus.ACCEPTED;
_log.InfoFormat("partial message class accepted");
} }
if ((ReportingClassesError != null) && (ReportingClassesError.ReportingClass.Length > 0))
{
// this was successful, save status to MessageHeader
aMessage.SendSuccess = true;
aMessage.InternalStatus = Message.BSMDStatus.ERROR;
aMessage.Status = Message.MessageStatus.ACCEPTED;
_log.InfoFormat("message class accepted but error");
}
// check the whole thing for completion
MessageCore core = DBManager.Instance.GetMessageCoreById(aMessage.MessageCoreId.Value);
bool stillSomethingSent = false;
foreach(Message message in DBManager.Instance.GetMessagesForCore(core, DBManager.MessageLoad.ALL))
{
if (aMessage.Id.Value == message.Id.Value) continue;
if(message.InternalStatus == Message.BSMDStatus.SENT)
{
stillSomethingSent = true;
break;
}
}
if(!stillSomethingSent && (core.BSMDStatusInternal == MessageCore.BSMDStatus.SENT))
{
core.BSMDStatusInternal = MessageCore.BSMDStatus.RESPONDED;
DBManager.Instance.Save(core);
}
break; break;
} }
if (Messages != null) if (Messages != null)
{ {
// Status zu den jeweiligen Nachrichten. Bei uns sollte die Anzahl hier immer 1 sein, da wir die Dinger // Status zu den jeweiligen Nachrichten. Bei uns sollte die Anzahl hier immer 1 sein, da wir die Dinger