alles in Arbeit
This commit is contained in:
parent
12fd2f9f8f
commit
5f9884e4ec
@ -23,6 +23,8 @@ Im Proxy und backend web.config m
|
||||
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
|
||||
</system.serviceModel>
|
||||
|
||||
Außerdem ganz wichtig! Im Backend-Server muss die Komprimierung deaktiviert werden, da sonst das outbound rewrite nicht funktioniert
|
||||
|
||||
|
||||
Global rewrite rules are used to define server-wide URL rewriting logic. These rules are defined within applicationHost.config file and they cannot be overridden or disabled on any lower configuration levels, such as site or virtual directory. Global rules always operate on the absolute URL path (that is, requested URI without the server name). For example if a request was made to http://localhost/directory1/directory2/index.html, then the URL rewrite module will pass “directory1/directory2/index.html” as an input to a global rule.
|
||||
|
||||
|
||||
Binary file not shown.
BIN
nsw/SLA NSW-Kernsystem und HIS.pdf
Normal file
BIN
nsw/SLA NSW-Kernsystem und HIS.pdf
Normal file
Binary file not shown.
BIN
nsw/SLA NSW-Kernsystem und Organisation.pdf
Normal file
BIN
nsw/SLA NSW-Kernsystem und Organisation.pdf
Normal file
Binary file not shown.
165
nsw/Source/SQL/Update_1.5_To_1.6.sql
Normal file
165
nsw/Source/SQL/Update_1.5_To_1.6.sql
Normal file
@ -0,0 +1,165 @@
|
||||
-- neue Tabellen für Gefahrgutanmeldung (jetzt doch!)
|
||||
|
||||
CREATE TABLE [dbo].[HAZA]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_HAZA_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[MessageHeaderId] UNIQUEIDENTIFIER NULL,
|
||||
[NoDPGOnBoardOnArrival] BIT NULL,
|
||||
[DPGManifestOnBoardOnArrival] BIT NULL,
|
||||
[INFShipClass] TINYINT NULL,
|
||||
[DPGClassificationIMDG] BIT NULL,
|
||||
[DPGClassificationIGC] BIT NULL,
|
||||
[DPGClassificationIBC] BIT NULL,
|
||||
[DPGClassificationIMSBC] BIT NULL,
|
||||
[DPGClassificationMARPOL_ANNEX_I] BIT NULL,
|
||||
CONSTRAINT [PK_HAZA] PRIMARY KEY CLUSTERED ([Id] ASC),
|
||||
CONSTRAINT [FK_HAZA_MessageHeader] FOREIGN KEY ([MessageHeaderId]) REFERENCES [dbo].[MessageHeader] ([Id])
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[HAZD]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_HAZD_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[MessageHeaderId] UNIQUEIDENTIFIER NULL,
|
||||
[NoDPGOnBoardOnDeparture] BIT NULL,
|
||||
[DPGManifestOnBoardOnDeparture] BIT NULL,
|
||||
[INFShipClass] TINYINT NULL,
|
||||
[DPGClassificationIMDG] BIT NULL,
|
||||
[DPGClassificationIGC] BIT NULL,
|
||||
[DPGClassificationIBC] BIT NULL,
|
||||
[DPGClassificationIMSBC] BIT NULL,
|
||||
[DPGClassificationMARPOL_ANNEX_I] BIT NULL,
|
||||
CONSTRAINT [PK_HAZD] PRIMARY KEY CLUSTERED ([Id] ASC),
|
||||
CONSTRAINT [FK_HAZD_MessageHeader] FOREIGN KEY ([MessageHeaderId]) REFERENCES [dbo].[MessageHeader] ([Id])
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[IMDGPosition]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_IMDGPosition_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[HAZId] UNIQUEIDENTIFIER NULL,
|
||||
[UNNumber] NVARCHAR (10) NULL,
|
||||
[PackingGroup] TINYINT NULL,
|
||||
[ProperShippingName] NVARCHAR (255) NULL,
|
||||
[IMOClass] NVARCHAR (10) NULL,
|
||||
[CompatibilityGroup] NVARCHAR (10) NULL,
|
||||
[TechnicalName] NVARCHAR (255) NULL,
|
||||
[NetExplosiveMass_KGM] FLOAT (53) NULL,
|
||||
[Flashpoint_CEL] NVARCHAR (10) NULL,
|
||||
[Class7NuclideName] NVARCHAR (100) NULL,
|
||||
[Class7MaxActivity_BQL] FLOAT (53) NULL,
|
||||
[Class7Category] INT NULL,
|
||||
[Class7TransportIndex] FLOAT (53) NULL,
|
||||
[Class7CSI] INT NULL,
|
||||
[ControlTemperature_CEL] FLOAT (53) NULL,
|
||||
[EmergencyTemperature_CEL] FLOAT (53) NULL,
|
||||
[MarinePollutant] BIT NULL,
|
||||
[NumberOfPackages] INT NULL,
|
||||
[PackageType] NVARCHAR (255) NULL,
|
||||
[LimitedQuantities] BIT NULL,
|
||||
[ExceptedQuantities] BIT NULL,
|
||||
[NetQuantity_KGM] FLOAT (53) NULL,
|
||||
[GrossQuantity_KGM] FLOAT (53) NULL,
|
||||
[Volume_MTQ] FLOAT (53) NULL,
|
||||
[GeneralCargoIBC] BIT NULL,
|
||||
[ContainerNumber] NVARCHAR (24) NULL,
|
||||
[VehicleLicenseNumber] NVARCHAR (24) NULL,
|
||||
[StowagePosition] NVARCHAR (24) NULL,
|
||||
[PortOfLoading] NCHAR(5) NULL,
|
||||
[PortOfDischarge] NCHAR(5) NULL,
|
||||
[Remarks] NVARCHAR (255) NULL,
|
||||
[Identifier] NVARCHAR (40) NULL,
|
||||
CONSTRAINT [PK_IMDGPosition] PRIMARY KEY CLUSTERED ([Id] ASC)
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[SubsidiaryRisks]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_SubsidiaryRisks_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[IMDGPositionId] UNIQUEIDENTIFIER NULL,
|
||||
[SubsidiaryRisk] NVARCHAR (11) NULL,
|
||||
CONSTRAINT [PK_SubsidiaryRisks] PRIMARY KEY CLUSTERED ([Id] ASC)
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[IBCPosition]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_IBCPosition_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[HAZId] UNIQUEIDENTIFIER NULL,
|
||||
[ProductName] NVARCHAR (255) NULL,
|
||||
[ProductCategory] TINYINT NULL,
|
||||
[Hazards] TINYINT NULL,
|
||||
[FlashpointInformation] TINYINT NULL,
|
||||
[Flashpoint_CEL] NVARCHAR (11) NULL,
|
||||
[Quantity_KGM] FLOAT (53) NULL,
|
||||
[StowagePosition] NVARCHAR (24) NULL,
|
||||
[PortOfLoading] NCHAR(5) NULL,
|
||||
[PortOfDischarge] NCHAR(5) NULL,
|
||||
[SpecRef15_19] BIT NULL,
|
||||
[Remarks] NVARCHAR (255) NULL,
|
||||
[Identifier] NVARCHAR (40) NULL,
|
||||
CONSTRAINT [PK_IBCPosition] PRIMARY KEY CLUSTERED ([Id] ASC)
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[IGCPosition]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_IGCPosition_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[HAZId] UNIQUEIDENTIFIER NULL,
|
||||
[UNNumber] NVARCHAR (4) NULL,
|
||||
[IMOClass] NVARCHAR (10) NULL,
|
||||
[ProductName] NVARCHAR (255) NULL,
|
||||
[Quantity_KGM] FLOAT (53) NULL,
|
||||
[StowagePosition] NVARCHAR (24) NULL,
|
||||
[PortOfLoading] NCHAR(5) NULL,
|
||||
[PortOfDischarge] NCHAR(5) NULL,
|
||||
[Remarks] NVARCHAR (255) NULL,
|
||||
[Identifier] NVARCHAR (40) NULL,
|
||||
CONSTRAINT [PK_IGCPosition] PRIMARY KEY CLUSTERED ([Id] ASC)
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[IMSBCPosition]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_IMSBCPosition_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[HAZId] UNIQUEIDENTIFIER NULL,
|
||||
[BulkCargoShippingName] NVARCHAR (255) NULL,
|
||||
[MHB] BIT NULL,
|
||||
[UNNumber] NVARCHAR (4) NULL,
|
||||
[IMOClass] NVARCHAR (10) NULL,
|
||||
[Quantity_KGM] FLOAT (53) NULL,
|
||||
[StowagePosition] NVARCHAR (24) NULL,
|
||||
[PortOfLoading] NCHAR(5) NULL,
|
||||
[PortOfDischarge] NCHAR(5) NULL,
|
||||
[Remarks] NVARCHAR (255) NULL,
|
||||
[Identifier] NVARCHAR (40) NULL,
|
||||
CONSTRAINT [PK_IMSBCPosition] PRIMARY KEY CLUSTERED ([Id] ASC)
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[MARPOL_Annex_IPosition]
|
||||
(
|
||||
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_MARPOL_Annex_IPosition_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL,
|
||||
[HAZId] UNIQUEIDENTIFIER NULL,
|
||||
[Name] NVARCHAR (255) NULL,
|
||||
[FlashpointInformation] TINYINT NULL,
|
||||
[Flashpoint_CEL] NVARCHAR (10) NULL,
|
||||
[Quantity_KGM] FLOAT (53) NULL,
|
||||
[StowagePosition] NVARCHAR (24) NULL,
|
||||
[PortOfLoading] NCHAR (5) NULL,
|
||||
[PortOfDischarge] NCHAR (5) NULL,
|
||||
[Remarks] NVARCHAR (255) NULL,
|
||||
[Identifier] NVARCHAR (40) NULL,
|
||||
CONSTRAINT [PK_MARPOL_Annex_IPosition] PRIMARY KEY CLUSTERED ([Id] ASC)
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
|
||||
@ -77,7 +77,7 @@ namespace bsmd.dakosy
|
||||
reqList.RequestId[0].MessageHeader.MessageSender = new Participant();
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode = new ParticipantCode();
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode.AgencyID = "DAK";
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode.Value = "TBD"; // TODO -> Absprache!
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode.Value = "BSM"; // TODO -> Absprache!
|
||||
reqList.RequestId[0].ReportingParty = new ReportingParty();
|
||||
reqList.RequestId[0].ReportingParty.City = aMessage.ReportingParty.City;
|
||||
reqList.RequestId[0].ReportingParty.Country = aMessage.ReportingParty.Country;
|
||||
|
||||
97
nsw/Source/bsmd.database/CallPurpose.cs
Normal file
97
nsw/Source/bsmd.database/CallPurpose.cs
Normal file
@ -0,0 +1,97 @@
|
||||
//
|
||||
// Class: CallPurpose
|
||||
// Current CLR: 4.0.30319.34209
|
||||
// System: Microsoft Visual Studio 10.0
|
||||
// Author: dani
|
||||
// Created: 5/20/2015 8:16:09 PM
|
||||
//
|
||||
// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved.
|
||||
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace bsmd.database
|
||||
{
|
||||
public class CallPurpose : DatabaseEntity
|
||||
{
|
||||
|
||||
public CallPurpose()
|
||||
{
|
||||
this.tablename = "[dbo].[CallPurpose]";
|
||||
}
|
||||
|
||||
#region Properties
|
||||
|
||||
public NOA_NOD NOA_NOD { get; set; }
|
||||
|
||||
public int CallPurposeCode { get; set; }
|
||||
|
||||
public string CallPurposeDescription { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region DatabaseEntity implementation
|
||||
|
||||
public override void PrepareSave(System.Data.IDbCommand cmd)
|
||||
{
|
||||
SqlCommand scmd = cmd as SqlCommand;
|
||||
|
||||
scmd.Parameters.AddWithValue("@P1", this.NOA_NOD.Id);
|
||||
scmd.Parameters.AddWithNullableValue("@P2", this.CallPurposeCode);
|
||||
scmd.Parameters.AddWithNullableValue("@P3", this.CallPurposeDescription);
|
||||
|
||||
if (this.IsNew)
|
||||
{
|
||||
scmd.CommandText = string.Format("INSERT INTO {0} (NOA_NODId, CallPurposeCode, CallPurposeDescription) " +
|
||||
" VALUES ( @P1, @P2, @P3 )", this.Tablename);
|
||||
}
|
||||
else
|
||||
{
|
||||
scmd.Parameters.AddWithValue(@"ID", this.Id);
|
||||
scmd.CommandText = string.Format("UPDATE {0} SET CallPurposeCode = @P2, CallPurposeDescription = @P3 " +
|
||||
"WHERE Id = @ID", this.Tablename);
|
||||
}
|
||||
}
|
||||
|
||||
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
||||
{
|
||||
string query = string.Format("SELECT Id, CallPurposeCode, CallPurposeDescription FROM {0} ", this.Tablename);
|
||||
|
||||
switch (filter)
|
||||
{
|
||||
case Message.LoadFilter.NOA_NODID:
|
||||
query += " WHERE NOA_NODId = @NNID";
|
||||
((SqlCommand)cmd).Parameters.AddWithValue("@NNID", criteria[0]);
|
||||
break;
|
||||
case Message.LoadFilter.ALL:
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
cmd.CommandText = query;
|
||||
}
|
||||
|
||||
public override List<DatabaseEntity> LoadList(System.Data.IDataReader reader)
|
||||
{
|
||||
List<DatabaseEntity> result = new List<DatabaseEntity>();
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
CallPurpose cp = new CallPurpose();
|
||||
|
||||
cp.id = reader.GetGuid(0);
|
||||
if (!reader.IsDBNull(1)) cp.CallPurposeCode = reader.GetInt32(1);
|
||||
if (!reader.IsDBNull(2)) cp.CallPurposeDescription = reader.GetString(2);
|
||||
result.Add(cp);
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@ -423,11 +423,25 @@ namespace bsmd.database
|
||||
was.Waste.Add(aWaste);
|
||||
aWaste.WAS = was;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
if (databaseEntity.GetType().IsAssignableFrom(typeof(NOA_NOD)))
|
||||
{
|
||||
NOA_NOD noa_nod = databaseEntity as NOA_NOD;
|
||||
|
||||
CallPurpose cp = new CallPurpose();
|
||||
cp.PrepareLoadCommand(cmd, Message.LoadFilter.NOA_NODID, noa_nod.Id);
|
||||
SqlDataReader reader = this.PerformCommand(cmd);
|
||||
List<DatabaseEntity> cps = cp.LoadList(reader);
|
||||
foreach (CallPurpose callPurpose in cps)
|
||||
{
|
||||
noa_nod.CallPurposes.Add(callPurpose);
|
||||
callPurpose.NOA_NOD = noa_nod;
|
||||
}
|
||||
}
|
||||
|
||||
#region WasteDisposalServiceProvider
|
||||
|
||||
if(databaseEntity.GetType().IsAssignableFrom(typeof(WasteDisposalServiceProvider)))
|
||||
|
||||
64
nsw/Source/bsmd.database/Extensions.cs
Normal file
64
nsw/Source/bsmd.database/Extensions.cs
Normal file
@ -0,0 +1,64 @@
|
||||
//
|
||||
// Class: Extensions
|
||||
// Current CLR: 4.0.30319.34209
|
||||
// System: Microsoft Visual Studio 10.0
|
||||
// Author: dani
|
||||
// Created: 5/13/2015 7:37:03 PM
|
||||
//
|
||||
// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
|
||||
namespace bsmd.database
|
||||
{
|
||||
/// <summary>
|
||||
/// sensible helpers
|
||||
/// </summary>
|
||||
public static class Extensions
|
||||
{
|
||||
|
||||
public static bool IsNullOrEmpty(this String str)
|
||||
{
|
||||
if (str == null) return true;
|
||||
if (str.Trim().Length == 0) return true;
|
||||
if (str.Equals("00000000-0000-0000-0000-000000000000")) return true; // for null guids
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsNullOrEmpty<T>(this List<T> items)
|
||||
{
|
||||
return (items == null) || (items.Count == 0);
|
||||
}
|
||||
|
||||
public static bool IsNullOrEmpty<T>(this Dictionary<T, T> items)
|
||||
{
|
||||
return (items == null) || (items.Count == 0);
|
||||
}
|
||||
|
||||
public static bool IsNumber(this String str)
|
||||
{
|
||||
string pattern = @"^[1-9]\d*(\.\d+)?$";
|
||||
if (str == null) return false;
|
||||
if (str.Trim().Length == 0) return false;
|
||||
return new Regex(pattern).IsMatch(str);
|
||||
}
|
||||
|
||||
public static bool IsBoolean(this String str)
|
||||
{
|
||||
if (str == null) return false;
|
||||
if (str.Trim().Length == 0) return false;
|
||||
if (str.Trim().Equals("true", StringComparison.InvariantCultureIgnoreCase)) return true;
|
||||
if (str.Trim().Equals("false", StringComparison.InvariantCultureIgnoreCase)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool Contains(this string source, string toCheck, StringComparison comp)
|
||||
{
|
||||
return source.IndexOf(toCheck, comp) >= 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -82,12 +82,12 @@ namespace bsmd.database
|
||||
{
|
||||
string query = string.Format("SELECT Id, PortFacilityPortName, PortFacilityPortCountry, PortFacilityPortLoCode, " +
|
||||
"PortFacilityDateOfArrival, PortFacilityDateOfDeparture, PortFacilityShipSecurityLevel, PortFacilitySecurityMattersToReport, " +
|
||||
"PortFacilityGISISCode FROM {0}", this.Tablename);
|
||||
"PortFacilityGISISCode FROM {0} ", this.Tablename);
|
||||
|
||||
switch (filter)
|
||||
{
|
||||
case Message.LoadFilter.SEC_ID:
|
||||
query += "WHERE SEC_Id = @SECID";
|
||||
query += " WHERE SEC_Id = @SECID";
|
||||
((SqlCommand)cmd).Parameters.AddWithValue("@SECID", criteria[0]);
|
||||
break;
|
||||
case Message.LoadFilter.ALL:
|
||||
@ -96,6 +96,8 @@ namespace bsmd.database
|
||||
break;
|
||||
}
|
||||
|
||||
query += " ORDER BY PortFacilityDateOfArrival DESC"; // jüngster Eintrag zuerst
|
||||
|
||||
cmd.CommandText = query;
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,8 @@ namespace bsmd.database
|
||||
SEC_ID,
|
||||
HERBERG_FORMGUID,
|
||||
BY_ID,
|
||||
BY_CORE
|
||||
BY_CORE,
|
||||
NOA_NODID
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -17,6 +17,8 @@ namespace bsmd.database
|
||||
public class NOA_NOD : DatabaseEntity
|
||||
{
|
||||
|
||||
List<CallPurpose> callPurposes = new List<CallPurpose>();
|
||||
|
||||
public NOA_NOD()
|
||||
{
|
||||
this.tablename = "[dbo].[NOA_NOD]";
|
||||
@ -28,9 +30,7 @@ namespace bsmd.database
|
||||
|
||||
public DateTime? ETDFromPortOfCall { get; set; }
|
||||
|
||||
public int? CallPurposeCode { get; set; }
|
||||
|
||||
public string CallPurposeDescription { get; set; }
|
||||
public List<CallPurpose> CallPurposes { get { return this.callPurposes; } }
|
||||
|
||||
public DateTime? ETAToKielCanal { get; set; }
|
||||
|
||||
@ -50,7 +50,7 @@ namespace bsmd.database
|
||||
|
||||
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
||||
{
|
||||
string query = string.Format("SELECT Id, ETAToPortOfCall, ETDFromPortOfCall, CallPurposeCode, CallPurposeDescription, " +
|
||||
string query = string.Format("SELECT Id, ETAToPortOfCall, ETDFromPortOfCall, " +
|
||||
"ETAToKielCanal, ETDFromKielCanal, LastPort, ETDFromLastPort, NextPort, ETAToNextPort FROM {0}", this.Tablename);
|
||||
|
||||
switch (filter)
|
||||
@ -77,14 +77,12 @@ namespace bsmd.database
|
||||
nn.id = reader.GetGuid(0);
|
||||
if (!reader.IsDBNull(1)) nn.ETAToPortOfCall = reader.GetDateTime(1);
|
||||
if (!reader.IsDBNull(2)) nn.ETDFromPortOfCall = reader.GetDateTime(2);
|
||||
if (!reader.IsDBNull(3)) nn.CallPurposeCode = reader.GetInt32(3);
|
||||
if (!reader.IsDBNull(4)) nn.CallPurposeDescription = reader.GetString(4);
|
||||
if (!reader.IsDBNull(5)) nn.ETAToKielCanal = reader.GetDateTime(5);
|
||||
if (!reader.IsDBNull(6)) nn.ETDFromKielCanal = reader.GetDateTime(6);
|
||||
if (!reader.IsDBNull(7)) nn.LastPort = reader.GetString(7);
|
||||
if (!reader.IsDBNull(8)) nn.ETDFromLastPort = reader.GetDateTime(8);
|
||||
if (!reader.IsDBNull(9)) nn.NextPort = reader.GetString(9);
|
||||
if (!reader.IsDBNull(10)) nn.ETAToNextPort = reader.GetDateTime(10);
|
||||
if (!reader.IsDBNull(3)) nn.ETAToKielCanal = reader.GetDateTime(5);
|
||||
if (!reader.IsDBNull(4)) nn.ETDFromKielCanal = reader.GetDateTime(6);
|
||||
if (!reader.IsDBNull(5)) nn.LastPort = reader.GetString(7);
|
||||
if (!reader.IsDBNull(6)) nn.ETDFromLastPort = reader.GetDateTime(8);
|
||||
if (!reader.IsDBNull(7)) nn.NextPort = reader.GetString(9);
|
||||
if (!reader.IsDBNull(8)) nn.ETAToNextPort = reader.GetDateTime(10);
|
||||
result.Add(nn);
|
||||
}
|
||||
reader.Close();
|
||||
@ -97,29 +95,27 @@ namespace bsmd.database
|
||||
|
||||
scmd.Parameters.AddWithNullableValue("@P1", this.MessageHeader.Id);
|
||||
scmd.Parameters.AddWithNullableValue("@P2", this.ETAToPortOfCall);
|
||||
scmd.Parameters.AddWithNullableValue("@P3", this.ETDFromPortOfCall);
|
||||
scmd.Parameters.AddWithNullableValue("@P4", this.CallPurposeCode);
|
||||
scmd.Parameters.AddWithNullableValue("@P5", this.CallPurposeDescription);
|
||||
scmd.Parameters.AddWithNullableValue("@P6", this.ETAToKielCanal);
|
||||
scmd.Parameters.AddWithNullableValue("@P7", this.ETDFromKielCanal);
|
||||
scmd.Parameters.AddWithNullableValue("@P8", this.LastPort);
|
||||
scmd.Parameters.AddWithNullableValue("@P9", this.ETDFromLastPort);
|
||||
scmd.Parameters.AddWithNullableValue("@P10", this.NextPort);
|
||||
scmd.Parameters.AddWithNullableValue("@P11", this.ETAToNextPort);
|
||||
scmd.Parameters.AddWithNullableValue("@P3", this.ETDFromPortOfCall);
|
||||
scmd.Parameters.AddWithNullableValue("@P4", this.ETAToKielCanal);
|
||||
scmd.Parameters.AddWithNullableValue("@P5", this.ETDFromKielCanal);
|
||||
scmd.Parameters.AddWithNullableValue("@P6", this.LastPort);
|
||||
scmd.Parameters.AddWithNullableValue("@P7", this.ETDFromLastPort);
|
||||
scmd.Parameters.AddWithNullableValue("@P8", this.NextPort);
|
||||
scmd.Parameters.AddWithNullableValue("@P9", this.ETAToNextPort);
|
||||
|
||||
if (this.IsNew)
|
||||
{
|
||||
cmd.CommandText = string.Format("INSERT INTO {0} (MessageHeaderId, ETAToPortOfCall, ETDFromPortOfCall, " +
|
||||
"CallPurposeCode, CallPurposeDescription, ETAToKielCanal, ETDFromKielCanal, LastPort, ETDFromLastPort, " +
|
||||
"NextPort, ETAToNextPort) VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11) ", this.Tablename);
|
||||
"ETAToKielCanal, ETDFromKielCanal, LastPort, ETDFromLastPort, " +
|
||||
"NextPort, ETAToNextPort) VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9) ", this.Tablename);
|
||||
}
|
||||
else
|
||||
{
|
||||
((SqlCommand)cmd).Parameters.AddWithValue("@ID", this.Id);
|
||||
|
||||
cmd.CommandText = string.Format("UPDATE {0} SET ETAToPortOfCall = @P2, ETDFromPortOfCall = @P3, CallPurposeCode = @P4, " +
|
||||
"CallPurposeDescription = @P5, ETAToKielCanal = @P6, ETDFromKielCanal = @P7, LastPort = @P8, ETDFromLastPort = @P9, " +
|
||||
"NextPort = @P10, ETAToNextPort = @P11 WHERE Id = @ID", this.Tablename);
|
||||
cmd.CommandText = string.Format("UPDATE {0} SET ETAToPortOfCall = @P2, ETDFromPortOfCall = @P3, " +
|
||||
"ETAToKielCanal = @P4, ETDFromKielCanal = @P5, LastPort = @P6, ETDFromLastPort = @P7, " +
|
||||
"NextPort = @P8, ETAToNextPort = @P9 WHERE Id = @ID", this.Tablename);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ namespace bsmd.database
|
||||
switch (filter)
|
||||
{
|
||||
case Message.LoadFilter.SEC_ID:
|
||||
query += "WHERE SEC_Id = @SECID";
|
||||
query += " WHERE SEC_Id = @SECID";
|
||||
((SqlCommand)cmd).Parameters.AddWithValue("@SECID", criteria[0]);
|
||||
break;
|
||||
case Message.LoadFilter.ALL:
|
||||
@ -96,6 +96,8 @@ namespace bsmd.database
|
||||
break;
|
||||
}
|
||||
|
||||
query += " ORDER BY ShipToShipActivityDateFrom DESC"; // jüngster Eintrag zuerst
|
||||
|
||||
cmd.CommandText = query;
|
||||
}
|
||||
|
||||
|
||||
@ -76,12 +76,12 @@ namespace bsmd.database
|
||||
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
||||
{
|
||||
string query = string.Format("SELECT Id, WasteDisposalValidExemption, LastWasteDisposalPort, ConfirmationOfCorrectness, LastWasteDisposalDate, WasteDisposalDelivery " +
|
||||
"FROM {0}", this.Tablename);
|
||||
"FROM {0} ", this.Tablename);
|
||||
|
||||
switch (filter)
|
||||
{
|
||||
case Message.LoadFilter.MESSAGEHEADER:
|
||||
query += "WHERE MessageHeaderId = @MHID";
|
||||
query += " WHERE MessageHeaderId = @MHID";
|
||||
((SqlCommand)cmd).Parameters.AddWithValue("@MHID", criteria[0]);
|
||||
break;
|
||||
case Message.LoadFilter.ALL:
|
||||
|
||||
@ -77,13 +77,13 @@ namespace bsmd.database
|
||||
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
||||
{
|
||||
string query = string.Format("SELECT Id, WasteType, WasteDescription, WasteDisposalAmount_MTQ, " +
|
||||
"WasteCapacity_MTQ, WasteAmountRetained_MTQ, WasteDisposalPort, WasteAmountGeneratedTillNextPort_MTQ, " +
|
||||
" FROM {0}", this.Tablename);
|
||||
"WasteCapacity_MTQ, WasteAmountRetained_MTQ, WasteDisposalPort, WasteAmountGeneratedTillNextPort_MTQ " +
|
||||
" FROM {0} ", this.Tablename);
|
||||
|
||||
switch (filter)
|
||||
{
|
||||
case Message.LoadFilter.WDSP_ID:
|
||||
query += "WHERE WASId = @WDID";
|
||||
query += " WHERE WASId = @WDID";
|
||||
((SqlCommand)cmd).Parameters.AddWithValue("@WDID", criteria[0]);
|
||||
break;
|
||||
case Message.LoadFilter.ALL:
|
||||
|
||||
@ -53,7 +53,9 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CallPurpose.cs" />
|
||||
<Compile Include="Customer.cs" />
|
||||
<Compile Include="Extensions.cs" />
|
||||
<Compile Include="LastTenPortFacilitiesCalled.cs" />
|
||||
<Compile Include="Properties\AssemblyProductInfo.cs" />
|
||||
<Compile Include="Properties\AssemblyProjectInfo.cs" />
|
||||
|
||||
@ -11,7 +11,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using log4net;
|
||||
using bsmd.database;
|
||||
//using bsmd.dbh.request;
|
||||
|
||||
using bsmd.dbh.DBHWebReference;
|
||||
|
||||
namespace bsmd.dbh
|
||||
@ -20,27 +20,24 @@ namespace bsmd.dbh
|
||||
{
|
||||
private static ILog _log = LogManager.GetLogger(typeof(Request));
|
||||
|
||||
public static bool SendMessage(DatabaseEntity dbEntity)
|
||||
public static bool SendMessage(Message message)
|
||||
{
|
||||
if (dbEntity == null) return false;
|
||||
if (message == null) return false;
|
||||
|
||||
Message aMessage = null;
|
||||
RootType rootType = RootType.DATA;
|
||||
|
||||
if (dbEntity.GetType().IsAssignableFrom(typeof(Message)))
|
||||
if (message.ReportingParty == null)
|
||||
{
|
||||
aMessage = (Message)dbEntity;
|
||||
rootType = aMessage.MessageCore.IsTransit ? RootType.TRANSIT : RootType.VISIT;
|
||||
aMessage.SentAt = DateTime.Now;
|
||||
}
|
||||
else
|
||||
{
|
||||
aMessage = dbEntity.MessageHeader;
|
||||
_log.ErrorFormat("Reporting party not set on message {0}", message.Id);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (aMessage.ReportingParty == null)
|
||||
if ((message.MessageNotificationClass != Message.NotificationClass.VISIT) &&
|
||||
(message.MessageNotificationClass != Message.NotificationClass.TRANSIT) &&
|
||||
(message.Elements.Count == 0))
|
||||
{
|
||||
_log.ErrorFormat("Reporting party not set on message {0}", aMessage.Id);
|
||||
_log.ErrorFormat("trying to send message {0} class {1} but there are no depending record elements",
|
||||
message.Id, message.MessageNotificationClass);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -48,28 +45,28 @@ namespace bsmd.dbh
|
||||
Dbh_Osis_Answ_Ws client = new Dbh_Osis_Answ_Ws();
|
||||
|
||||
RootReportingParty rp = new RootReportingParty();
|
||||
rp.RPCity = aMessage.ReportingParty.City;
|
||||
rp.RPCountry = aMessage.ReportingParty.Country;
|
||||
rp.RPEMail = aMessage.ReportingParty.EMail;
|
||||
rp.RPFax = aMessage.ReportingParty.Fax;
|
||||
rp.RPFirstName = aMessage.ReportingParty.FirstName;
|
||||
rp.RPLastName = aMessage.ReportingParty.LastName;
|
||||
rp.RPName = aMessage.ReportingParty.Name;
|
||||
rp.RPPhone = aMessage.ReportingParty.Phone;
|
||||
rp.RPPostalCode = aMessage.ReportingParty.PostalCode;
|
||||
rp.RPStreetAndNumber = aMessage.ReportingParty.StreetAndNumber;
|
||||
rp.RPTypeSpecified = aMessage.ReportingParty.ReportingPartyType.HasValue;
|
||||
rp.RPCity = message.ReportingParty.City;
|
||||
rp.RPCountry = message.ReportingParty.Country;
|
||||
rp.RPEMail = message.ReportingParty.EMail;
|
||||
rp.RPFax = message.ReportingParty.Fax;
|
||||
rp.RPFirstName = message.ReportingParty.FirstName;
|
||||
rp.RPLastName = message.ReportingParty.LastName;
|
||||
rp.RPName = message.ReportingParty.Name;
|
||||
rp.RPPhone = message.ReportingParty.Phone;
|
||||
rp.RPPostalCode = message.ReportingParty.PostalCode;
|
||||
rp.RPStreetAndNumber = message.ReportingParty.StreetAndNumber;
|
||||
rp.RPTypeSpecified = message.ReportingParty.ReportingPartyType.HasValue;
|
||||
if (rp.RPTypeSpecified)
|
||||
rp.RPType = (RootReportingPartyRPType)aMessage.ReportingParty.ReportingPartyType.Value;
|
||||
rp.RPType = (RootReportingPartyRPType)message.ReportingParty.ReportingPartyType.Value;
|
||||
|
||||
DateTime timestamp = DateTime.Now;
|
||||
string version = "2.0";
|
||||
object item = null;
|
||||
string senderReference = dbEntity.Id.Value.ToString("N");
|
||||
|
||||
string senderReference = message.Id.Value.ToString("N");
|
||||
|
||||
ItemChoiceType2 itemChoiceType2 = ItemChoiceType2.Visit; // ?
|
||||
|
||||
switch (aMessage.MessageNotificationClass)
|
||||
switch (message.MessageNotificationClass)
|
||||
{
|
||||
|
||||
#region VISIT
|
||||
@ -78,19 +75,19 @@ namespace bsmd.dbh
|
||||
RootVisit rootVisit = new RootVisit();
|
||||
rootType = RootType.VISIT;
|
||||
|
||||
if (aMessage.MessageCore.IMO != null)
|
||||
if (message.MessageCore.IMO != null)
|
||||
{
|
||||
rootVisit.ItemElementName = ItemChoiceType.IMONumber;
|
||||
rootVisit.Item = aMessage.MessageCore.IMO;
|
||||
rootVisit.Item = message.MessageCore.IMO;
|
||||
}
|
||||
else
|
||||
{
|
||||
rootVisit.ItemElementName = ItemChoiceType.ENINumber;
|
||||
rootVisit.Item = aMessage.MessageCore.ENI;
|
||||
rootVisit.Item = message.MessageCore.ENI;
|
||||
}
|
||||
|
||||
rootVisit.PortOfCall = aMessage.MessageCore.PoC;
|
||||
rootVisit.ETAPortOfCall = aMessage.MessageCore.ETA.Value;
|
||||
|
||||
rootVisit.PortOfCall = message.MessageCore.PoC;
|
||||
rootVisit.ETAPortOfCall = message.MessageCore.ETA.Value;
|
||||
item = rootVisit;
|
||||
|
||||
break;
|
||||
@ -103,18 +100,18 @@ namespace bsmd.dbh
|
||||
RootTransit rootTransit = new RootTransit();
|
||||
rootType = RootType.TRANSIT;
|
||||
|
||||
if (aMessage.MessageCore.IMO != null)
|
||||
if (message.MessageCore.IMO != null)
|
||||
{
|
||||
rootTransit.ItemElementName = ItemChoiceType1.IMONumber;
|
||||
rootTransit.Item = aMessage.MessageCore.IMO;
|
||||
rootTransit.Item = message.MessageCore.IMO;
|
||||
}
|
||||
else
|
||||
{
|
||||
rootTransit.ItemElementName = ItemChoiceType1.ENINumber;
|
||||
rootTransit.Item = aMessage.MessageCore.ENI;
|
||||
rootTransit.Item = message.MessageCore.ENI;
|
||||
}
|
||||
|
||||
rootTransit.ETAKielCanal = aMessage.MessageCore.ETA.Value;
|
||||
rootTransit.ETAKielCanal = message.MessageCore.ETA.Value;
|
||||
item = rootTransit;
|
||||
|
||||
break;
|
||||
@ -124,11 +121,11 @@ namespace bsmd.dbh
|
||||
#region NOA_NOD
|
||||
case Message.NotificationClass.NOA_NOD:
|
||||
{
|
||||
NOA_NOD noa_nod = dbEntity as NOA_NOD;
|
||||
NOA_NOD noa_nod = message.Elements[0] as NOA_NOD;
|
||||
if (noa_nod != null)
|
||||
{
|
||||
RootNOA_NOD rootNoaNod = new RootNOA_NOD();
|
||||
rootType = RootType.DATA;
|
||||
|
||||
if (noa_nod.ETAToNextPort.HasValue)
|
||||
rootNoaNod.ETAToNextPort = noa_nod.ETAToNextPort.Value;
|
||||
rootNoaNod.ETAToNextPortSpecified = noa_nod.ETAToNextPort.HasValue;
|
||||
@ -180,12 +177,11 @@ namespace bsmd.dbh
|
||||
#region ATA
|
||||
case Message.NotificationClass.ATA:
|
||||
{
|
||||
ATA ata = dbEntity as ATA;
|
||||
ATA ata = message.Elements[0] as ATA;
|
||||
if (ata != null)
|
||||
{
|
||||
RootATA rootATA = new RootATA();
|
||||
rootType = RootType.DATA;
|
||||
if(ata.ATAPortOfCall.HasValue)
|
||||
if (ata.ATAPortOfCall.HasValue)
|
||||
rootATA.ATAPortOfCall = ata.ATAPortOfCall.Value;
|
||||
item = rootATA;
|
||||
}
|
||||
@ -196,11 +192,10 @@ namespace bsmd.dbh
|
||||
#region ATD
|
||||
case Message.NotificationClass.ATD:
|
||||
{
|
||||
ATD atd = dbEntity as ATD;
|
||||
ATD atd = message.Elements[0] as ATD;
|
||||
if (atd != null)
|
||||
{
|
||||
RootATD rootATD = new RootATD();
|
||||
rootType = RootType.DATA;
|
||||
rootATD.ATDPortOfCall = atd.ATDPortOfCall.Value;
|
||||
item = rootATD;
|
||||
}
|
||||
@ -208,15 +203,112 @@ namespace bsmd.dbh
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SEC
|
||||
case Message.NotificationClass.SEC:
|
||||
{
|
||||
RootSEC rootSEC = new RootSEC();
|
||||
SEC sec = message.Elements[0] as SEC;
|
||||
int numFields = (sec.SECSimplification ?? false) ?
|
||||
2 : (15 + sec.LastTenPortFacilitesCalled.Count + sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count);
|
||||
rootSEC.Items = new object[numFields];
|
||||
rootSEC.ItemsElementName = new ItemsChoiceType1[numFields];
|
||||
|
||||
if (sec.SECSimplification ?? false)
|
||||
{
|
||||
rootSEC.ItemsElementName[0] = ItemsChoiceType1.SECSimplification;
|
||||
rootSEC.Items[0] = RootSECSECSimplification.Y;
|
||||
rootSEC.ItemsElementName[1] = ItemsChoiceType1.PortOfCallWhereCompleteSECNotified;
|
||||
rootSEC.Items[1] = sec.PortOfCallWhereCompleteSECNotified;
|
||||
}
|
||||
else
|
||||
{
|
||||
rootSEC.ItemsElementName[0] = ItemsChoiceType1.CSOLastName;
|
||||
rootSEC.Items[0] = sec.CSOLastName;
|
||||
rootSEC.ItemsElementName[1] = ItemsChoiceType1.CSOFirstName;
|
||||
rootSEC.Items[1] = sec.CSOFirstName;
|
||||
rootSEC.ItemsElementName[2] = ItemsChoiceType1.CSOPhone;
|
||||
rootSEC.Items[2] = sec.CSOPhone;
|
||||
rootSEC.ItemsElementName[3] = ItemsChoiceType1.CSOFax;
|
||||
rootSEC.Items[3] = sec.CSOFax;
|
||||
rootSEC.ItemsElementName[4] = ItemsChoiceType1.ValidISSCOnBoard;
|
||||
rootSEC.Items[4] = sec.ValidISSCOnBoard ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N;
|
||||
rootSEC.ItemsElementName[5] = ItemsChoiceType1.ISSCType;
|
||||
rootSEC.Items[5] = (RootSECISSCType) (sec.ISSCType ?? 0);
|
||||
rootSEC.ItemsElementName[6] = ItemsChoiceType1.ISSCIssuerName;
|
||||
rootSEC.Items[6] = sec.ISSCIssuerName;
|
||||
rootSEC.ItemsElementName[7] = ItemsChoiceType1.ISSCDateOfExpiration;
|
||||
if(sec.ISSCDateOfExpiration.HasValue)
|
||||
rootSEC.Items[7] = sec.ISSCDateOfExpiration.Value;
|
||||
rootSEC.ItemsElementName[8] = ItemsChoiceType1.ApprovedSecurityPlanOnBoard;
|
||||
rootSEC.Items[8] = sec.ApprovedSecurityPlanOnBoard ?? false ? RootSECApprovedSecurityPlanOnBoard.Y : RootSECApprovedSecurityPlanOnBoard.N;
|
||||
rootSEC.ItemsElementName[9] = ItemsChoiceType1.CurrentShipSecurityLevel;
|
||||
if (sec.CurrentShipSecurityLevel.HasValue) rootSEC.Items[9] = (int)sec.CurrentShipSecurityLevel.Value;
|
||||
rootSEC.ItemsElementName[10] = ItemsChoiceType1.PortFacilityOfArrival;
|
||||
rootSEC.Items[10] = sec.PortFacilityOfArrival;
|
||||
rootSEC.ItemsElementName[11] = ItemsChoiceType1.GeneralDescriptionOfCargo;
|
||||
if (sec.GeneralDescriptionOfCargo.HasValue)
|
||||
rootSEC.Items[11] = (RootSECGeneralDescriptionOfCargo)sec.GeneralDescriptionOfCargo.Value;
|
||||
rootSEC.ItemsElementName[12] = ItemsChoiceType1.ReasonsForNoValidISSC;
|
||||
rootSEC.Items[12] = sec.ReasonsForNoValidISSC;
|
||||
rootSEC.ItemsElementName[13] = ItemsChoiceType1.ISSCIssuerType;
|
||||
rootSEC.Items[13] = (RootSECISSCIssuerType) (sec.ISSCIssuerType ?? 0);
|
||||
rootSEC.ItemsElementName[14] = ItemsChoiceType1.CSOEMail;
|
||||
rootSEC.Items[14] = sec.CSOEMail;
|
||||
|
||||
int index = 15;
|
||||
for (int i=0; i < sec.LastTenPortFacilitesCalled.Count; index++, i++)
|
||||
{
|
||||
rootSEC.ItemsElementName[index] = ItemsChoiceType1.LastTenPortFacilitiesCalled;
|
||||
RootSECLastTenPortFacilitiesCalled lastTen = new RootSECLastTenPortFacilitiesCalled();
|
||||
rootSEC.Items[index] = lastTen;
|
||||
lastTen.PortFacilityPortName = sec.LastTenPortFacilitesCalled[i].PortFacilityPortName;
|
||||
lastTen.PortFacilityPortCountry = sec.LastTenPortFacilitesCalled[i].PortFacilityPortCountry;
|
||||
lastTen.PortFacilityPortLoCode = sec.LastTenPortFacilitesCalled[i].PortFacilityPortLoCode;
|
||||
if (sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfArrival.HasValue)
|
||||
lastTen.PortFacilityDateOfArrival = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfArrival.Value;
|
||||
if (sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfDeparture.HasValue)
|
||||
lastTen.PortFacilityDateOfDeparture = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfDeparture.Value;
|
||||
if (sec.LastTenPortFacilitesCalled[i].PortFacilityShipSecurityLevel.HasValue)
|
||||
lastTen.PortFacilityShipSecurityLevel = sec.LastTenPortFacilitesCalled[i].PortFacilityShipSecurityLevel.Value;
|
||||
lastTen.PortFacilitySecurityMattersToReport = sec.LastTenPortFacilitesCalled[i].PortFacilitySecurityMattersToReport;
|
||||
lastTen.PortFacilityGISISCode = sec.LastTenPortFacilitesCalled[i].PortFacilityGISISCode;
|
||||
}
|
||||
|
||||
for (int i = 0; i < sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count; index++, i++ )
|
||||
{
|
||||
rootSEC.ItemsElementName[index] = ItemsChoiceType1.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled;
|
||||
RootSECShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2s = new RootSECShipToShipActivitiesDuringLastTenPortFacilitiesCalled();
|
||||
rootSEC.Items[index] = s2s;
|
||||
s2s.ShipToShipActivityLocation = new RootSECShipToShipActivitiesDuringLastTenPortFacilitiesCalledShipToShipActivityLocation();
|
||||
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationName = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationName;
|
||||
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationLoCode = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationLoCode;
|
||||
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates = new RootSECShipToShipActivitiesDuringLastTenPortFacilitiesCalledShipToShipActivityLocationShipToShipActivityLocationCoordinates();
|
||||
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLatitude.HasValue)
|
||||
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates.ShipToShipActivityLocationCoordinatesLatitude = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLatitude.Value;
|
||||
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLongitude.HasValue)
|
||||
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates.ShipToShipActivityLocationCoordinatesLongitude = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLongitude.Value;
|
||||
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateFrom.HasValue)
|
||||
s2s.ShipToShipActivityDateFrom = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateFrom.Value;
|
||||
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateTo.HasValue)
|
||||
s2s.ShipToShipActivityDateTo = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateTo.Value;
|
||||
s2s.ShipToShipActivityType = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityType;
|
||||
s2s.ShipToShipActivitySecurityMattersToReport = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivitySecurityMattersToReport;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
item = rootSEC;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region BPOL
|
||||
case Message.NotificationClass.BPOL:
|
||||
{
|
||||
BPOL bpol = dbEntity as BPOL;
|
||||
BPOL bpol = message.Elements[0] as BPOL;
|
||||
if (bpol != null)
|
||||
{
|
||||
RootBPOL rootBPOL = new RootBPOL();
|
||||
rootType = RootType.DATA;
|
||||
|
||||
RootBPOLPortOfItinerary[] poiArray = new RootBPOLPortOfItinerary[bpol.PortOfItineraries.Count];
|
||||
rootBPOL.PortOfItinerary = poiArray;
|
||||
|
||||
@ -242,40 +334,534 @@ namespace bsmd.dbh
|
||||
#region CREW
|
||||
case Message.NotificationClass.CREW:
|
||||
{
|
||||
if (aMessage.Elements.Count > 0)
|
||||
|
||||
RootCREW rootCREW = new RootCREW();
|
||||
|
||||
rootCREW.CrewMember = new RootCREWCrewMember[message.Elements.Count];
|
||||
for (int i = 0; i < message.Elements.Count; i++)
|
||||
{
|
||||
RootCREW rootCREW = new RootCREW();
|
||||
rootType = RootType.DATA;
|
||||
rootCREW.CrewMember = new RootCREWCrewMember[aMessage.Elements.Count];
|
||||
for (int i = 0; i < aMessage.Elements.Count; i++)
|
||||
{
|
||||
CREW crew = aMessage.Elements[i] as CREW;
|
||||
rootCREW.CrewMember[i] = new RootCREWCrewMember();
|
||||
if (crew.CrewMemberDateOfBirth.HasValue)
|
||||
rootCREW.CrewMember[i].CrewMemberDateOfBirth = crew.CrewMemberDateOfBirth.Value;
|
||||
rootCREW.CrewMember[i].CrewMemberDuty = crew.CrewMemberDuty;
|
||||
rootCREW.CrewMember[i].CrewMemberFirstName = crew.CrewMemberFirstName;
|
||||
rootCREW.CrewMember[i].CrewMemberGenderSpecified = crew.CrewMemberGender.HasValue;
|
||||
if (crew.CrewMemberGender.HasValue)
|
||||
rootCREW.CrewMember[i].CrewMemberGender = (RootCREWCrewMemberCrewMemberGender) crew.CrewMemberGender.Value;
|
||||
rootCREW.CrewMember[i].CrewMemberIdentityDocumentId = crew.CrewMemberIdentityDocumentId;
|
||||
if(crew.CrewMemberIdentityDocumentType.HasValue)
|
||||
rootCREW.CrewMember[i].CrewMemberIdentityDocumentType = (RootCREWCrewMemberCrewMemberIdentityDocumentType)crew.CrewMemberIdentityDocumentType.Value;
|
||||
rootCREW.CrewMember[i].CrewMemberLastName = crew.CrewMemberLastName;
|
||||
rootCREW.CrewMember[i].CrewMemberNationality = crew.CrewMemberNationality;
|
||||
rootCREW.CrewMember[i].CrewMemberPlaceOfBirth = crew.CrewMemberPlaceOfBirth;
|
||||
rootCREW.CrewMember[i].CrewMemberVisaNumber = crew.CrewMemberVisaNumber;
|
||||
}
|
||||
item = rootCREW;
|
||||
CREW crew = message.Elements[i] as CREW;
|
||||
rootCREW.CrewMember[i] = new RootCREWCrewMember();
|
||||
if (crew.CrewMemberDateOfBirth.HasValue)
|
||||
rootCREW.CrewMember[i].CrewMemberDateOfBirth = crew.CrewMemberDateOfBirth.Value;
|
||||
rootCREW.CrewMember[i].CrewMemberDuty = crew.CrewMemberDuty;
|
||||
rootCREW.CrewMember[i].CrewMemberFirstName = crew.CrewMemberFirstName;
|
||||
rootCREW.CrewMember[i].CrewMemberGenderSpecified = crew.CrewMemberGender.HasValue;
|
||||
if (crew.CrewMemberGender.HasValue)
|
||||
rootCREW.CrewMember[i].CrewMemberGender = (RootCREWCrewMemberCrewMemberGender)crew.CrewMemberGender.Value;
|
||||
rootCREW.CrewMember[i].CrewMemberIdentityDocumentId = crew.CrewMemberIdentityDocumentId;
|
||||
if (crew.CrewMemberIdentityDocumentType.HasValue)
|
||||
rootCREW.CrewMember[i].CrewMemberIdentityDocumentType = (RootCREWCrewMemberCrewMemberIdentityDocumentType)crew.CrewMemberIdentityDocumentType.Value;
|
||||
rootCREW.CrewMember[i].CrewMemberLastName = crew.CrewMemberLastName;
|
||||
rootCREW.CrewMember[i].CrewMemberNationality = crew.CrewMemberNationality;
|
||||
rootCREW.CrewMember[i].CrewMemberPlaceOfBirth = crew.CrewMemberPlaceOfBirth;
|
||||
rootCREW.CrewMember[i].CrewMemberVisaNumber = crew.CrewMemberVisaNumber;
|
||||
}
|
||||
item = rootCREW;
|
||||
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region PAS
|
||||
case Message.NotificationClass.PAS:
|
||||
{
|
||||
RootPAS rootPAS = new RootPAS();
|
||||
rootPAS.Passenger = new RootPASPassenger[message.Elements.Count];
|
||||
for(int i=0;i<message.Elements.Count;i++)
|
||||
{
|
||||
PAS pas = message.Elements[i] as PAS;
|
||||
rootPAS.Passenger[i] = new RootPASPassenger();
|
||||
rootPAS.Passenger[i].PassengerLastName = pas.PassengerLastName;
|
||||
rootPAS.Passenger[i].PassengerFirstName = pas.PassengerFirstName;
|
||||
rootPAS.Passenger[i].PassengerPlaceOfBirth = pas.PassengerPlaceOfBirth;
|
||||
if (pas.PassengerDateOfBirth.HasValue)
|
||||
rootPAS.Passenger[i].PassengerDateOfBirth = pas.PassengerDateOfBirth.Value;
|
||||
rootPAS.Passenger[i].PassengerGenderSpecified = pas.PassengerGender.HasValue;
|
||||
if (pas.PassengerGender.HasValue)
|
||||
rootPAS.Passenger[i].PassengerGender = (RootPASPassengerPassengerGender) pas.PassengerGender.Value;
|
||||
rootPAS.Passenger[i].PassengerNationality = pas.PassengerNationality;
|
||||
if (pas.PassengerIdentityDocumentType.HasValue)
|
||||
rootPAS.Passenger[i].PassengerIdentityDocumentType = (RootPASPassengerPassengerIdentityDocumentType)pas.PassengerIdentityDocumentType.Value;
|
||||
rootPAS.Passenger[i].PassengerIdentityDocumentId = pas.PassengerIdentityDocumentId;
|
||||
rootPAS.Passenger[i].PassengerVisaNumber = pas.PassengerVisaNumber;
|
||||
rootPAS.Passenger[i].PassengerPortOfEmbarkation = pas.PassengerPortOfEmbarkation;
|
||||
rootPAS.Passenger[i].PassengerPortOfDisembarkation = pas.PassengerPortOfDisembarkation;
|
||||
rootPAS.Passenger[i].PassengerInTransit = pas.PassengerInTransit ?? false ? RootPASPassengerPassengerInTransit.Y : RootPASPassengerPassengerInTransit.N;
|
||||
}
|
||||
item = rootPAS;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region BKRA
|
||||
case Message.NotificationClass.BKRA:
|
||||
{
|
||||
|
||||
RootBKRA rootBKRA = new RootBKRA();
|
||||
|
||||
rootBKRA.BunkerFuelArrival = new RootBKRABunkerFuelArrival[message.Elements.Count];
|
||||
for (int i = 0; i < message.Elements.Count; i++)
|
||||
{
|
||||
BRKA bkra = message.Elements[i] as BRKA;
|
||||
rootBKRA.BunkerFuelArrival[i] = new RootBKRABunkerFuelArrival();
|
||||
rootBKRA.BunkerFuelArrival[i].BunkerFuelQuantity_TNE = bkra.BunkerFuelQuantity_TNE ?? 0;
|
||||
rootBKRA.BunkerFuelArrival[i].BunkerFuelType = bkra.BunkerFuelType;
|
||||
}
|
||||
item = rootBKRA;
|
||||
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region BKRD
|
||||
case Message.NotificationClass.BKRD:
|
||||
{
|
||||
RootBKRD rootBKRD = new RootBKRD();
|
||||
|
||||
rootBKRD.BunkerFuelDeparture = new RootBKRDBunkerFuelDeparture[message.Elements.Count];
|
||||
for (int i = 0; i < message.Elements.Count; i++)
|
||||
{
|
||||
BRKD bkrd = message.Elements[i] as BRKD;
|
||||
rootBKRD.BunkerFuelDeparture[i] = new RootBKRDBunkerFuelDeparture();
|
||||
rootBKRD.BunkerFuelDeparture[i].BunkerFuelQuantity_TNE = bkrd.BunkerFuelQuantity_TNE ?? 0;
|
||||
rootBKRD.BunkerFuelDeparture[i].BunkerFuelType = bkrd.BunkerFuelType;
|
||||
}
|
||||
item = rootBKRD;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region TIEFA
|
||||
case Message.NotificationClass.TIEFA:
|
||||
{
|
||||
RootTIEFA rootTIEFA = new RootTIEFA();
|
||||
TIEFA tiefa = message.Elements[0] as TIEFA;
|
||||
rootTIEFA.DraughtUponArrival_DMT = tiefa.DraughtUponArrival_DMT ?? 0;
|
||||
item = rootTIEFA;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region TIEFD
|
||||
case Message.NotificationClass.TIEFD:
|
||||
{
|
||||
RootTIEFD rootTIEFD = new RootTIEFD();
|
||||
TIEFD tiefd = message.Elements[0] as TIEFD;
|
||||
rootTIEFD.DraughtUponDeparture_DMT = tiefd.DraughtUponDeparture_DMT ?? 0;
|
||||
item = rootTIEFD;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region NAME
|
||||
case Message.NotificationClass.NAME:
|
||||
{
|
||||
RootNAME rootName = new RootNAME();
|
||||
NAME name = message.Elements[0] as NAME;
|
||||
rootName.NameOfMaster = name.NameOfMaster;
|
||||
item = rootName;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region POBA
|
||||
case Message.NotificationClass.POBA:
|
||||
{
|
||||
RootPOBA rootPoba = new RootPOBA();
|
||||
POBA poba = message.Elements[0] as POBA;
|
||||
rootPoba.TotalCrewMembersOnBoardUponArrival = poba.TotalCrewMembersOnBoardUponArrival ?? 0;
|
||||
rootPoba.TotalPassengersOnBoardUponArrival = poba.TotalPassengersOnBoardUponArrival ?? 0;
|
||||
rootPoba.TotalPersonsOnBoardUponArrival = poba.TotalPersonsOnBoardUponArrival ?? 0;
|
||||
rootPoba.TotalStowawaysOnBoardUponArrival = poba.TotalStowawaysOnBoardUponArrival ?? 0;
|
||||
item = rootPoba;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region POBD
|
||||
case Message.NotificationClass.POBD:
|
||||
{
|
||||
RootPOBD rootPobd = new RootPOBD();
|
||||
POBD pobd = message.Elements[0] as POBD;
|
||||
rootPobd.TotalCrewMembersOnBoardUponDeparture = pobd.TotalCrewMembersOnBoardUponDeparture ?? 0;
|
||||
rootPobd.TotalPassengersOnBoardUponDeparture = pobd.TotalPassengersOnBoardUponDeparture ?? 0;
|
||||
rootPobd.TotalPersonsOnBoardUponDeparture = pobd.TotalPersonsOnBoardUponDeparture ?? 0;
|
||||
rootPobd.TotalStowawaysOnBoardUponDeparture = pobd.TotalStowawaysOnBoardUponDeparture ?? 0;
|
||||
item = rootPobd;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region STAT
|
||||
case Message.NotificationClass.STAT:
|
||||
{
|
||||
RootSTAT rootStat = new RootSTAT();
|
||||
STAT stat = message.Elements[0] as STAT;
|
||||
rootStat.ShipName = stat.ShipName;
|
||||
rootStat.CallSign = stat.CallSign;
|
||||
rootStat.MMSINumber = stat.MMSINumber;
|
||||
rootStat.Flag = stat.Flag;
|
||||
if (stat.LengthOverall_MTR.HasValue) rootStat.LengthOverall_MTR = stat.LengthOverall_MTR.Value;
|
||||
if (stat.Beam_MTR.HasValue) rootStat.Beam_MTR = stat.Beam_MTR.Value;
|
||||
if (stat.GrossTonnage.HasValue) rootStat.GrossTonnage = stat.GrossTonnage.Value;
|
||||
rootStat.PortOfRegistry = stat.PortOfRegistry;
|
||||
rootStat.ShipType = stat.ShipType;
|
||||
if (!stat.ISMCompanyName.IsNullOrEmpty())
|
||||
{
|
||||
rootStat.ISMCompany = new RootSTATISMCompany();
|
||||
rootStat.ISMCompany.ISMCompanyName = stat.ISMCompanyName;
|
||||
rootStat.ISMCompany.ISMCompanyId = stat.ISMCompanyId;
|
||||
rootStat.ISMCompany.ISMCompanyStreetAndNumber = stat.ISMCompanyStreetAndNumber;
|
||||
rootStat.ISMCompany.ISMCompanyPostalCode = stat.ISMCompanyPostalCode;
|
||||
rootStat.ISMCompany.ISMCompanyCity = stat.ISMCompanyCity;
|
||||
rootStat.ISMCompany.ISMCompanyCountry = stat.ISMCompanyCountry;
|
||||
}
|
||||
item = rootStat;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region LADG
|
||||
case Message.NotificationClass.LADG:
|
||||
{
|
||||
RootLADG rootLADG = new RootLADG();
|
||||
rootLADG.Cargo = new RootLADGCargo[message.Elements.Count];
|
||||
for (int i = 0; i < message.Elements.Count; i++ )
|
||||
{
|
||||
LADG ladg = message.Elements[i] as LADG;
|
||||
rootLADG.Cargo[i] = new RootLADGCargo();
|
||||
if(ladg.CargoHandlingType.HasValue)
|
||||
rootLADG.Cargo[i].CargoHandlingType = (RootLADGCargoCargoHandlingType)(ladg.CargoHandlingType);
|
||||
rootLADG.Cargo[i].CargoCodeNST = ladg.CargoCodeNST;
|
||||
if (ladg.CargoGrossQuantity_TNE.HasValue)
|
||||
rootLADG.Cargo[i].CargoGrossQuantity_TNE = ladg.CargoGrossQuantity_TNE.Value;
|
||||
rootLADG.Cargo[i].CargoNumberOfItemsSpecified = ladg.CargoNumberOfItems.HasValue;
|
||||
if (ladg.CargoNumberOfItems.HasValue)
|
||||
rootLADG.Cargo[i].CargoNumberOfItems = ladg.CargoNumberOfItems.Value;
|
||||
}
|
||||
item = rootLADG;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region INFO
|
||||
case Message.NotificationClass.INFO:
|
||||
{
|
||||
RootINFO rootInfo = new RootINFO();
|
||||
INFO info = message.Elements[0] as INFO;
|
||||
if (info.ShippingArea.HasValue)
|
||||
rootInfo.ShippingArea = (RootINFOShippingArea)info.ShippingArea.Value;
|
||||
rootInfo.RequestedPositionInPortOfCall = info.RequestedPositionInPortOfCall;
|
||||
rootInfo.SpecialRequirementsOfShipAtBerth = info.SpecialRequirementsOfShipAtBerth;
|
||||
rootInfo.ConstructionCharacteristicsOfShip = info.ConstructionCharacteristicsOfShip;
|
||||
if (info.FumigatedBulkCargo.HasValue)
|
||||
rootInfo.FumigatedBulkCargo = (info.FumigatedBulkCargo.Value == 0) ? RootINFOFumigatedBulkCargo.Y : RootINFOFumigatedBulkCargo.N;
|
||||
rootInfo.DeadWeightSummer_TNESpecified = info.DeplacementSummerDraught_TNE.HasValue;
|
||||
if (info.DeplacementSummerDraught_TNE.HasValue)
|
||||
rootInfo.DeadWeightSummer_TNE = info.DeplacementSummerDraught_TNE.Value;
|
||||
item = rootInfo;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region SERV
|
||||
case Message.NotificationClass.SERV:
|
||||
{
|
||||
RootSERV rootServ = new RootSERV();
|
||||
rootServ.Service = new RootSERVService[message.Elements.Count];
|
||||
for (int i = 0; i < message.Elements.Count;i++ )
|
||||
{
|
||||
rootServ.Service[i] = new RootSERVService();
|
||||
SERV serv = message.Elements[i] as SERV;
|
||||
rootServ.Service[i].ServiceName = serv.ServiceName;
|
||||
rootServ.Service[i].ServiceBeneficiary = serv.ServiceBeneficiary;
|
||||
rootServ.Service[i].ServiceInvoiceRecipient = serv.ServiceInvoiceRecipient;
|
||||
}
|
||||
item = rootServ;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region PRE72H
|
||||
case Message.NotificationClass.PRE72H:
|
||||
{
|
||||
RootPRE72H rootPre = new RootPRE72H();
|
||||
PRE72H pre72h = message.Elements[0] as PRE72H;
|
||||
rootPre.Tanker = pre72h.Tanker ?? false ? RootPRE72HTanker.Y : RootPRE72HTanker.N;
|
||||
if (pre72h.Tanker ?? false)
|
||||
{
|
||||
rootPre.TankerDetails = new RootPRE72HTankerDetails();
|
||||
if (pre72h.TankerHullConfiguration.HasValue)
|
||||
rootPre.TankerDetails.TankerHullConfiguration = (RootPRE72HTankerDetailsTankerHullConfiguration)pre72h.TankerHullConfiguration.Value;
|
||||
if (pre72h.ConditionCargoBallastTanks.HasValue)
|
||||
rootPre.TankerDetails.ConditionCargoBallastTanks = (RootPRE72HTankerDetailsConditionCargoBallastTanks)pre72h.ConditionCargoBallastTanks.Value;
|
||||
rootPre.TankerDetails.NatureOfCargo = pre72h.NatureOfCargo;
|
||||
rootPre.TankerDetails.VolumeOfCargo_TNESpecified = pre72h.VolumeOfCargo.HasValue;
|
||||
}
|
||||
|
||||
if (pre72h.VolumeOfCargo.HasValue)
|
||||
rootPre.TankerDetails.VolumeOfCargo_TNE = pre72h.VolumeOfCargo.Value;
|
||||
rootPre.PlannedOperations = pre72h.PlannedOperations;
|
||||
rootPre.PlannedWorks = pre72h.PlannedWorks;
|
||||
if (pre72h.DateOfLastExpandedInspection.HasValue)
|
||||
rootPre.DateOfLastExpandedInspection = pre72h.DateOfLastExpandedInspection.Value;
|
||||
if (pre72h.PlannedPeriodOfStay_HUR.HasValue)
|
||||
rootPre.PlannedPeriodOfStay_HUR = pre72h.PlannedPeriodOfStay_HUR.Value;
|
||||
|
||||
item = rootPre;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region MDH
|
||||
case Message.NotificationClass.MDH:
|
||||
{
|
||||
RootMDH rootMDH = new RootMDH();
|
||||
MDH mdh = message.Elements[0] as MDH;
|
||||
if (!mdh.MDHSimplification.HasValue)
|
||||
{
|
||||
_log.ErrorFormat("MDH {0} doesnt have MDHSimplification field set, aborting message", mdh.Id);
|
||||
return false;
|
||||
}
|
||||
if (mdh.MDHSimplification.Value)
|
||||
{ // der angenehme Teil
|
||||
rootMDH.Items = new object[2];
|
||||
rootMDH.ItemsElementName = new ItemsChoiceType2[2];
|
||||
rootMDH.ItemsElementName[0] = ItemsChoiceType2.MDHSimplification;
|
||||
rootMDH.Items[0] = RootMDHMDHSimplification.Y;
|
||||
rootMDH.ItemsElementName[1] = ItemsChoiceType2.PortOfCallWhereCompleteMDHNotified;
|
||||
rootMDH.Items[1] = mdh.PortOfCallWhereCompleteMDHNotified;
|
||||
}
|
||||
else
|
||||
{ // der blöde Teil
|
||||
rootMDH.Items = new object[19];
|
||||
rootMDH.ItemsElementName = new ItemsChoiceType2[26];
|
||||
rootMDH.ItemsElementName[0] = ItemsChoiceType2.NonAccidentialDeathsDuringVoyage;
|
||||
rootMDH.Items[0] = mdh.NonAccidentalDeathsDuringVoyage ?? false ? RootMDHNonAccidentialDeathsDuringVoyage.Y : RootMDHNonAccidentialDeathsDuringVoyage.N;
|
||||
rootMDH.ItemsElementName[1] = ItemsChoiceType2.NonAccidentialDeathsDuringVoyageCount;
|
||||
if (mdh.NonAccidentalDeathsDuringVoyageCount.HasValue)
|
||||
rootMDH.Items[1] = mdh.NonAccidentalDeathsDuringVoyageCount.Value;
|
||||
rootMDH.ItemsElementName[2] = ItemsChoiceType2.SuspisionInfectiousNature;
|
||||
rootMDH.Items[2] = mdh.SuspisionInfectiousNature ?? false ? RootMDHSuspisionInfectiousNature.Y : RootMDHSuspisionInfectiousNature.N;
|
||||
rootMDH.ItemsElementName[3] = ItemsChoiceType2.NumberOfIllPersonsHigherThanExpected;
|
||||
rootMDH.Items[3] = mdh.NumberOfIllPersonsHigherThanExpected ?? false ? RootMDHNumberOfIllPersonsHigherThanExpected.Y : RootMDHNumberOfIllPersonsHigherThanExpected.N;
|
||||
rootMDH.ItemsElementName[4] = ItemsChoiceType2.NumberOfIllPersons;
|
||||
if (mdh.NumberOfIllPersons.HasValue)
|
||||
rootMDH.Items[4] = mdh.NumberOfIllPersons.Value;
|
||||
rootMDH.ItemsElementName[5] = ItemsChoiceType2.SickPersonsOnBoard;
|
||||
rootMDH.Items[5] = mdh.SickPersonsOnBoard ?? false ? RootMDHSickPersonsOnBoard.Y : RootMDHSickPersonsOnBoard.N;
|
||||
rootMDH.ItemsElementName[6] = ItemsChoiceType2.MedicalConsulted;
|
||||
rootMDH.Items[6] = mdh.MedicalConsulted ?? false ? RootMDHMedicalConsulted.Y : RootMDHMedicalConsulted.N;
|
||||
rootMDH.ItemsElementName[7] = ItemsChoiceType2.AwareOfConditionsForFurtherInfections;
|
||||
rootMDH.Items[7] = mdh.AwareOfFurtherInfections ?? false ? RootMDHAwareOfConditionsForFurtherInfections.Y : RootMDHAwareOfConditionsForFurtherInfections.N;
|
||||
rootMDH.ItemsElementName[8] = ItemsChoiceType2.SanitaryMeasuresApplied;
|
||||
rootMDH.Items[8] = mdh.SanitaryMeasuresApplied ?? false ? RootMDHSanitaryMeasuresApplied.Y : RootMDHSanitaryMeasuresApplied.N;
|
||||
rootMDH.ItemsElementName[9] = ItemsChoiceType2.SanitaryMeasuresDetails;
|
||||
RootMDHSanitaryMeasuresDetails smDet = new RootMDHSanitaryMeasuresDetails();
|
||||
if (mdh.SanitaryMeasuresDate.HasValue)
|
||||
smDet.SanitaryMeasuresDate = mdh.SanitaryMeasuresDate.Value;
|
||||
smDet.SanitaryMeasuresType = mdh.SanitaryMeasuresType;
|
||||
smDet.SanitaryMeasuresLocation = mdh.SanitaryMeasuresLocation;
|
||||
rootMDH.Items[9] = smDet;
|
||||
rootMDH.ItemsElementName[10] = ItemsChoiceType2.StowawaysDetected;
|
||||
rootMDH.Items[10] = mdh.StowawaysDetected ?? false ? RootMDHStowawaysDetected.Y : RootMDHStowawaysDetected.N;
|
||||
rootMDH.ItemsElementName[11] = ItemsChoiceType2.StowawaysJoiningLocation;
|
||||
rootMDH.Items[11] = mdh.StowawaysJoiningLocation;
|
||||
rootMDH.ItemsElementName[12] = ItemsChoiceType2.SickAnimalOrPetOnBoard;
|
||||
rootMDH.Items[12] = mdh.SickAnimalOrPetOnBoard ?? false ? RootMDHSickAnimalOrPetOnBoard.Y : RootMDHSickAnimalOrPetOnBoard.N;
|
||||
rootMDH.ItemsElementName[13] = ItemsChoiceType2.ValidSanitaryControlExemptionOrCertificateOnBoard;
|
||||
rootMDH.Items[13] = mdh.ValidSanitaryControlExemptionOrCertificateOnBoard ?? false ? RootMDHValidSanitaryControlExemptionOrCertificateOnBoard.Y : RootMDHValidSanitaryControlExemptionOrCertificateOnBoard.N;
|
||||
rootMDH.ItemsElementName[14] = ItemsChoiceType2.ValidSanitaryControlExemptionOrCertificate;
|
||||
RootMDHValidSanitaryControlExemptionOrCertificate cert = new RootMDHValidSanitaryControlExemptionOrCertificate();
|
||||
rootMDH.Items[14] = cert;
|
||||
if (mdh.DateOfIssue.HasValue) cert.DateOfIssue = mdh.DateOfIssue.Value;
|
||||
cert.PlaceOfIssue = mdh.PlaceOfIssue;
|
||||
rootMDH.ItemsElementName[15] = ItemsChoiceType2.SanitaryControlReinspectionRequired;
|
||||
rootMDH.Items[15] = mdh.SanitaryControlReinspectionRequired ?? false ? RootMDHSanitaryControlReinspectionRequired.Y : RootMDHSanitaryControlReinspectionRequired.N;
|
||||
rootMDH.ItemsElementName[16] = ItemsChoiceType2.InfectedAreaVisited;
|
||||
rootMDH.Items[16] = mdh.InfectedAreaVisited ?? false ? RootMDHInfectedAreaVisited.Y : RootMDHInfectedAreaVisited.N;
|
||||
rootMDH.ItemsElementName[17] = ItemsChoiceType2.InfectedArea;
|
||||
RootMDHInfectedArea infected = new RootMDHInfectedArea();
|
||||
rootMDH.Items[17] = infected;
|
||||
infected.InfectedAreaPort = mdh.InfectedAreaPort;
|
||||
if (mdh.InfectedAreaDate.HasValue) infected.InfectedAreaDate = mdh.InfectedAreaDate.Value;
|
||||
rootMDH.ItemsElementName[18] = ItemsChoiceType2.PortsOfCallLast30Days;
|
||||
RootMDHPortsOfCallLast30Days l30d = new RootMDHPortsOfCallLast30Days();
|
||||
rootMDH.Items[18] = l30d;
|
||||
if (mdh.PortOfCallLast30Days.Count > 0)
|
||||
{
|
||||
l30d.PortOfCallLast30Days = new RootMDHPortsOfCallLast30DaysPortOfCallLast30Days[mdh.PortOfCallLast30Days.Count];
|
||||
for (int i = 0; i < mdh.PortOfCallLast30Days.Count; i++)
|
||||
{
|
||||
l30d.PortOfCallLast30Days[i] = new RootMDHPortsOfCallLast30DaysPortOfCallLast30Days();
|
||||
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip = new RootMDHPortsOfCallLast30DaysPortOfCallLast30DaysPortOfCallLast30DaysCrewJoinedShip();
|
||||
if (mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count > 0)
|
||||
{
|
||||
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip.PortOfCallLast30DaysCrewJoinedShipName = new string[mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count];
|
||||
for (int j = 0; j < mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count; j++)
|
||||
{
|
||||
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip.PortOfCallLast30DaysCrewJoinedShipName[j] = mdh.PortOfCallLast30Days[i].CrewJoinedShip[j].PortOfCallLast30DaysCrewJoinedShipName;
|
||||
}
|
||||
}
|
||||
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewMembersJoined = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewMembersJoined ?? false ? RootMDHPortsOfCallLast30DaysPortOfCallLast30DaysPortOfCallLast30DaysCrewMembersJoined.Y : RootMDHPortsOfCallLast30DaysPortOfCallLast30DaysPortOfCallLast30DaysCrewMembersJoined.N;
|
||||
if (mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture.HasValue)
|
||||
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture.Value;
|
||||
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysLocode = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysLocode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
item = rootMDH;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region WAS
|
||||
case Message.NotificationClass.WAS:
|
||||
{
|
||||
RootWAS rootWAS = new RootWAS();
|
||||
WAS was = message.Elements[0] as WAS;
|
||||
if (was.WasteDisposalValidExemption ?? false)
|
||||
{
|
||||
rootWAS.Items = new object[1];
|
||||
rootWAS.ItemsElementName = new ItemsChoiceType3[1];
|
||||
rootWAS.ItemsElementName[0] = ItemsChoiceType3.WasteDisposalValidExemption;
|
||||
rootWAS.Items[0] = RootWASWasteDisposalValidExemption.Y;
|
||||
}
|
||||
else
|
||||
{
|
||||
rootWAS.Items = new object[5];
|
||||
rootWAS.ItemsElementName = new ItemsChoiceType3[5];
|
||||
|
||||
rootWAS.ItemsElementName[0] = ItemsChoiceType3.LastWasteDisposalPort;
|
||||
rootWAS.Items[0] = was.LastWasteDisposalPort;
|
||||
rootWAS.ItemsElementName[1] = ItemsChoiceType3.LastWasteDisposalDate;
|
||||
if (was.LastWasteDisposalDate.HasValue)
|
||||
rootWAS.Items[1] = was.LastWasteDisposalDate.Value;
|
||||
rootWAS.ItemsElementName[2] = ItemsChoiceType3.WasteDisposalServiceProviderName;
|
||||
// TODO: Klären wie es nun genau hier aussieht!
|
||||
/*
|
||||
if(was.WasteDisposalServiceProvider.Count > 0) {
|
||||
rootWAS.Items[2] = new string[was.WasteDisposalServiceProvider.Count];
|
||||
for (int i = 0; i < was.WasteDisposalServiceProvider.Count; i++)
|
||||
{
|
||||
rootWAS.Items[2][i] = was.WasteDisposalServiceProvider[i].WasteDisposalServiceProviderName;
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
rootWAS.ItemsElementName[3] = ItemsChoiceType3.WasteDisposalDelivery;
|
||||
if (was.WasteDisposalDelivery.HasValue)
|
||||
rootWAS.Items[3] = (RootWASWasteDisposalDelivery)was.WasteDisposalDelivery.Value;
|
||||
rootWAS.ItemsElementName[4] = ItemsChoiceType3.Waste;
|
||||
if (was.Waste.Count > 0)
|
||||
{
|
||||
RootWASWaste[] rww = new RootWASWaste[was.Waste.Count];
|
||||
rootWAS.Items[4] = rww;
|
||||
for (int i = 0; i < was.Waste.Count; i++)
|
||||
{
|
||||
rww[i] = new RootWASWaste();
|
||||
rww[i].WasteDescription = was.Waste[i].WasteDescription;
|
||||
if(was.Waste[i].WasteType.HasValue)
|
||||
rww[i].WasteType = (RootWASWasteWasteType) was.Waste[i].WasteType.Value;
|
||||
if (was.Waste[i].WasteDisposalAmount_MTQ.HasValue)
|
||||
rww[i].WasteDisposalAmount_MTQ = was.Waste[i].WasteDisposalAmount_MTQ.Value;
|
||||
rww[i].WasteDetails = new RootWASWasteWasteDetails();
|
||||
if (was.Waste[i].WasteCapacity_MTQ.HasValue)
|
||||
rww[i].WasteDetails.WasteCapacity_MTQ = was.Waste[i].WasteCapacity_MTQ.Value;
|
||||
if (was.Waste[i].WasteAmountRetained_MTQ.HasValue)
|
||||
rww[i].WasteDetails.WasteAmountRetained_MTQ = was.Waste[i].WasteAmountRetained_MTQ.Value;
|
||||
rww[i].WasteDetails.WasteDisposalPort = was.Waste[i].WasteDisposalPort;
|
||||
if (was.Waste[i].WasteAmountGeneratedTillNextPort_MTQ.HasValue)
|
||||
rww[i].WasteDetails.WasteAmountGeneratedTillNextPort_MTQ = was.Waste[i].WasteAmountGeneratedTillNextPort_MTQ.Value;
|
||||
}
|
||||
}
|
||||
rootWAS.ItemsElementName[5] = ItemsChoiceType3.ConfirmationOfCorrectness;
|
||||
rootWAS.Items[5] = was.ConfirmationOfCorrectness ?? false ? RootWASConfirmationOfCorrectness.Y : RootWASConfirmationOfCorrectness.N;
|
||||
|
||||
}
|
||||
|
||||
item = rootWAS;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
|
||||
#region TOWA
|
||||
case Message.NotificationClass.TOWA:
|
||||
{
|
||||
RootTOWA rootTowa = new RootTOWA();
|
||||
rootTowa.TowageOnArrival = new RootTOWATowageOnArrival[message.Elements.Count];
|
||||
for (int i = 0; i < message.Elements.Count; i++)
|
||||
{
|
||||
TOWA towa = message.Elements[i] as TOWA;
|
||||
rootTowa.TowageOnArrival[i] = new RootTOWATowageOnArrival();
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalName = towa.TowageOnArrivalName;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalFlag = towa.TowageOnArrivalFlag;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator = new RootTOWATowageOnArrivalTowageOnArrivalOperator();
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorCompanyName = towa.TowageOnArrivalOperatorCompanyName;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorStreetAndNumber = towa.TowageOnArrivalOperatorStreetNameAndNumber;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorPostalCode = towa.TowageOnArrivalOperatorPostalCode;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorCity = towa.TowageOnArrivalOperatorCity;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorCountry = towa.TowageOnArrivalOperatorCountry;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorPhone = towa.TowageOnArrivalOperatorPhone;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorFax = towa.TowageOnArrivalOperatorFax;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalOperator.TowageOnArrivalOperatorEMail = towa.TowageOnArrivalOperatorEmail;
|
||||
if (towa.TowageOnArrivalGrossTonnage.HasValue)
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalGrossTonnage = towa.TowageOnArrivalGrossTonnage.Value;
|
||||
if (towa.TowageOnArrivalLengthOverall_MTR.HasValue)
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalLengthOverall_MTR = towa.TowageOnArrivalLengthOverall_MTR.Value;
|
||||
if (towa.TowageOnArrivalBeam_MTR.HasValue)
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalBeam_MTR = towa.TowageOnArrivalBeam_MTR.Value;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalPurposeOfCall = towa.TowageOnArrivalPurposeOfCall;
|
||||
if (towa.TowageOnArrivalDraught_DMT.HasValue)
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalDraught_DMT = towa.TowageOnArrivalDraught_DMT.Value;
|
||||
rootTowa.TowageOnArrival[i].TowageOnArrivalRemarks = towa.TowageOnArrivalRemarks;
|
||||
}
|
||||
item = rootTowa;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region TOWD
|
||||
case Message.NotificationClass.TOWD:
|
||||
{
|
||||
RootTOWD rootTowd = new RootTOWD();
|
||||
rootTowd.TowageOnDeparture = new RootTOWDTowageOnDeparture[message.Elements.Count];
|
||||
for (int i = 0; i < message.Elements.Count; i++)
|
||||
{
|
||||
TOWD towd = message.Elements[i] as TOWD;
|
||||
rootTowd.TowageOnDeparture[i] = new RootTOWDTowageOnDeparture();
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureName = towd.TowageOnDepartureName;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureFlag = towd.TowageOnDepartureFlag;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator = new RootTOWDTowageOnDepartureTowageOnDepartureOperator();
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorCompanyName = towd.TowageOnDepartureOperatorCompanyName;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorStreetAndNumber = towd.TowageOnDepartureOperatorStreetNameAndNumber;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorPostalCode = towd.TowageOnDepartureOperatorPostalCode;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorCity = towd.TowageOnDepartureOperatorCity;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorCountry = towd.TowageOnDepartureOperatorCountry;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorPhone = towd.TowageOnDepartureOperatorPhone;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorFax = towd.TowageOnDepartureOperatorFax;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureOperator.TowageOnDepartureOperatorEMail = towd.TowageOnDepartureOperatorEmail;
|
||||
if (towd.TowageOnDepartureLengthOverall_MTR.HasValue)
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureLengthOverall_MTR = towd.TowageOnDepartureLengthOverall_MTR.Value;
|
||||
if (towd.TowageOnDepartureBeam_MTR.HasValue)
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureBeam_MTR = towd.TowageOnDepartureBeam_MTR.Value;
|
||||
if (towd.TowageOnDepartureDraught_DMT.HasValue)
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureDraught_DMT = towd.TowageOnDepartureDraught_DMT.Value;
|
||||
rootTowd.TowageOnDeparture[i].TowageOnDepartureRemarks = towd.TowageOnDepartureRemarks;
|
||||
}
|
||||
item = rootTowd;
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
|
||||
default:
|
||||
{
|
||||
_log.ErrorFormat("DBH send message: message type {0} not implemented", aMessage.MessageNotificationClass);
|
||||
break;
|
||||
_log.ErrorFormat("DBH send message: message type {0} not implemented", message.MessageNotificationClass);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -290,30 +876,30 @@ namespace bsmd.dbh
|
||||
items = new object[1];
|
||||
items[0] = item;
|
||||
|
||||
if (aMessage.MessageCore.IsTransit)
|
||||
if (message.MessageCore.IsTransit)
|
||||
{
|
||||
item = aMessage.MessageCore.TransitId;
|
||||
item = message.MessageCore.TransitId;
|
||||
itemChoiceType2 = ItemChoiceType2.TransitId;
|
||||
}
|
||||
else
|
||||
{
|
||||
item = aMessage.MessageCore.VisitId;
|
||||
item = message.MessageCore.VisitId;
|
||||
itemChoiceType2 = ItemChoiceType2.VisitId;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
string result = client.Root(
|
||||
version,
|
||||
timestamp,
|
||||
version,
|
||||
timestamp,
|
||||
Properties.Settings.Default.Sender, // BSMD sender Kennung (festverdrahtet)
|
||||
senderReference,
|
||||
senderReference,
|
||||
rootType,
|
||||
item,
|
||||
item,
|
||||
itemChoiceType2,
|
||||
null, // sisnumbers (weglassen)
|
||||
rp,
|
||||
items,
|
||||
rp,
|
||||
items,
|
||||
null // violations (weglassen)
|
||||
);
|
||||
}
|
||||
|
||||
@ -27,8 +27,7 @@ namespace bsmd.herberg.FormService
|
||||
if (Debugger.IsAttached)
|
||||
{
|
||||
// ((FormService)ServicesToRun[0]).Init(null);
|
||||
((FormService)ServicesToRun[0]).DoOnce();
|
||||
while (true) ;
|
||||
((FormService)ServicesToRun[0]).DoOnce();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -37,6 +37,8 @@ namespace bsmd.herberg.FormService
|
||||
for (int i = 0; i < formResponse.formDatasets.Length; i++)
|
||||
{
|
||||
Dictionary<string, Dictionary<string, string>> groupedVals = new Dictionary<string, Dictionary<string, string>>();
|
||||
Dictionary<string, Dictionary<int, Dictionary<string, string>>> groupedRowVals = new Dictionary<string, Dictionary<int, Dictionary<string, string>>>();
|
||||
|
||||
WebReference.FormDataset fds = formResponse.formDatasets[i];
|
||||
|
||||
if (fds.startPeriodSpecified)
|
||||
@ -50,10 +52,28 @@ namespace bsmd.herberg.FormService
|
||||
_log.WarnFormat("Field name {0} has wrong format!", formData.name);
|
||||
continue;
|
||||
}
|
||||
Trace.WriteLine(string.Format("Set:{0} Type:{1} Name:{2} Value:{3}", i, nElems[0], nElems[1], formData.value));
|
||||
|
||||
// create dictionaries on demand
|
||||
if (!groupedVals.ContainsKey(nElems[0]))
|
||||
groupedVals[nElems[0]] = new Dictionary<string, string>();
|
||||
groupedVals[nElems[0]][nElems[1]] = formData.value;
|
||||
if (!groupedRowVals.ContainsKey(nElems[0]))
|
||||
groupedRowVals[nElems[0]] = new Dictionary<int, Dictionary<string, string>>();
|
||||
if (!groupedRowVals[nElems[0]].ContainsKey(formData.rowNo))
|
||||
groupedRowVals[nElems[0]][formData.rowNo] = new Dictionary<string, string>();
|
||||
|
||||
if (formData.rowNoSpecified == false)
|
||||
{
|
||||
// "normale" Felder werden pro Nachrichtentyp in einem Dict abgespeichert
|
||||
|
||||
groupedVals[nElems[0]][nElems[1]] = formData.value;
|
||||
}
|
||||
else
|
||||
{
|
||||
// "1:n" Felder (mit Zeilennummer) werden in einem Dict<Dict .. abgespeichert. Erster
|
||||
// Schlüssel ist die Row-Id, damit Datensätze aus derselben Zeile zusammenfinden
|
||||
|
||||
groupedRowVals[nElems[0]][formData.rowNo][nElems[1]] = formData.value;
|
||||
}
|
||||
}
|
||||
|
||||
// jetzt können wir die Felder nach Nachrichtentyp abarbeiten
|
||||
@ -62,6 +82,8 @@ namespace bsmd.herberg.FormService
|
||||
foreach (string messageType in groupedVals.Keys)
|
||||
{
|
||||
Dictionary<string, string> vDict = groupedVals[messageType];
|
||||
Dictionary<int, Dictionary<string, string>> nDict = groupedRowVals[messageType];
|
||||
|
||||
DatabaseEntity derivedMessage = null;
|
||||
Message theMessage = null;
|
||||
if (!messages.ContainsKey(messageType.ToUpper()))
|
||||
@ -157,12 +179,12 @@ namespace bsmd.herberg.FormService
|
||||
{
|
||||
try
|
||||
{
|
||||
if (vDict.ContainsKey("CallPurposeCode")) noa_nod.CallPurposeCode = Int32.Parse(vDict["CallPurposeCode"]);
|
||||
// if (vDict.ContainsKey("CallPurposeCode")) noa_nod.CallPurposeCode = Int32.Parse(vDict["CallPurposeCode"]);
|
||||
if (vDict.ContainsKey("ETAToNextPort")) noa_nod.ETAToNextPort = DateTime.Parse(vDict["ETAToNextPort"]);
|
||||
if (vDict.ContainsKey("ETDFromLastPort")) noa_nod.ETDFromLastPort = DateTime.Parse(vDict["ETDFromLastPort"]);
|
||||
if (vDict.ContainsKey("ETAToPortOfCall")) noa_nod.ETAToPortOfCall = DateTime.Parse(vDict["ETAToPortOfCall"]);
|
||||
if (vDict.ContainsKey("ETDFromPortOfCall")) noa_nod.ETDFromPortOfCall = DateTime.Parse(vDict["ETDFromPortOfCall"]);
|
||||
if (vDict.ContainsKey("CallPurposeDescription")) noa_nod.CallPurposeDescription = vDict["CallPurposeDescription"];
|
||||
// if (vDict.ContainsKey("CallPurposeDescription")) noa_nod.CallPurposeDescription = vDict["CallPurposeDescription"];
|
||||
// if(vDict.ContainsKey("CountryOfNextPort")) noa_nod. nicht relevant
|
||||
if (vDict.ContainsKey("ETAToKielCanal")) noa_nod.ETAToKielCanal = DateTime.Parse(vDict["ETAToKielCanal"]);
|
||||
if (vDict.ContainsKey("ETDFromKielCanal")) noa_nod.ETDFromKielCanal = DateTime.Parse(vDict["ETDFromKielCanal"]);
|
||||
@ -170,6 +192,13 @@ namespace bsmd.herberg.FormService
|
||||
noa_nod.LastPort = vDict["CountryCodeOfLastPort"] + vDict["LastPortCode"];
|
||||
if (vDict.ContainsKey("CountryCodeOfNextPort") && vDict.ContainsKey("NextPortCode"))
|
||||
noa_nod.NextPort = vDict["CountryCodeOfNextPort"] + vDict["NextPortCode"];
|
||||
|
||||
foreach (int rowKey in nDict.Keys)
|
||||
{
|
||||
Dictionary<string, string> subvDict = nDict[rowKey];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -331,6 +360,31 @@ namespace bsmd.herberg.FormService
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "CREW":
|
||||
{
|
||||
if (theMessage.Elements.Count == 0)
|
||||
{
|
||||
CREW newCREW = new CREW();
|
||||
newCREW.MessageHeader = theMessage;
|
||||
theMessage.MessageNotificationClass = Message.NotificationClass.CREW;
|
||||
theMessage.Elements.Add(newCREW);
|
||||
}
|
||||
CREW crew = theMessage.Elements[0] as CREW;
|
||||
derivedMessage = crew;
|
||||
if (crew != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
//crew.
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_log.ErrorFormat("Error reading CREW fields: {0}", ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "BKRD":
|
||||
{
|
||||
if (theMessage.Elements.Count == 0)
|
||||
@ -357,7 +411,30 @@ namespace bsmd.herberg.FormService
|
||||
}
|
||||
break;
|
||||
case "WAS":
|
||||
|
||||
{
|
||||
if(theMessage.Elements.Count == 0)
|
||||
{
|
||||
WAS newWAS = new WAS();
|
||||
newWAS.MessageHeader = theMessage;
|
||||
theMessage.MessageNotificationClass = Message.NotificationClass.WAS;
|
||||
theMessage.Elements.Add(newWAS);
|
||||
}
|
||||
WAS was = theMessage.Elements[0] as WAS;
|
||||
derivedMessage = was;
|
||||
if(was != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (vDict.ContainsKey("WasteDisposalValidExemption")) was.WasteDisposalValidExemption = vDict["WasteDisposalValidExemption"].Equals("Y");
|
||||
if (vDict.ContainsKey("LastWasteDisposalDate")) was.LastWasteDisposalDate = DateTime.Parse(vDict["LastWasteDisposalDate"]);
|
||||
if (vDict.ContainsKey("LastWasteDisposalPort")) was.LastWasteDisposalPort = vDict["LastWasteDisposalPort"];
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
_log.ErrorFormat("Error reading WAS fields: {0}", ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "Visit":
|
||||
{
|
||||
|
||||
@ -261,10 +261,7 @@
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="DE">Zugestiegene Besatzungsmitglieder</xs:documentation>
|
||||
<xs:documentation xml:lang="EN">Joined Crew members</xs:documentation>
|
||||
<xs:documentation xml:lang="DE">
|
||||
Validierungsregel wenn im Element "MessageType" der Wert "FULL" steht: Die Namen der zugestiegenen Besatzungsmitglieder müssen angegeben werden.
|
||||
|
||||
</xs:documentation>
|
||||
<xs:documentation xml:lang="DE">Validierungsregel wenn im Element "MessageType" der Wert "FULL" steht: Die Namen der zugestiegenen Besatzungsmitglieder müssen angegeben werden.</xs:documentation>
|
||||
<xs:documentation xml:lang="EN">Validation rule if the element "MessageType" is "FULL": The name of the boarded crew members must be specified.</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
@ -524,7 +521,7 @@ Validierungsregel wenn im Element "MessageType" der Wert "FULL" steht: Die Namen
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="PART_ACCEPTED">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="DE"> teilweise akzeptiert (partially accepted). Wird verwendet, wenn Meldeklassen teilweise an das NSW gesendet und akzeptiert wurden und teilweise mit Fehlermeldungen abgelehnt wurden. Details zu den abgelehnten Meldeklassen finden Sie im Element "Errors".</xs:documentation>
|
||||
<xs:documentation xml:lang="DE">teilweise akzeptiert (partially accepted). Wird verwendet, wenn Meldeklassen teilweise an das NSW gesendet und akzeptiert wurden und teilweise mit Fehlermeldungen abgelehnt wurden. Details zu den abgelehnten Meldeklassen finden Sie im Element "Errors".</xs:documentation>
|
||||
<xs:documentation xml:lang="EN">partially accepted: Used when notifications were partially sent to the NSW and accepted and partially rejected with error messages. Details about the rejected notifications can be found in item "Errors".</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
@ -2694,7 +2691,7 @@ Alpha-2 code (two-digits flag code) in accordance with the standard ISO 3166-1)
|
||||
<xs:documentation xml:lang="EN">Waste disposal order type</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="Waste" type="tns:Waste" minOccurs="9" maxOccurs="9">
|
||||
<xs:element name="Waste" type="tns:Waste" minOccurs="0" maxOccurs="9">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="DE">Schiffsabfälle/Ladungsrückstände (Für jede Art (Schiffsabfälle / Ladungsrückstände) ist genau ein Element anzugeben. Diese Formatvereinfachung dient nur der maschinellen (M2M) Übergabe der Informationen und ist für die Dateneingabe entsprechend der Vorschrift gemäß RL 2000/59 Art. 6 Anhang II umzusetzen.)</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user