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()