diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx
index 98ab49dd..cd26ef0c 100644
Binary files a/Stundensheet.xlsx and b/Stundensheet.xlsx differ
diff --git a/nsw/Dänemark/NSW-DK-Excel-Arrival.xltx b/nsw/Dänemark/NSW-DK-Excel-Arrival.xltx
index 51c83ba3..dc69da7f 100644
Binary files a/nsw/Dänemark/NSW-DK-Excel-Arrival.xltx and b/nsw/Dänemark/NSW-DK-Excel-Arrival.xltx differ
diff --git a/nsw/Dänemark/NSW-DK-Excel-Departure.xltx b/nsw/Dänemark/NSW-DK-Excel-Departure.xltx
index 53a5caa5..59e84157 100644
Binary files a/nsw/Dänemark/NSW-DK-Excel-Departure.xltx and b/nsw/Dänemark/NSW-DK-Excel-Departure.xltx differ
diff --git a/nsw/Source/SendNSWMessageService/NSWSendService.cs b/nsw/Source/SendNSWMessageService/NSWSendService.cs
index c8261298..6c17b655 100644
--- a/nsw/Source/SendNSWMessageService/NSWSendService.cs
+++ b/nsw/Source/SendNSWMessageService/NSWSendService.cs
@@ -138,6 +138,12 @@ namespace SendNSWMessageService
// versendet, bis im ENI der Status wieder explizit zurückgesetzt wird (16.4.16)
if (message.InternalStatus == Message.BSMDStatus.SUSPENDED) continue;
+ // "virtuelle" Messages nicht versenden (DK, EU)
+ if ((message.MessageNotificationClass == Message.NotificationClass.STO) ||
+ (message.MessageNotificationClass == Message.NotificationClass.CREWD) ||
+ (message.MessageNotificationClass == Message.NotificationClass.PASD))
+ continue;
+
// Wenn das ein Transit ist, werden nicht erforderliche Meldeklassen übersprungen
if (core.IsTransit)
{
diff --git a/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj b/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj
index d8f4edba..7fd1f48c 100644
--- a/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj
+++ b/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj
@@ -38,8 +38,8 @@
..\bsmdKey.snk
-
- ..\packages\log4net.2.0.5\lib\net45-full\log4net.dll
+
+ ..\packages\log4net.2.0.7\lib\net45-full\log4net.dll
True
diff --git a/nsw/Source/SendNSWMessageService/packages.config b/nsw/Source/SendNSWMessageService/packages.config
deleted file mode 100644
index a51db168..00000000
--- a/nsw/Source/SendNSWMessageService/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/nsw/Source/bsmd.ExcelReadService.sln b/nsw/Source/bsmd.ExcelReadService.sln
index 525cef08..02d58d4d 100644
--- a/nsw/Source/bsmd.ExcelReadService.sln
+++ b/nsw/Source/bsmd.ExcelReadService.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
+# Visual Studio 14
+VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "bsmd.ExcelReadService", "bsmd.ExcelReadService\bsmd.ExcelReadService.csproj", "{9475E638-DCFB-49E8-BD4E-3513D106C82A}"
EndProject
diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
index 9d9f6950..3a9cb896 100644
--- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
+++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
@@ -225,6 +225,36 @@ namespace bsmd.ExcelReadService
return result;
}
+ ///
+ /// read nationality field an returns 2 Char ISO code (optional lookup) and "confirms"
+ /// the field
+ ///
+ internal string ReadNationality(string lookup)
+ {
+ string val = this.ReadText(lookup);
+ if(val.IsNullOrEmpty()) {
+ this.Conf.ConfirmText(lookup, null, ReadState.FAIL);
+ }
+
+ if(val.Length > 2)
+ {
+ string isoCode = LocodeDB.CountryCodeFromName(val);
+ if(isoCode != null)
+ {
+ this.Conf.ConfirmText(lookup, val, ReadState.OK);
+ val = isoCode;
+ } else
+ {
+ this.Conf.ConfirmText(lookup, val, ReadState.WARN);
+ }
+ }
+
+ if (val.Length == 2)
+ this.Conf.ConfirmText(lookup, val, ReadState.OK);
+
+ return val;
+ }
+
internal byte? ReadHullConfiguration(string lookup)
{
string val = this.ReadText(lookup);
diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs
index d8137368..778ad684 100644
--- a/nsw/Source/bsmd.ExcelReadService/Util.cs
+++ b/nsw/Source/bsmd.ExcelReadService/Util.cs
@@ -274,9 +274,10 @@ namespace bsmd.ExcelReadService
{
string bpolName = string.Format("BPOL.PortOfItineraryName_{0}", i);
string bpolLocode = string.Format("BPOL.PortOfItineraryLoCode_{0}", i);
- string bpolETA = string.Format("BPOL.PortOfItineraryETA_{0}", i);
+ string bpolETADate = string.Format("BPOL.PortOfItineraryETADate_{0}", i);
+ string bpolETATime = string.Format("BPOL.PortOfItineraryETATime_{0}", i);
- string bpolNameValue = reader.ReadText(bpolName)?.Trim();
+ string bpolNameValue = reader.ReadText(bpolName)?.Trim();
if (!bpolNameValue.IsNullOrEmpty())
{
PortOfItinerary poi = bpol.GetSublistElementWithIdentifier(i.ToString()) as PortOfItinerary;
@@ -294,8 +295,7 @@ namespace bsmd.ExcelReadService
{
reader.Conf.ConfirmText(bpolLocode, poi.PortOfItineraryLocode, ExcelReader.ReadState.WARN);
}
- poi.PortOfItineraryETA = reader.ReadDate(bpolETA);
-
+ poi.PortOfItineraryETA = reader.ReadDateTime(bpolETADate, bpolETATime);
}
}
}
@@ -994,7 +994,9 @@ namespace bsmd.ExcelReadService
{
noa_nod.ETAToPortOfCall = messageCore.ETA;
- reader.Conf.ConfirmDate("NOA_NOD.ETAToPortOfCall", noa_nod.ETAToPortOfCall, ExcelReader.ReadState.OK);
+ // Zeit muss zurückkonvertiert werden, da toUniversalTime() kodiert
+ if(noa_nod.ETAToPortOfCall.HasValue)
+ reader.Conf.ConfirmDate("NOA_NOD.ETAToPortOfCall", noa_nod.ETAToPortOfCall.Value.ToLocalTime(), ExcelReader.ReadState.OK);
for (int i = 1; i <= noa_nod.NumberOfExcelRows; i++)
{
@@ -1074,11 +1076,17 @@ namespace bsmd.ExcelReadService
if(messageCore.IsTransit)
{
noa_nod.ETDFromKielCanal = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall");
- reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromKielCanal, ExcelReader.ReadState.OK);
+ if(noa_nod.ETDFromKielCanal.HasValue)
+ reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromKielCanal.Value.ToLocalTime(), ExcelReader.ReadState.OK);
+ else
+ reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL);
} else
{
noa_nod.ETDFromPortOfCall = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall");
- reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromPortOfCall, ExcelReader.ReadState.OK);
+ if(noa_nod.ETDFromPortOfCall.HasValue)
+ reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromPortOfCall.Value.ToLocalTime(), ExcelReader.ReadState.OK);
+ else
+ reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL);
}
noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort");
@@ -1171,9 +1179,9 @@ namespace bsmd.ExcelReadService
}
waste.WasteType = (int?) reader.ReadNumber(wasteCode);
- reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplayV4, ExcelReader.ReadState.OK);
-
- reader.Conf.ConfirmNumber(wastetype, waste.WasteType, ExcelReader.ReadState.OK);
+ reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplayV4, ExcelReader.ReadState.OK);
+ reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK);
+
waste.WasteDescription = reader.ReadText(wasteDescription);
if (waste.WasteDescription.IsNullOrEmpty())
{
@@ -1823,12 +1831,7 @@ namespace bsmd.ExcelReadService
crew.CrewMemberDuty = reader.ReadText(crewDuty);
reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK);
- crew.CrewMemberNationality = reader.ReadText(crewNationality);
- if (!crew.CrewMemberNationality.IsNullOrEmpty() && (crew.CrewMemberNationality.Length > 2))
- reader.Conf.ConfirmText(crewNationality, crew.CrewMemberNationality, ExcelReader.ReadState.FAIL);
- else
- reader.Conf.ConfirmText(crewNationality, crew.CrewMemberNationality, ExcelReader.ReadState.OK);
-
+ crew.CrewMemberNationality = reader.ReadNationality(crewNationality);
crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth);
reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK);
@@ -1880,12 +1883,7 @@ namespace bsmd.ExcelReadService
crew.CrewMemberDuty = reader.ReadText(crewDuty);
reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK);
- crew.CrewMemberNationality = reader.ReadText(crewNationality);
- if (!crew.CrewMemberNationality.IsNullOrEmpty() && (crew.CrewMemberNationality.Length > 2))
- reader.Conf.ConfirmText(crewNationality, crew.CrewMemberNationality, ExcelReader.ReadState.FAIL);
- else
- reader.Conf.ConfirmText(crewNationality, crew.CrewMemberNationality, ExcelReader.ReadState.OK);
-
+ crew.CrewMemberNationality = reader.ReadNationality(crewNationality);
crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth);
reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK);
@@ -1941,11 +1939,7 @@ namespace bsmd.ExcelReadService
pas.PassengerFirstName = reader.ReadText(pasFirstName);
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, ExcelReader.ReadState.OK);
pas.PassengerGender = reader.ReadGender(pasGender);
- pas.PassengerNationality = reader.ReadText(pasNationality);
- if (!pas.PassengerNationality.IsNullOrEmpty() && pas.PassengerNationality.Length > 2)
- reader.Conf.ConfirmText(pasNationality, pas.PassengerNationality, ExcelReader.ReadState.FAIL);
- else
- reader.Conf.ConfirmText(pasNationality, pas.PassengerNationality, ExcelReader.ReadState.OK);
+ pas.PassengerNationality = reader.ReadNationality(pasNationality);
// TODO: Nicht klar ob hier LOCODEs kommen oder nicht
pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation);
reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, ExcelReader.ReadState.OK);
@@ -1999,11 +1993,7 @@ namespace bsmd.ExcelReadService
pas.PassengerFirstName = reader.ReadText(pasFirstName);
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, ExcelReader.ReadState.OK);
pas.PassengerGender = reader.ReadGender(pasGender);
- pas.PassengerNationality = reader.ReadText(pasNationality);
- if (!pas.PassengerNationality.IsNullOrEmpty() && pas.PassengerNationality.Length > 2)
- reader.Conf.ConfirmText(pasNationality, pas.PassengerNationality, ExcelReader.ReadState.FAIL);
- else
- reader.Conf.ConfirmText(pasNationality, pas.PassengerNationality, ExcelReader.ReadState.OK);
+ pas.PassengerNationality = reader.ReadNationality(pasNationality);
// TODO: Nicht klar ob hier LOCODEs kommen oder nicht
pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation);
reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, ExcelReader.ReadState.OK);
diff --git a/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj b/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj
index c2168ac2..7fe100ad 100644
--- a/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj
+++ b/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj
@@ -34,8 +34,8 @@
4
-
- ..\packages\log4net.2.0.5\lib\net45-full\log4net.dll
+
+ ..\packages\log4net.2.0.7\lib\net45-full\log4net.dll
True
@@ -48,8 +48,8 @@
-
- ..\packages\System.Data.SQLite.Core.1.0.103\lib\net45\System.Data.SQLite.dll
+
+ ..\packages\System.Data.SQLite.Core.1.0.104.0\lib\net45\System.Data.SQLite.dll
True
@@ -129,12 +129,12 @@
-
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+