diff --git a/ENI2/App.config b/ENI2/App.config
index 234c2e31..6105b6f2 100644
--- a/ENI2/App.config
+++ b/ENI2/App.config
@@ -26,11 +26,11 @@
1000
- http://heupferd/bsmd.LockingService/LockingService.svc
+ http://192.168.2.24/LockingService/LockingService.svc
- Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=E:\DATA\DB\NSW.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
-
+ Initial Catalog=nswtest;Data Source=192.168.2.24\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;Persist Security Info=False;Connection Reset=false
+
diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj
index a9588845..b4a81828 100644
--- a/ENI2/ENI2.csproj
+++ b/ENI2/ENI2.csproj
@@ -18,7 +18,7 @@
- eni2.publish\
+ eni_test\
true
Web
true
@@ -28,9 +28,9 @@
false
false
true
- http://192.168.2.24/eni2.publish/
+ http://192.168.2.24/eni_test/
http://www.textbausteine.net/
- ENI
+ ENI Testversion
Informatikbüro Daniel Schick
NSW
5.4.0.0
@@ -86,7 +86,7 @@
Properties\app.manifest
- 9B5725EAD90F2E06094631407417EB2554E88941
+ 94D98790E3B6C4CC9F4B57C8FD305E3225894DF8
true
diff --git a/ENI2/Excel/ExcelReader.cs b/ENI2/Excel/ExcelReader.cs
index 58220717..0b4f47c2 100644
--- a/ENI2/Excel/ExcelReader.cs
+++ b/ENI2/Excel/ExcelReader.cs
@@ -316,6 +316,32 @@ namespace ENI2.Excel
return result;
}
+ internal byte? ReadHazards(string lookup)
+ {
+ string val = this.ReadText(lookup);
+ byte? result = null;
+ if(val != null)
+ {
+ if (val.Equals("p", StringComparison.OrdinalIgnoreCase)) return 0;
+ if (val.Equals("s", StringComparison.OrdinalIgnoreCase)) return 1;
+ if (val.Equals("s/p", StringComparison.OrdinalIgnoreCase)) return 2;
+ }
+ return result;
+ }
+
+ internal byte? ReadHazardClass(string lookup)
+ {
+ string val = this.ReadText(lookup);
+ byte? result = null;
+ if(val != null)
+ {
+ if (val.Equals("a", StringComparison.OrdinalIgnoreCase)) return 0;
+ if (val.Equals("b", StringComparison.OrdinalIgnoreCase)) return 1;
+ if (val.Equals("a and b", StringComparison.OrdinalIgnoreCase)) return 2; // TODO make this more flexible
+ }
+ return result;
+ }
+
internal DateTime? ReadBirthDate(string lookup)
{
DateTime? result = this.ReadDate(lookup);
diff --git a/ENI2/Excel/ExcelUtil.cs b/ENI2/Excel/ExcelUtil.cs
index e1ae2ebb..0978c85f 100644
--- a/ENI2/Excel/ExcelUtil.cs
+++ b/ENI2/Excel/ExcelUtil.cs
@@ -87,7 +87,7 @@ namespace ENI2.Excel
if ((message.MessageNotificationClass == Message.NotificationClass.SERV) && notificationClasses.Contains(Message.NotificationClass.SERV))
{ if (ScanSERV(message, reader)) SaveMessage(message); continue; }
if ((message.MessageNotificationClass == Message.NotificationClass.STAT) && notificationClasses.Contains(Message.NotificationClass.STAT))
- { if (ScanSTAT(message, messageCore, reader)) SaveMessage(message); continue; }
+ { if (ScanSTAT(message, messageCore, messages, reader)) SaveMessage(message); continue; }
if ((message.MessageNotificationClass == Message.NotificationClass.STO) && notificationClasses.Contains(Message.NotificationClass.STO))
{ if (ScanSTO(message, reader)) SaveMessage(message); continue; }
if ((message.MessageNotificationClass == Message.NotificationClass.TIEFA) && notificationClasses.Contains(Message.NotificationClass.TIEFA))
@@ -100,6 +100,8 @@ namespace ENI2.Excel
{ if (ScanTOWD(message, reader)) SaveMessage(message); continue; }
if ((message.MessageNotificationClass == Message.NotificationClass.WAS) && notificationClasses.Contains(Message.NotificationClass.WAS))
{ if (ScanWAS(message, reader)) SaveMessage(message); continue; }
+ if((message.MessageNotificationClass == Message.NotificationClass.WAS_RCPT) && notificationClasses.Contains(Message.NotificationClass.WAS_RCPT))
+ { if (ScanWAS_RCPT(message, reader)) SaveMessage(message); continue; }
}
@@ -187,6 +189,8 @@ namespace ENI2.Excel
ScanMessage(tiefa, reader);
if (!tiefa.DraughtUponArrival_DMT.HasValue && tiefaMessage.IsNew)
return false;
+ if (tiefa.DraughtUponArrival_DMT.HasValue)
+ tiefa.DraughtUponArrival_DMT = tiefa.DraughtUponArrival_DMT.Value * 10; // m to dm
return true;
}
@@ -206,6 +210,8 @@ namespace ENI2.Excel
ScanMessage(tiefd, reader);
if (!tiefd.DraughtUponDeparture_DMT.HasValue && tiefdMessage.IsNew)
return false;
+ if (tiefd.DraughtUponDeparture_DMT.HasValue)
+ tiefd.DraughtUponDeparture_DMT = tiefd.DraughtUponDeparture_DMT.Value * 10; // m to dm
return true;
}
@@ -382,7 +388,7 @@ namespace ENI2.Excel
string imdg_portOfLoading = string.Format("HAZA.IMDG.PortOfLoading_{0}", i);
string imdg_portOfDischarge = string.Format("HAZA.IMDG.PortOfDischarge_{0}", i);
string imdg_containerNumber = string.Format("HAZA.IMDG.ContainerNumber_{0}", i);
-
+ string imdg_remarks = string.Format("HAZA.IMDG.Remarks_{0}", i);
string unNumber = reader.ReadText(imdg_unno);
if(unNumber.IsNullOrEmpty()) // if unnumber is not set ignore this row
@@ -416,7 +422,8 @@ namespace ENI2.Excel
imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition);
imdgPosition.PortOfLoading = reader.ReadText(imdg_portOfLoading);
imdgPosition.PortOfDischarge = reader.ReadText(imdg_portOfDischarge);
- imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
+ imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
+ imdgPosition.Remarks = reader.ReadText(imdg_remarks);
}
#endregion
@@ -432,6 +439,9 @@ namespace ENI2.Excel
string ibc_stowagePosition = string.Format("HAZA.IBC.StowagePosition_{0}", i);
string ibc_portOfLoading = string.Format("HAZA.IBC.PortOfLoading_{0}", i);
string ibc_portOfDischarge = string.Format("HAZA.IBC.PortOfDischarge_{0}", i);
+ string ibc_hazards = string.Format("HAZA.IBC.Hazards_{0}", i);
+ string ibc_specrefs = string.Format("HAZA.IBC.SpecRef15_19_{0}", i);
+ string ibc_remarks = string.Format("HAZA.IBC.Remarks_{0}", i);
string productName = reader.ReadText(ibc_productName);
if (productName.IsNullOrEmpty()) continue;
@@ -473,7 +483,10 @@ namespace ENI2.Excel
ibcPosition.Quantity_KGM = (int ?) reader.ReadNumber(ibc_quantity);
ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition);
ibcPosition.PortOfLoading = reader.ReadText(ibc_portOfLoading);
- ibcPosition.PortOfDischarge = reader.ReadText(ibc_portOfDischarge);
+ ibcPosition.PortOfDischarge = reader.ReadText(ibc_portOfDischarge);
+ ibcPosition.Hazards = reader.ReadHazards(ibc_hazards);
+ ibcPosition.SpecRef15_19 = reader.ReadBoolean(ibc_specrefs);
+ ibcPosition.Remarks = reader.ReadText(ibc_remarks);
}
#endregion
@@ -487,6 +500,9 @@ namespace ENI2.Excel
string igc_stowagePosition = string.Format("HAZA.IGC.StowagePosition_{0}", i);
string igc_portOfLoading = string.Format("HAZA.IGC.PortOfLoading_{0}", i);
string igc_portOfDischarge = string.Format("HAZA.IGC.PortOfDischarge_{0}", i);
+ string igc_unnumber = string.Format("HAZA.IGC.UNNumber_{0}", i);
+ string igc_imoclass = string.Format("HAZA.IGC.IMOClass_{0}", i);
+ string igc_remarks = string.Format("HAZA.IGC.Remarks_{0}", i);
string productName = reader.ReadText(igc_productName);
if (productName.IsNullOrEmpty()) continue;
@@ -505,7 +521,10 @@ namespace ENI2.Excel
igcPosition.Quantity_KGM = reader.ReadNumber(igc_quantity);
igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition);
igcPosition.PortOfLoading = reader.ReadText(igc_portOfLoading);
- igcPosition.PortOfDischarge = reader.ReadText(igc_portOfDischarge);
+ igcPosition.PortOfDischarge = reader.ReadText(igc_portOfDischarge);
+ igcPosition.UNNumber = reader.ReadText(igc_unnumber);
+ igcPosition.IMOClass = reader.ReadText(igc_imoclass);
+ igcPosition.Remarks = reader.ReadText(igc_remarks);
}
#endregion
@@ -520,6 +539,10 @@ namespace ENI2.Excel
string imsbc_stowagePosition = string.Format("HAZA.IMSBC.StowagePosition_{0}", i);
string imsbc_portOfLoading = string.Format("HAZA.IMSBC.PortOfLoading_{0}", i);
string imsbc_portOfDischarge = string.Format("HAZA.IMSBC.PortOfDischarge_{0}", i);
+ string imsbc_hazardclass = string.Format("HAZA.IMSBC.IMOHazardClass_{0}", i);
+ string imsbc_unnumber = string.Format("HAZA.IMSBC.UNNumber_{0}", i);
+ string imsbc_imoclass = string.Format("HAZA.IMSBC.IMOClass_{0}", i);
+ string imsbc_remarks = string.Format("HAZA.IMSBC.Remarks_{0}", i);
string bcsn = reader.ReadText(imsbc_bcsn);
if (bcsn.IsNullOrEmpty()) continue;
@@ -539,7 +562,11 @@ namespace ENI2.Excel
imsbcPosition.Quantity_KGM = reader.ReadNumber(imsbc_quantity);
imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition);
imsbcPosition.PortOfLoading = reader.ReadText(imsbc_portOfLoading);
- imsbcPosition.PortOfDischarge = reader.ReadText(imsbc_portOfDischarge);
+ imsbcPosition.PortOfDischarge = reader.ReadText(imsbc_portOfDischarge);
+ imsbcPosition.IMOHazardClass = reader.ReadHazardClass(imsbc_hazardclass);
+ imsbcPosition.UNNumber = reader.ReadText(imsbc_unnumber);
+ imsbcPosition.IMOClass = reader.ReadText(imsbc_imoclass);
+ imsbcPosition.Remarks = reader.ReadText(imsbc_remarks);
}
#endregion
@@ -554,6 +581,7 @@ namespace ENI2.Excel
string marpol_stowagePosition = string.Format("HAZA.MARPOL.StowagePosition_{0}", i);
string marpol_portOfLoading = string.Format("HAZA.MARPOL.PortOfLoading_{0}", i);
string marpol_portOfDischarge = string.Format("HAZA.MARPOL.PortOfDischarge_{0}", i);
+ string marpol_remarks = string.Format("HAZA.MARPOL.Remarks_{0}", i);
string name = reader.ReadText(marpol_name);
if (name.IsNullOrEmpty()) continue;
@@ -585,8 +613,9 @@ namespace ENI2.Excel
marpolPosition.Quantity_KGM = reader.ReadNumber(marpol_quantity);
marpolPosition.StowagePosition = reader.ReadText(marpol_stowagePosition);
- marpolPosition.PortOfLoading = reader.ReadText(marpol_portOfLoading);
- marpolPosition.PortOfDischarge = reader.ReadText(marpol_portOfDischarge);
+ marpolPosition.PortOfLoading = reader.ReadText(marpol_portOfLoading);
+ marpolPosition.PortOfDischarge = reader.ReadText(marpol_portOfDischarge);
+ marpolPosition.Remarks = reader.ReadText(marpol_remarks);
}
#endregion
@@ -648,6 +677,7 @@ namespace ENI2.Excel
string imdg_portOfLoading = string.Format("HAZD.IMDG.PortOfLoading_{0}", i);
string imdg_portOfDischarge = string.Format("HAZD.IMDG.PortOfDischarge_{0}", i);
string imdg_containerNumber = string.Format("HAZD.IMDG.ContainerNumber_{0}", i);
+ string imdg_remarks = string.Format("HAZD.IMDG.Remarks_{0}", i);
string unNumber = reader.ReadText(imdg_unno);
if (unNumber.IsNullOrEmpty()) continue; // if unnumber is not set ignore this row
@@ -678,7 +708,8 @@ namespace ENI2.Excel
imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition);
imdgPosition.PortOfLoading = reader.ReadText(imdg_portOfLoading);
imdgPosition.PortOfDischarge = reader.ReadText(imdg_portOfDischarge);
- imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
+ imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
+ imdgPosition.Remarks = reader.ReadText(imdg_remarks);
}
#endregion
@@ -694,6 +725,9 @@ namespace ENI2.Excel
string ibc_stowagePosition = string.Format("HAZD.IBC.StowagePosition_{0}", i);
string ibc_portOfLoading = string.Format("HAZD.IBC.PortOfLoading_{0}", i);
string ibc_portOfDischarge = string.Format("HAZD.IBC.PortOfDischarge_{0}", i);
+ string ibc_hazards = string.Format("HAZD.IBC.Hazards_{0}", i);
+ string ibc_specref = string.Format("HAZD.IBC.SpecRef15_19_{0}", i);
+ string ibc_remarks = string.Format("HAZD.IBC.Remarks_{0}", i);
string productName = reader.ReadText(ibc_productName);
if (productName.IsNullOrEmpty()) continue;
@@ -735,7 +769,10 @@ namespace ENI2.Excel
ibcPosition.Quantity_KGM = (int?)reader.ReadNumber(ibc_quantity);
ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition);
ibcPosition.PortOfLoading = reader.ReadText(ibc_portOfLoading);
- ibcPosition.PortOfDischarge = reader.ReadText(ibc_portOfDischarge);
+ ibcPosition.PortOfDischarge = reader.ReadText(ibc_portOfDischarge);
+ ibcPosition.Hazards = reader.ReadHazards(ibc_hazards);
+ ibcPosition.SpecRef15_19 = reader.ReadBoolean(ibc_specref);
+ ibcPosition.Remarks = reader.ReadText(ibc_remarks);
}
#endregion
@@ -749,6 +786,9 @@ namespace ENI2.Excel
string igc_stowagePosition = string.Format("HAZD.IGC.StowagePosition_{0}", i);
string igc_portOfLoading = string.Format("HAZD.IGC.PortOfLoading_{0}", i);
string igc_portOfDischarge = string.Format("HAZD.IGC.PortOfDischarge_{0}", i);
+ string igc_unnumber = string.Format("HAZD.IGC.UNNumber_{0}", i);
+ string igc_imoclass = string.Format("HAZD.IGC.IMOClass_{0}", i);
+ string igc_remarks = string.Format("HAZD.IGC.Remarks_{0}", i);
string productName = reader.ReadText(igc_productName);
if (productName.IsNullOrEmpty()) continue;
@@ -767,7 +807,10 @@ namespace ENI2.Excel
igcPosition.Quantity_KGM = reader.ReadNumber(igc_quantity);
igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition);
igcPosition.PortOfLoading = reader.ReadText(igc_portOfLoading);
- igcPosition.PortOfDischarge = reader.ReadText(igc_portOfDischarge);
+ igcPosition.PortOfDischarge = reader.ReadText(igc_portOfDischarge);
+ igcPosition.UNNumber = reader.ReadText(igc_unnumber);
+ igcPosition.IMOClass = reader.ReadText(igc_imoclass);
+ igcPosition.Remarks = reader.ReadText(igc_remarks);
}
#endregion
@@ -782,6 +825,10 @@ namespace ENI2.Excel
string imsbc_stowagePosition = string.Format("HAZD.IMSBC.StowagePosition_{0}", i);
string imsbc_portOfLoading = string.Format("HAZD.IMSBC.PortOfLoading_{0}", i);
string imsbc_portOfDischarge = string.Format("HAZD.IMSBC.PortOfDischarge_{0}", i);
+ string imsbc_hazardclass = string.Format("HAZD.IMSBC.IMOHazardClass_{0}", i);
+ string imsbc_unnumber = string.Format("HAZD.IMSBC.UNNumber_{0}", i);
+ string imsbc_imoclass = string.Format("HAZD.IMSBC.IMOClass_{0}", i);
+ string imsbc_remarks = string.Format("HAZD.IMSBC.Remarks_{0}", i);
string bcsn = reader.ReadText(imsbc_bcsn);
if (bcsn.IsNullOrEmpty()) continue;
@@ -801,7 +848,11 @@ namespace ENI2.Excel
imsbcPosition.Quantity_KGM = reader.ReadNumber(imsbc_quantity);
imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition);
imsbcPosition.PortOfLoading = reader.ReadText(imsbc_portOfLoading);
- imsbcPosition.PortOfDischarge = reader.ReadText(imsbc_portOfDischarge);
+ imsbcPosition.PortOfDischarge = reader.ReadText(imsbc_portOfDischarge);
+ imsbcPosition.IMOHazardClass = reader.ReadHazardClass(imsbc_hazardclass);
+ imsbcPosition.UNNumber = reader.ReadText(imsbc_unnumber);
+ imsbcPosition.IMOClass = reader.ReadText(imsbc_imoclass);
+ imsbcPosition.Remarks = reader.ReadText(imsbc_remarks);
}
#endregion
@@ -816,6 +867,7 @@ namespace ENI2.Excel
string marpol_stowagePosition = string.Format("HAZD.MARPOL.StowagePosition_{0}", i);
string marpol_portOfLoading = string.Format("HAZD.MARPOL.PortOfLoading_{0}", i);
string marpol_portOfDischarge = string.Format("HAZD.MARPOL.PortOfDischarge_{0}", i);
+ string marpol_remarks = string.Format("HAZD.MARPOL.Remarks_{0}", i);
string name = reader.ReadText(marpol_name);
if (name.IsNullOrEmpty()) continue;
@@ -845,9 +897,10 @@ namespace ENI2.Excel
}
marpolPosition.Quantity_KGM = reader.ReadNumber(marpol_quantity);
- marpolPosition.StowagePosition = reader.ReadText(marpol_stowagePosition);
- marpolPosition.PortOfLoading = reader.ReadText(marpol_portOfLoading);
- marpolPosition.PortOfDischarge = reader.ReadText(marpol_portOfDischarge);
+ marpolPosition.StowagePosition = reader.ReadText(marpol_stowagePosition);
+ marpolPosition.PortOfLoading = reader.ReadText(marpol_portOfLoading);
+ marpolPosition.PortOfDischarge = reader.ReadText(marpol_portOfDischarge);
+ marpolPosition.Remarks = reader.ReadText(marpol_remarks);
}
#endregion
@@ -886,7 +939,7 @@ namespace ENI2.Excel
#region STAT
- private static bool ScanSTAT(Message statMessage, MessageCore messageCore, ExcelReader reader)
+ private static bool ScanSTAT(Message statMessage, MessageCore messageCore, List messages, ExcelReader reader)
{
if(statMessage.Elements.Count == 0)
{
@@ -897,8 +950,22 @@ namespace ENI2.Excel
STAT stat = statMessage.Elements[0] as STAT;
ScanMessage(stat, reader);
+ foreach(Message preMessage in messages)
+ {
+ if(preMessage.MessageNotificationClass == Message.NotificationClass.PRE72H)
+ {
+ if(preMessage.Elements.Count > 0)
+ {
+ PRE72H pre72h = preMessage.Elements[0] as PRE72H;
+ pre72h.Tanker = stat.IsTanker;
+ SaveMessage(preMessage);
+ }
+ }
+ }
+
stat.PortOfRegistry = reader.ReadLoCode("STAT.PortOfRegistry");
- stat.Flag = reader.ReadNationality("STAT.Flag");
+ if (stat.PortOfRegistry.Length == 5)
+ stat.Flag = stat.PortOfRegistry.Substring(0, 2);
stat.MMSINumber = reader.ReadTextNoWhitespace("STAT.MMSINumber");
stat.CallSign = reader.ReadTextNoWhitespace("STAT.CallSign");
stat.ISMCompanyId = reader.ReadTextNoWhitespace("STAT.ISMCompanyId");
@@ -1061,7 +1128,10 @@ namespace ENI2.Excel
ScanMessage(was, reader);
was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery");
- was.LastWasteDisposalPort = reader.ReadLoCode("WAS.LastWasteDisposalPort");
+ was.LastWasteDisposalPort = reader.ReadLoCode("WAS.LastWasteDisposalPort");
+ was.NextWasteDisposalPort = reader.ReadLoCode("WAS.NextWasteDisposalPort");
+ was.ConfirmationOfCorrectness = true; // wir haben immer Recht (NSW7.0)
+ was.ConfirmationOfSufficiency = true;
string wastedispServProvName = reader.ReadText("WAS.WasteDisposalServiceProviderName");
if (wastedispServProvName != null)
@@ -1077,7 +1147,7 @@ namespace ENI2.Excel
was.WasteDisposalServiceProvider[0].WasteDisposalDelivery = was.WasteDisposalDelivery;
}
- // Waste 1 - 15
+ // Waste 1 - 25
for (int i = 1; i <= was.NumberOfExcelRows; i++)
{
//string wastetype = string.Format("WAS.WasteType_{0}", i);
@@ -1087,8 +1157,7 @@ namespace ENI2.Excel
string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i);
string wasteRetained = string.Format("WAS.WasteAmountRetained_MTQ_{0}", i);
string wastePort = string.Format("WAS.WasteDisposalPort_{0}", i);
- string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i);
- string wasteDis = string.Format("WAS.WasteDisposedAtLastPort_MTQ_{0}", i);
+ string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i);
if (!(was.GetSublistElementWithIdentifier(i.ToString()) is Waste waste))
{
@@ -1140,15 +1209,14 @@ namespace ENI2.Excel
waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity);
waste.WasteAmountRetained_MTQ = reader.ReadNumberDefaultZero(wasteRetained);
- waste.WasteDisposalPort = reader.ReadLoCode(wastePort);
+ waste.WasteDisposalPort = reader.ReadLoCode(wastePort); // aka RemainingWasteDisposalPort
if (waste.WasteDisposalPort.IsNullOrEmpty())
{
waste.WasteDisposalPort = "ZZUKN";
}
- waste.WasteAmountGeneratedTillNextPort_MTQ = reader.ReadNumberDefaultZero(amountGen);
- waste.WasteDisposedAtLastPort_MTQ = reader.ReadNumberDefaultZero(wasteDis);
+ waste.WasteAmountGeneratedTillNextPort_MTQ = reader.ReadNumberDefaultZero(amountGen);
if(i==15) // falls letzte Zeile leer, entfernen: Christin 22.3.17
{
@@ -1169,6 +1237,77 @@ namespace ENI2.Excel
}
#endregion
+ #region WAS_RCPT
+
+ private static bool ScanWAS_RCPT(Message was_rcptMessage, ExcelReader reader)
+ {
+ was_rcptMessage.DeleteElements();
+
+ for (int i = 1; i <= was_rcptMessage.NumberOfExcelRows; i++)
+ {
+ string wasrcpt_identNumber = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.IdentificationNumber", i);
+ string wasrcpt_portreceptFacilityName = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.PortReceptionFacilityName", i);
+ string wasrcpt_portreceptFacilityProviderName = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.PortReceptionFacilityProviderName", i);
+ string wasrcpt_treatmentFacility = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.TreatmentFacilityProviderName", i);
+ string wasrcpt_delFromDate = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.WasteDeliveryDateFromDate", i);
+ string wasrcpt_delFromTime = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.WasteDeliveryDateFromTime", i);
+ string wasrcpt_delToDate = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.WasteDeliveryDateToDate", i);
+ string wasrcpt_delToTime = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.WasteDeliveryDateToTime", i);
+
+ if (!(was_rcptMessage.GetSublistElementWithIdentifier((i).ToString()) is WAS_RCPT wasr))
+ {
+ wasr = new WAS_RCPT();
+ wasr.Identifier = (i).ToString();
+ wasr.MessageHeader = was_rcptMessage;
+ was_rcptMessage.Elements.Add(wasr);
+ }
+ else
+ {
+ wasr.DeleteElements();
+ }
+
+ wasr.IdentificationNumber = reader.ReadText(wasrcpt_identNumber);
+ wasr.PortReceptionFacilityName = reader.ReadText(wasrcpt_portreceptFacilityName);
+ wasr.PortReceptionFacilityProviderName = reader.ReadText(wasrcpt_portreceptFacilityProviderName);
+ string treatmentFacility = reader.ReadText(wasrcpt_treatmentFacility);
+ if(!treatmentFacility.IsNullOrEmpty())
+ {
+ TreatmentFacilityProvider tfp = new TreatmentFacilityProvider();
+ tfp.WAS_RCPT = wasr;
+ tfp.Identifier = "1";
+ wasr.TreatmentFacilityProvider.Add(tfp);
+ tfp.TreatmentFacilityProviderName = treatmentFacility;
+ }
+ wasr.WasteDeliveryDateFrom = reader.ReadDateTime(wasrcpt_delFromDate, wasrcpt_delFromTime);
+ wasr.WasteDeliveryDateTo = reader.ReadDateTime(wasrcpt_delToDate, wasrcpt_delToTime);
+
+ // read waste deliveries
+ for (int j = 1; j <= wasr.NumberOfExcelRows; j++)
+ {
+ string wtype = string.Format("WAS_RCPT.WasteDeliveryReceipt.WasteCode_{0}", j);
+ string wDescr = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.WasteDescription_{1}", i, j);
+ string wAmount = string.Format("WAS_RCPT.WasteDeliveryReceipt_{0}.AmountWasteReceived_MTQ_{1}", i, j);
+
+ WasteReceived wr = new WasteReceived();
+ wr.WAS_RCPT = wasr;
+ wasr.WasteReceived.Add(wr);
+ wr.Identifier = j.ToString();
+
+ wr.WasteCode = reader.ReadText(wtype);
+ wr.WasteDescription = reader.ReadText(wDescr);
+ wr.AmountWasteReceived_MTQ = reader.ReadNumber(wAmount);
+ }
+
+ // only add message when an identification number was given
+ if (wasr.IdentificationNumber.IsNullOrEmpty())
+ was_rcptMessage.Elements.Remove(wasr);
+ }
+
+ return true;
+ }
+
+ #endregion
+
#region MDH
private static bool ScanMDH(Message mdhMessage, List messages, MessageCore messageCore, ExcelReader reader)
@@ -1685,6 +1824,8 @@ namespace ENI2.Excel
string tLen = string.Format("TOWD.TowageOnDepartureLengthOverall_MTR_{0}", i);
string tBeam = string.Format("TOWD.TowageOnDepartureBeam_MTR_{0}", i);
string tOp = string.Format("TOWD.TowageOnDepartureOperatorCompanyName_{0}", i);
+ string tPoc = string.Format("TOWD.TowageOnArrivalPurposeOfCall_{0}", i);
+ string tgt = string.Format("TOWD.TowageOnArrivalGrossTonnage_{0}", i);
string towageName = reader.ReadText(tName);
if (towageName.IsNullOrEmpty()) continue;
@@ -1702,7 +1843,8 @@ namespace ENI2.Excel
towd.TowageOnDepartureDraught_DMT = reader.ReadNumber(tDraft);
towd.TowageOnDepartureLengthOverall_MTR = reader.ReadNumber(tLen);
towd.TowageOnDepartureBeam_MTR = reader.ReadNumber(tBeam);
- towd.TowageOnDepartureOperatorCompanyName = reader.ReadText(tOp);
+ towd.TowageOnDepartureOperatorCompanyName = reader.ReadText(tOp);
+ //towd.TowageOnD
}
return true;
}
@@ -1882,6 +2024,9 @@ namespace ENI2.Excel
{
crewMessage.DeleteElements();
+ bool? notificationSchengen = reader.ReadBoolean("CREW.NotificationSchengen");
+ bool? notificationPax = reader.ReadBoolean("CREW.NotificationPAX");
+
for (int i = 0; i < crewMessage.NumberOfExcelRows; i++)
{
string crewLastName = string.Format("CREW.CrewMemberLastName_{0}", i + 1);
@@ -1894,6 +2039,10 @@ namespace ENI2.Excel
string crewIdentDocType = string.Format("CREW.CrewMemberIdentityDocumentType_{0}", i + 1);
string crewIdentDocId = string.Format("CREW.CrewMemberIdentityDocumentId_{0}", i + 1);
string crewVisaNo = string.Format("CREW.CrewMemberVisaNumber_{0}", i + 1);
+ string crewIssuing = string.Format("CREW.CrewMemberIdentityDocumentIssuingState_{0}", i + 1);
+ string crewIdentDocExpiry = string.Format("CREW.CrewmemberIdentityDocumentExpiryDate_{0}", i + 1);
+ string crewCountryOfBirth = string.Format("CREW.CountryOfBirth_{0}", i + 1);
+ string crewEffects = string.Format("CREW.Effects_{0}", i + 1);
string lastName = reader.ReadText(crewLastName);
string firstName = reader.ReadText(crewFirstName);
@@ -1908,6 +2057,8 @@ namespace ENI2.Excel
crewMessage.Elements.Add(crew);
}
+ crew.NotificationSchengen = notificationSchengen;
+ crew.NotificationPAX = notificationPax;
crew.CrewMemberLastName = lastName;
crew.CrewMemberFirstName = firstName;
crew.CrewMemberGender = reader.ReadGender(crewGender);
@@ -1917,7 +2068,11 @@ namespace ENI2.Excel
crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth);
crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType);
crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId);
- crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo);
+ crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo);
+ crew.CrewMemberIdentityDocumentIssuingState = reader.ReadNationality(crewIssuing);
+ crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadDate(crewIdentDocExpiry);
+ crew.CrewMemberCountryOfBirth = reader.ReadNationality(crewCountryOfBirth);
+ crew.Effects = reader.ReadText(crewEffects);
}
}
@@ -1928,7 +2083,10 @@ namespace ENI2.Excel
{
crewdMessage.DeleteElements();
// CREW DEPARTURE
-
+
+ bool? notificationSchengen = reader.ReadBoolean("CREWD.NotificationSchengen");
+ bool? notificationPax = reader.ReadBoolean("CREWD.NotificationPAX");
+
for (int i = 0; i < crewdMessage.NumberOfExcelRows; i++)
{
string crewLastName = string.Format("CREWD.CrewMemberLastName_{0}", i + 1);
@@ -1941,6 +2099,9 @@ namespace ENI2.Excel
string crewIdentDocType = string.Format("CREWD.CrewMemberIdentityDocumentType_{0}", i + 1);
string crewIdentDocId = string.Format("CREWD.CrewMemberIdentityDocumentId_{0}", i + 1);
string crewVisaNo = string.Format("CREWD.CrewMemberVisaNumber_{0}", i + 1);
+ string crewIssuing = string.Format("CREWD.CrewMemberIdentityDocumentIssuingState_{0}", i + 1);
+ string crewIdentDocExpiry = string.Format("CREWD.CrewmemberIdentityDocumentExpiryDate_{0}", i + 1);
+ string crewCountryOfBirth = string.Format("CREWD.CountryOfBirth_{0}", i + 1);
string lastName = reader.ReadText(crewLastName);
if (!lastName.IsNullOrEmpty())
@@ -1955,6 +2116,8 @@ namespace ENI2.Excel
}
crew.IsDeparture = true;
+ crew.NotificationSchengen = notificationSchengen;
+ crew.NotificationPAX = notificationPax;
crew.CrewMemberLastName = lastName;
crew.CrewMemberFirstName = reader.ReadText(crewFirstName);
crew.CrewMemberGender = reader.ReadGender(crewGender);
@@ -1964,8 +2127,10 @@ namespace ENI2.Excel
crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth);
crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType);
crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId);
- crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo);
-
+ crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo);
+ crew.CrewMemberIdentityDocumentIssuingState = reader.ReadNationality(crewIssuing);
+ crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadDate(crewIdentDocExpiry);
+ crew.CrewMemberCountryOfBirth = reader.ReadNationality(crewCountryOfBirth);
}
}
return true;
@@ -1979,6 +2144,9 @@ namespace ENI2.Excel
{
pasMessage.DeleteElements();
+ bool? notificationSchengen = reader.ReadBoolean("PAS.NotificationSchengen");
+ bool? notificationPax = reader.ReadBoolean("PAS.NotificationPAX");
+
for (int i = 0; i < pasMessage.NumberOfExcelRows; i++)
{
string pasLastName = string.Format("PAS.PassengerLastName_{0}", i + 1);
@@ -1993,6 +2161,11 @@ namespace ENI2.Excel
string pasIdentDocType = string.Format("PAS.PassengerIdentityDocumentType_{0}", i + 1);
string pasIdentDocId = string.Format("PAS.PassengerIdentityDocumentId_{0}", i + 1);
string pasVisaNo = string.Format("PAS.PassengerVisaNumber_{0}", i + 1);
+ string pasIssuing = string.Format("PAS.PassengerIdentityDocumentIssuingState_{0}", i + 1);
+ string pasExpiryDate = string.Format("PAS.PassengerIdentityDocumentExpiryDate_{0}", i + 1);
+ string pasCountryOfBirth = string.Format("PAS.CountryOfBirth_{0}", i + 1);
+ string pasEmergencyCare = string.Format("PAS.EmergencyCare_{0}", i + 1);
+ string pasEmergencyContact = string.Format("PAS.EmergencyContactNumber_{0}", i + 1);
string lastName = reader.ReadText(pasLastName);
string firstName = reader.ReadText(pasFirstName);
@@ -2007,6 +2180,8 @@ namespace ENI2.Excel
pasMessage.Elements.Add(pas);
}
+ pas.NotificationSchengen = notificationSchengen;
+ pas.NotificationPAX = notificationPax;
pas.PassengerLastName = lastName;
pas.PassengerFirstName = firstName;
pas.PassengerGender = reader.ReadGender(pasGender);
@@ -2020,6 +2195,11 @@ namespace ENI2.Excel
pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType);
pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId);
pas.PassengerVisaNumber = reader.ReadText(pasVisaNo);
+ pas.PassengerIdentityDocumentIssuingState = reader.ReadNationality(pasIssuing);
+ pas.PassengerIdentityDocumentExpiryDate = reader.ReadDate(pasExpiryDate);
+ pas.PassengerCountryOfBirth = reader.ReadNationality(pasCountryOfBirth);
+ pas.EmergencyCare = reader.ReadText(pasEmergencyCare);
+ pas.EmergencyContactNumber = reader.ReadText(pasEmergencyContact);
}
}
@@ -2033,7 +2213,10 @@ namespace ENI2.Excel
private static bool ScanPASD(Message pasMessage, ExcelReader reader)
{
pasMessage.DeleteElements();
-
+
+ bool? notificationSchengen = reader.ReadBoolean("PASD.NotificationSchengen");
+ bool? notificationPax = reader.ReadBoolean("PASD.NotificationPAX");
+
for (int i = 0; i < pasMessage.NumberOfExcelRows; i++)
{
string pasLastName = string.Format("PASD.PassengerLastName_{0}", i + 1);
@@ -2048,6 +2231,11 @@ namespace ENI2.Excel
string pasIdentDocType = string.Format("PASD.PassengerIdentityDocumentType_{0}", i + 1);
string pasIdentDocId = string.Format("PASD.PassengerIdentityDocumentId_{0}", i + 1);
string pasVisaNo = string.Format("PASD.PassengerVisaNumber_{0}", i + 1);
+ string pasIssuing = string.Format("PASD.PassengerIdentityDocumentIssuingState_{0}", i + 1);
+ string pasExpiryDate = string.Format("PASD.PassengerIdentityDocumentExpiryDate_{0}", i + 1);
+ string pasCountryOfBirth = string.Format("PASD.CountryOfBirth_{0}", i + 1);
+ string pasEmergencyCare = string.Format("PASD.EmergencyCare_{0}", i + 1);
+ string pasEmergencyContact = string.Format("PASD.EmergencyContactNumber_{0}", i + 1);
string lastName = reader.ReadText(pasLastName);
if (!lastName.IsNullOrEmpty())
@@ -2062,7 +2250,8 @@ namespace ENI2.Excel
}
pas.IsDeparture = true;
-
+ pas.NotificationSchengen = notificationSchengen;
+ pas.NotificationPAX = notificationPax;
pas.PassengerLastName = lastName;
pas.PassengerFirstName = reader.ReadText(pasFirstName);
pas.PassengerGender = reader.ReadGender(pasGender);
@@ -2075,7 +2264,12 @@ namespace ENI2.Excel
pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth);
pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType);
pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId);
- pas.PassengerVisaNumber = reader.ReadText(pasVisaNo);
+ pas.PassengerVisaNumber = reader.ReadText(pasVisaNo);
+ pas.PassengerIdentityDocumentIssuingState = reader.ReadNationality(pasIssuing);
+ pas.PassengerIdentityDocumentExpiryDate = reader.ReadDate(pasExpiryDate);
+ pas.PassengerCountryOfBirth = reader.ReadNationality(pasCountryOfBirth);
+ pas.EmergencyCare = reader.ReadText(pasEmergencyCare);
+ pas.EmergencyContactNumber = reader.ReadText(pasEmergencyContact);
}
}
return true;
diff --git a/ENI2/Resources/EUREPORT.png b/ENI2/Resources/EUREPORT.png
index a5a38e0c..375b2af7 100644
Binary files a/ENI2/Resources/EUREPORT.png and b/ENI2/Resources/EUREPORT.png differ
diff --git a/SQL/Update_6.x_To_7.0.sql b/SQL/Update_6.x_To_7.0.sql
index 483e810a..bfeeb9a3 100644
--- a/SQL/Update_6.x_To_7.0.sql
+++ b/SQL/Update_6.x_To_7.0.sql
@@ -122,5 +122,18 @@ Insert into ViolationText(ViolationCode, ViolationText) values (202, 'If a passe
Insert into ViolationText(ViolationCode, ViolationText) values (203, 'If a passenger notification is for PAX, then PAX Details have to be provided, if a passenger notification is not for PAX, PAX Details must not be provided.')
Insert into ViolationText(ViolationCode, ViolationText) values (221, 'The identification number has to be unique per ship call.')
Insert into ViolationText(ViolationCode, ViolationText) values (786, 'The provided LOCODE is not accepted by SafeSeaNet.')
+GO
+PRINT N'Altering Table [dbo].[CREW]...';
+GO
+
+ALTER TABLE [dbo].[CREW] ADD [CrewMemberCountryOfBirth] NCHAR (2) NULL;
+ALTER TABLE [dbo].[CREW] ADD [Effects] NVARCHAR (256) NULL;
+GO
+
+PRINT N'Altering Table [dbo].[PAS]...';
+GO
+
+ALTER TABLE [dbo].[PAS]
+ ADD [PassengerCountryOfBirth] NCHAR (2) NULL;
GO
\ No newline at end of file
diff --git a/bsmd.database/CREW.cs b/bsmd.database/CREW.cs
index cbff4638..1a5f3449 100644
--- a/bsmd.database/CREW.cs
+++ b/bsmd.database/CREW.cs
@@ -45,6 +45,11 @@ namespace bsmd.database
[ENI2Validation]
public string CrewMemberPlaceOfBirth { get; set; }
+ [Validation(ValidationCode.FLAG_CODE)]
+ [MaxLength(2)]
+ [ENI2Validation]
+ public string CrewMemberCountryOfBirth { get; set; }
+
[Validation(ValidationCode.NOT_NULL)]
[ENI2Validation]
public DateTime? CrewMemberDateOfBirth { get; set; }
@@ -119,6 +124,10 @@ namespace bsmd.database
[ENI2Validation]
public DateTime? CrewMemberIdentityDocumentExpiryDate { get; set; }
+ [ENI2Validation]
+ [MaxLength(256)]
+ public string Effects { get; set; }
+
[ENI2Validation]
public bool? NotificationSchengen { get; set; }
@@ -176,6 +185,8 @@ namespace bsmd.database
scmd.Parameters.AddWithNullableValue("@P15", this.CrewMemberIdentityDocumentExpiryDate);
scmd.Parameters.AddWithNullableValue("@P16", this.NotificationSchengen);
scmd.Parameters.AddWithNullableValue("@P17", this.NotificationPAX);
+ scmd.Parameters.AddWithNullableValue("@P18", this.CrewMemberCountryOfBirth);
+ scmd.Parameters.AddWithNullableValue("@P19", this.Effects);
if (this.IsNew)
{
@@ -184,8 +195,9 @@ namespace bsmd.database
scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, CrewMemberLastName, CrewMemberFirstName, " +
"CrewMemberPlaceOfBirth, CrewMemberDateOfBirth, CrewMemberGender, CrewMemberNationality,CrewMemberIdentityDocumentType, " +
"CrewMemberIdentityDocumentId, CrewMemberVisaNumber, CrewMemberDuty, Identifier, IsDeparture, " +
- "CrewMemberIdentityDocumentIssuingState, CrewMemberIdentityDocumentExpiryDate, NotificationSchengen, NotificationPAX) " +
- "VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17 )", this.Tablename);
+ "CrewMemberIdentityDocumentIssuingState, CrewMemberIdentityDocumentExpiryDate, NotificationSchengen, NotificationPAX, " +
+ "CrewMemberCountryOfBirth, Effects) " +
+ "VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17, @P18, @P19 )", this.Tablename);
}
else
{
@@ -194,7 +206,8 @@ namespace bsmd.database
"CrewMemberPlaceOfBirth = @P4, CrewMemberDateOfBirth = @P5, CrewMemberGender = @P6, CrewMemberNationality = @P7, "+
"CrewMemberIdentityDocumentType = @P8, CrewMemberIdentityDocumentId = @P9, CrewMemberVisaNumber = @P10, " +
"CrewMemberDuty = @P11, Identifier = @P12, IsDeparture = @P13, CrewMemberIdentityDocumentIssuingState = @P14, " +
- "CrewMemberIdentityDocumentExpiryDate = @P15, NotificationSchengen = @P16, NotificationPAX = @P17 WHERE Id = @ID", this.Tablename);
+ "CrewMemberIdentityDocumentExpiryDate = @P15, NotificationSchengen = @P16, NotificationPAX = @P17, " +
+ "CrewMemberCountryOfBirth = @P18, Effects = @P19 WHERE Id = @ID", this.Tablename);
}
}
@@ -203,7 +216,7 @@ namespace bsmd.database
string query = string.Format("SELECT Id, CrewMemberLastName, CrewMemberFirstName, CrewMemberPlaceOfBirth, " +
"CrewMemberDateOfBirth, CrewMemberGender, CrewMemberNationality, CrewMemberIdentityDocumentType, CrewMemberIdentityDocumentId, " +
"CrewMemberVisaNumber, CrewMemberDuty, Identifier, IsDeparture, CrewMemberIdentityDocumentIssuingState, " +
- "CrewMemberIdentityDocumentExpiryDate, NotificationSchengen, NotificationPAX FROM {0}", this.Tablename);
+ "CrewMemberIdentityDocumentExpiryDate, NotificationSchengen, NotificationPAX, CrewMemberCountryOfBirth, Effects FROM {0}", this.Tablename);
switch (filter)
{
@@ -247,6 +260,8 @@ namespace bsmd.database
if (!reader.IsDBNull(14)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(14);
if (!reader.IsDBNull(15)) crew.NotificationSchengen = reader.GetBoolean(15);
if (!reader.IsDBNull(16)) crew.NotificationPAX = reader.GetBoolean(16);
+ if (!reader.IsDBNull(17)) crew.CrewMemberCountryOfBirth = reader.GetString(17);
+ if (!reader.IsDBNull(18)) crew.Effects = reader.GetString(18);
result.Add(crew);
}
@@ -270,7 +285,7 @@ namespace bsmd.database
string query = string.Format("SELECT Id, CrewMemberLastName, CrewMemberFirstName, CrewMemberPlaceOfBirth, " +
"CrewMemberDateOfBirth, CrewMemberGender, CrewMemberNationality, CrewMemberIdentityDocumentType, CrewMemberIdentityDocumentId, " +
"CrewMemberVisaNumber, CrewMemberDuty, Identifier, IsDeparture, CrewMemberIdentityDocumentIssuingState, " +
- "CrewMemberIdentityDocumentExpiryDate, NotificationSchengen, NotificationPAX FROM {0}", this.Tablename);
+ "CrewMemberIdentityDocumentExpiryDate, NotificationSchengen, NotificationPAX, CrewMemberCountryOfBirth, Effects FROM {0}", this.Tablename);
switch (filter)
{
@@ -314,6 +329,8 @@ namespace bsmd.database
if (!reader.IsDBNull(14)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(14);
if (!reader.IsDBNull(15)) crew.NotificationSchengen = reader.GetBoolean(15);
if (!reader.IsDBNull(16)) crew.NotificationPAX = reader.GetBoolean(16);
+ if (!reader.IsDBNull(17)) crew.CrewMemberCountryOfBirth = reader.GetString(17);
+ if (!reader.IsDBNull(18)) crew.Effects = reader.GetString(18);
result.Add(crew);
}
diff --git a/bsmd.database/Message.cs b/bsmd.database/Message.cs
index a19405e3..90562f54 100644
--- a/bsmd.database/Message.cs
+++ b/bsmd.database/Message.cs
@@ -682,11 +682,12 @@ namespace bsmd.database
case NotificationClass.LADG: return 36;
case NotificationClass.CREW: return 40;
case NotificationClass.CREWD: return 40;
- case NotificationClass.PAS: return 30;
- case NotificationClass.PASD: return 30;
+ case NotificationClass.PAS: return 40;
+ case NotificationClass.PASD: return 40;
case NotificationClass.TOWA: return 5;
case NotificationClass.TOWD: return 5;
case NotificationClass.STO: return 10;
+ case NotificationClass.WAS_RCPT: return 5;
default:
return 0;
diff --git a/bsmd.database/NOA_NOD.cs b/bsmd.database/NOA_NOD.cs
index 63adcc6b..46292d32 100644
--- a/bsmd.database/NOA_NOD.cs
+++ b/bsmd.database/NOA_NOD.cs
@@ -203,7 +203,7 @@ namespace bsmd.database
[JsonIgnore]
public int NumberOfExcelRows
{
- get { return 3; }
+ get { return 5; }
}
public void SaveElements()
diff --git a/bsmd.database/PAS.cs b/bsmd.database/PAS.cs
index 88047a1d..e651f781 100644
--- a/bsmd.database/PAS.cs
+++ b/bsmd.database/PAS.cs
@@ -134,6 +134,11 @@ namespace bsmd.database
[ENI2Validation]
public bool? NotificationPAX { get; set; }
+ [Validation(ValidationCode.FLAG_CODE)]
+ [MaxLength(2)]
+ [ENI2Validation]
+ public string PassengerCountryOfBirth { get; set; }
+
[ENI2Validation]
[ReportDisplayName("Emergency care")]
[MaxLength(255)]
@@ -213,6 +218,7 @@ namespace bsmd.database
scmd.Parameters.AddWithNullableValue("@P19", this.NotificationPAX);
scmd.Parameters.AddWithNullableValue("@P20", this.EmergencyCare);
scmd.Parameters.AddWithNullableValue("@P21", this.EmergencyContactNumber);
+ scmd.Parameters.AddWithNullableValue("@P22", this.PassengerCountryOfBirth);
if (this.IsNew)
{
@@ -222,8 +228,8 @@ namespace bsmd.database
"PassengerPlaceOfBirth, PassengerDateOfBirth, PassengerGender, PassengerNationality, PassengerIdentityDocumentType, " +
"PassengerIdentityDocumentId, PassengerVisaNumber, PassengerPortOfEmbarkation, PassengerPortOfDisembarkation," +
"PassengerInTransit, Identifier, IsDeparture, PassengerIdentityDocumentIssuingState, PassengerIdentityDocumentExpiryDate, " +
- "NotificationSchengen, NotificationPAX, EmergencyCare, EmergencyContactNumber) " +
- "VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17, @P18, @P19, @P20, @P21 )",
+ "NotificationSchengen, NotificationPAX, EmergencyCare, EmergencyContactNumber, PassengerCountryOfBirth) " +
+ "VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17, @P18, @P19, @P20, @P21, @P22 )",
this.Tablename);
}
else
@@ -235,7 +241,7 @@ namespace bsmd.database
"PassengerVisaNumber = @P10, PassengerPortOfEmbarkation = @P11, PassengerPortOfDisembarkation = @P12, " +
"PassengerInTransit = @P13, IsDeparture = @P15, Identifier = @P14, PassengerIdentityDocumentIssuingState = @P16, " +
"PassengerIdentityDocumentExpiryDate = @P17, NotificationSchengen = @P18, NotificationPAX = @P19, " +
- "EmergencyCare = @P20, EmergencyContactNumber = @P21 WHERE Id = @ID", this.Tablename);
+ "EmergencyCare = @P20, EmergencyContactNumber = @P21, PassengerCountryOfBirth = @P22 WHERE Id = @ID", this.Tablename);
}
}
@@ -245,7 +251,7 @@ namespace bsmd.database
"PassengerDateOfBirth, PassengerGender, PassengerNationality, PassengerIdentityDocumentType, PassengerIdentityDocumentId, " +
"PassengerVisaNumber, PassengerPortOfEmbarkation, PassengerPortOfDisembarkation, PassengerInTransit, Identifier, " +
"IsDeparture, PassengerIdentityDocumentIssuingState, PassengerIdentityDocumentExpiryDate, NotificationSchengen, " +
- "NotificationPAX, EmergencyCare, EmergencyContactNumber FROM {0}",
+ "NotificationPAX, EmergencyCare, EmergencyContactNumber, PassengerCountryOfBirth FROM {0}",
this.Tablename);
switch (filter)
@@ -294,6 +300,7 @@ namespace bsmd.database
if (!reader.IsDBNull(18)) pas.NotificationPAX = reader.GetBoolean(18);
if (!reader.IsDBNull(19)) pas.EmergencyCare = reader.GetString(19);
if (!reader.IsDBNull(20)) pas.EmergencyContactNumber = reader.GetString(20);
+ if (!reader.IsDBNull(21)) pas.PassengerCountryOfBirth = reader.GetString(21);
result.Add(pas);
}
reader.Close();
@@ -335,7 +342,7 @@ namespace bsmd.database
"PassengerDateOfBirth, PassengerGender, PassengerNationality, PassengerIdentityDocumentType, PassengerIdentityDocumentId, " +
"PassengerVisaNumber, PassengerPortOfEmbarkation, PassengerPortOfDisembarkation, PassengerInTransit, Identifier, IsDeparture, " +
"PassengerIdentityDocumentIssuingState, PassengerIdentityDocumentExpiryDate, NotificationSchengen, NotificationPAX, " +
- "EmergencyCare, EmergencyContactNumber FROM {0}",
+ "EmergencyCare, EmergencyContactNumber, PassengerCountryOfBirth FROM {0}",
this.Tablename);
switch (filter)
@@ -384,6 +391,7 @@ namespace bsmd.database
if (!reader.IsDBNull(18)) pas.NotificationPAX = reader.GetBoolean(18);
if (!reader.IsDBNull(19)) pas.EmergencyCare = reader.GetString(19);
if (!reader.IsDBNull(20)) pas.EmergencyContactNumber = reader.GetString(20);
+ if (!reader.IsDBNull(21)) pas.PassengerCountryOfBirth = reader.GetString(21);
result.Add(pas);
}
reader.Close();
diff --git a/bsmd.database/STAT.cs b/bsmd.database/STAT.cs
index eb1f935b..96bf84c5 100644
--- a/bsmd.database/STAT.cs
+++ b/bsmd.database/STAT.cs
@@ -198,6 +198,18 @@ namespace bsmd.database
[DataMember]
public string CertificateOfRegistryNumber { get; set; }
+ public bool? IsTanker
+ {
+ get
+ {
+ if (ShipType.IsNullOrEmpty()) return null;
+ if (ShipType.StartsWith("53")) return true;
+ if (ShipType.StartsWith("54")) return true;
+ if (ShipType.StartsWith("55")) return true;
+ return false;
+ }
+ }
+
[JsonIgnore]
public static Dictionary VesselTypeDict { get; set; }
diff --git a/bsmd.database/WAS.cs b/bsmd.database/WAS.cs
index 794f7527..bcd88c6c 100644
--- a/bsmd.database/WAS.cs
+++ b/bsmd.database/WAS.cs
@@ -332,7 +332,7 @@ namespace bsmd.database
[JsonIgnore]
public int NumberOfExcelRows
{
- get { return 15; }
+ get { return 25; }
}
public void SaveElements()
diff --git a/bsmd.database/WAS_RCPT.cs b/bsmd.database/WAS_RCPT.cs
index eb8a75f0..881990eb 100644
--- a/bsmd.database/WAS_RCPT.cs
+++ b/bsmd.database/WAS_RCPT.cs
@@ -129,7 +129,7 @@ namespace bsmd.database
[JsonIgnore]
public int NumberOfExcelRows
{
- get { return 15; }
+ get { return 25; }
}
public void SaveElements()