From 167451f5458f7fa0ed677bd91a282f06c68903df Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sun, 25 Oct 2015 20:02:28 +0000 Subject: [PATCH] Neue PatchVersion 25.10.15 --- Stundensheet.xlsx | Bin 18074 -> 18164 bytes nsw/Source/bsmd.Tool/bsmd.Tool.csproj.user | 2 +- .../LastTenPortFacilitiesCalled.cs | 8 +- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.database/WAS.cs | 2 + nsw/Source/bsmd.dbh/Request.cs | 831 +++++++++--------- .../bsmd.herberg.FormService/FormService.cs | 2 + .../Properties/AssemblyInfo.cs | 20 +- nsw/Source/bsmd.herberg.FormService/Util.cs | 27 +- .../bsmd.herberg.FormService.csproj | 9 + 11 files changed, 471 insertions(+), 434 deletions(-) diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 4f0c1b952ce1c3cc723d3f2e7090364690b8b9b8..226f0584ca30a7019466d62f467cd0b6b0166176 100644 GIT binary patch delta 6777 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 delta 6736 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 diff --git a/nsw/Source/bsmd.Tool/bsmd.Tool.csproj.user b/nsw/Source/bsmd.Tool/bsmd.Tool.csproj.user index 2fb2e4dd..1dcb010c 100644 --- a/nsw/Source/bsmd.Tool/bsmd.Tool.csproj.user +++ b/nsw/Source/bsmd.Tool/bsmd.Tool.csproj.user @@ -1,6 +1,6 @@  - -r -c "AA9074D7-2607-445E-A0B9-D07890B6DC23" + -r -c "8ECF90D2-1F1F-4CDD-A7C7-8E1BB3EF7105" \ No newline at end of file diff --git a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs index 7cb1d32c..952d3ff0 100644 --- a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs @@ -32,18 +32,18 @@ namespace bsmd.database [ShowReport] public string PortFacilityPortLoCode { get; set; } [ShowReport] - [Validation2(ValidationCode.NOT_NULL)] + [Validation(ValidationCode.NOT_NULL)] public DateTime? PortFacilityDateOfArrival { get; set; } [ShowReport] - [Validation2(ValidationCode.NOT_NULL)] + [Validation(ValidationCode.NOT_NULL)] public DateTime? PortFacilityDateOfDeparture { get; set; } [ShowReport] - [Validation2(ValidationCode.NOT_NULL)] + [Validation(ValidationCode.NOT_NULL)] public byte? PortFacilityShipSecurityLevel { get; set; } [ShowReport] public string PortFacilitySecurityMattersToReport { get; set; } [ShowReport] - [Validation2(ValidationCode.GISIS)] + [Validation(ValidationCode.GISIS)] public string PortFacilityGISISCode { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index 8be604f3..4bcc7b1c 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("2.4.0")] +[assembly: AssemblyInformationalVersion("2.4.1")] [assembly: AssemblyCopyright("Copyright © 2014-2015 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 7e884bd2..844680c7 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -4,6 +4,6 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.4.0.*")] +[assembly: AssemblyVersion("2.4.1.*")] // wenn das nicht auskommentiert wird erhalten wir eine Warnung // [assembly: AssemblyFileVersion("1.0.0.*")] diff --git a/nsw/Source/bsmd.database/WAS.cs b/nsw/Source/bsmd.database/WAS.cs index da5332a0..cf4cc804 100644 --- a/nsw/Source/bsmd.database/WAS.cs +++ b/nsw/Source/bsmd.database/WAS.cs @@ -224,6 +224,8 @@ namespace bsmd.database newWaste.WasteCapacity_MTQ = 0; newWaste.WasteDisposalAmount_MTQ = 0; newWaste.Identifier = ""; + newWaste.WasteDisposalPort = "ZZUKN"; + newWaste.WasteDescription = "-"; newWaste.WAS = this; this.Waste.Add(newWaste); result.Add(newWaste); diff --git a/nsw/Source/bsmd.dbh/Request.cs b/nsw/Source/bsmd.dbh/Request.cs index 453eff20..b3e20734 100644 --- a/nsw/Source/bsmd.dbh/Request.cs +++ b/nsw/Source/bsmd.dbh/Request.cs @@ -895,211 +895,219 @@ namespace bsmd.dbh { RootHAZA rootHAZA = new RootHAZA(); HAZ haz = message.Elements[0] as HAZ; - rootHAZA.Items = new object[4]; - - if(haz.DPGManifestOnBoardOnArrival.HasValue) - rootHAZA.Items[0] = haz.DPGManifestOnBoardOnArrival.Value ? RootHAZADPGManifestOnBoardOnArrival.Y : RootHAZADPGManifestOnBoardOnArrival.N; - - #region HAZ positions - RootHAZADPGOnArrival dpgOnArrival = new RootHAZADPGOnArrival(); - - #region IMDG - if (haz.IMDGPositions.Count > 0) - { - dpgOnArrival.DPGItemIMDG = new RootHAZADPGOnArrivalDPGItemIMDG[haz.IMDGPositions.Count]; - for (int i = 0; i < haz.IMDGPositions.Count; i++) - { - IMDGPosition imdgPos = haz.IMDGPositions[i]; - RootHAZADPGOnArrivalDPGItemIMDG rootIMDG = new RootHAZADPGOnArrivalDPGItemIMDG(); - - rootIMDG.UNNumber = imdgPos.UNNumber; - if (imdgPos.PackingGroup.HasValue) - rootIMDG.PackingGroup = (RootHAZADPGOnArrivalDPGItemIMDGPackingGroup)imdgPos.PackingGroup.Value; - rootIMDG.ProperShippingName = imdgPos.ProperShippingName; - rootIMDG.IMOClass = imdgPos.IMOClass; - rootIMDG.CompatibilityGroup = imdgPos.CompatibilityGroup; - rootIMDG.TechnicalName = imdgPos.TechnicalName; - rootIMDG.NetExplosiveMass_KGMSpecified = imdgPos.NetExplosiveMass_KGM.HasValue; - if(imdgPos.NetExplosiveMass_KGM.HasValue) - rootIMDG.NetExplosiveMass_KGM = (float)imdgPos.NetExplosiveMass_KGM.Value; - rootIMDG.Flashpoint_CEL = imdgPos.Flashpoint_CEL; - rootIMDG.Class7NuclideName = imdgPos.Class7NuclideName; - rootIMDG.Class7MaxActivity_BQLSpecified = imdgPos.Class7MaxActivity_BQL.HasValue; - if (imdgPos.Class7MaxActivity_BQL.HasValue) - rootIMDG.Class7MaxActivity_BQL = (float)imdgPos.Class7MaxActivity_BQL.Value; - rootIMDG.Class7CategorySpecified = imdgPos.Class7Category.HasValue; - if (imdgPos.Class7Category.HasValue) - rootIMDG.Class7Category = imdgPos.Class7Category.Value; - rootIMDG.Class7TransportIndexSpecified = imdgPos.Class7TransportIndex.HasValue; - if (imdgPos.Class7TransportIndex.HasValue) - rootIMDG.Class7TransportIndex = (float) imdgPos.Class7TransportIndex.Value; - rootIMDG.Class7CSISpecified = imdgPos.Class7CSI.HasValue; - if (imdgPos.Class7CSI.HasValue) - rootIMDG.Class7CSI = imdgPos.Class7CSI.Value; - rootIMDG.ControlTemperature_CELSpecified = imdgPos.ControlTemperature_CEL.HasValue; - if (imdgPos.ControlTemperature_CEL.HasValue) - rootIMDG.ControlTemperature_CEL = (float)imdgPos.ControlTemperature_CEL.Value; - rootIMDG.EmergencyTemperature_CELSpecified = imdgPos.EmergencyTemperature_CEL.HasValue; - if (imdgPos.EmergencyTemperature_CEL.HasValue) - rootIMDG.EmergencyTemperature_CEL = (float)imdgPos.EmergencyTemperature_CEL.Value; - if (imdgPos.SubsidiaryRiskList.Count > 0) - { - rootIMDG.SubsidiaryRisks = new string[imdgPos.SubsidiaryRiskList.Count]; - for (int sCount = 0; sCount < imdgPos.SubsidiaryRiskList.Count; sCount++) - rootIMDG.SubsidiaryRisks[sCount] = imdgPos.SubsidiaryRiskList[sCount].SubsidiaryRisk; - } - if(imdgPos.MarinePollutant.HasValue) - rootIMDG.MarinePollutant = imdgPos.MarinePollutant.Value ? RootHAZADPGOnArrivalDPGItemIMDGMarinePollutant.Y : RootHAZADPGOnArrivalDPGItemIMDGMarinePollutant.N; - if (imdgPos.NumberOfPackages.HasValue) - rootIMDG.NumberOfPackages = imdgPos.NumberOfPackages.Value; - rootIMDG.PackageType = imdgPos.PackageType; - if(imdgPos.LimitedQuantities.HasValue) - rootIMDG.LimitedQuantities = imdgPos.LimitedQuantities.Value ? RootHAZADPGOnArrivalDPGItemIMDGLimitedQuantities.Y : RootHAZADPGOnArrivalDPGItemIMDGLimitedQuantities.N; - if (imdgPos.ExceptedQuantities.HasValue) - rootIMDG.ExceptedQuantities = imdgPos.ExceptedQuantities.Value ? RootHAZADPGOnArrivalDPGItemIMDGExceptedQuantities.Y : RootHAZADPGOnArrivalDPGItemIMDGExceptedQuantities.N; - rootIMDG.NetQuantity_KGMSpecified = imdgPos.NetQuantity_KGM.HasValue; - if (imdgPos.NetQuantity_KGM.HasValue) - rootIMDG.NetQuantity_KGM = (float)imdgPos.NetQuantity_KGM.Value; - rootIMDG.GrossQuantity_KGMSpecified = imdgPos.GrossQuantity_KGM.HasValue; - if (imdgPos.GrossQuantity_KGM.HasValue) - rootIMDG.GrossQuantity_KGM = (float)imdgPos.GrossQuantity_KGM.Value; - rootIMDG.Volume_MTQSpecified = imdgPos.Volume_MTQ.HasValue; - if (imdgPos.Volume_MTQ.HasValue) - rootIMDG.Volume_MTQ = (float)imdgPos.Volume_MTQ.Value; - rootIMDG.GeneralCargoIBCSpecified = imdgPos.GeneralCargoIBC.HasValue; - if (imdgPos.GeneralCargoIBC.HasValue) - rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? RootHAZADPGOnArrivalDPGItemIMDGGeneralCargoIBC.Y : RootHAZADPGOnArrivalDPGItemIMDGGeneralCargoIBC.N; - rootIMDG.ContainerNumber = imdgPos.ContainerNumber; - rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber; - rootIMDG.StowagePosition = imdgPos.StowagePosition; - rootIMDG.PortOfLoading = imdgPos.PortOfLoading; - rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge; - rootIMDG.Remarks = imdgPos.Remarks; - - dpgOnArrival.DPGItemIMDG[i] = rootIMDG; - } - } - #endregion - - #region IBC - if (haz.IBCPositions.Count > 0) - { - dpgOnArrival.DPGItemIBC = new RootHAZADPGOnArrivalDPGItemIBC[haz.IBCPositions.Count]; - for(int i=0;i 0) - { - dpgOnArrival.DPGItemIGC = new RootHAZADPGOnArrivalDPGItemIGC[haz.IGCPositions.Count]; - for (int i = 0; i < haz.IGCPositions.Count; i++) - { - RootHAZADPGOnArrivalDPGItemIGC rootIGC = new RootHAZADPGOnArrivalDPGItemIGC(); - IGCPosition igcPos = haz.IGCPositions[i]; - - rootIGC.UNNumber = igcPos.UNNumber; - rootIGC.IMOClass = igcPos.IMOClass; - rootIGC.ProductName = igcPos.ProductName; - if (igcPos.Quantity_KGM.HasValue) - rootIGC.Quantity_KGM = (float)igcPos.Quantity_KGM.Value; - rootIGC.StowagePosition = igcPos.StowagePosition; - rootIGC.PortOfLoading = igcPos.PortOfLoading; - rootIGC.PortOfDischarge = igcPos.PortOfDischarge; - rootIGC.Remarks = igcPos.Remarks; - - dpgOnArrival.DPGItemIGC[i] = rootIGC; - } - } - #endregion - - #region IMSBC - if (haz.IMSBCPositions.Count > 0) - { - dpgOnArrival.DPGItemIMSBC = new RootHAZADPGOnArrivalDPGItemIMSBC[haz.IMSBCPositions.Count]; - for (int i = 0; i < haz.IMSBCPositions.Count; i++) - { - RootHAZADPGOnArrivalDPGItemIMSBC rootIMSBC = new RootHAZADPGOnArrivalDPGItemIMSBC(); - IMSBCPosition imsbcPos = haz.IMSBCPositions[i]; - - rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName; - if (imsbcPos.MHB.HasValue) - rootIMSBC.MHB = imsbcPos.MHB.Value ? RootHAZADPGOnArrivalDPGItemIMSBCMHB.Y : RootHAZADPGOnArrivalDPGItemIMSBCMHB.N; - rootIMSBC.UNNumber = imsbcPos.UNNumber; - rootIMSBC.IMOClass = imsbcPos.IMOClass; - if (imsbcPos.Quantity_KGM.HasValue) - rootIMSBC.Quantity_KGM = (float)imsbcPos.Quantity_KGM.Value; - rootIMSBC.StowagePosition = imsbcPos.StowagePosition; - rootIMSBC.PortOfLoading = imsbcPos.PortOfLoading; - rootIMSBC.PortOfDischarge = imsbcPos.PortOfDischarge; - rootIMSBC.Remarks = imsbcPos.Remarks; - - dpgOnArrival.DPGItemIMSBC[i] = rootIMSBC; - } - } - #endregion - - #region MARPOL_ANNEX_I - if (haz.MARPOLPositions.Count > 0) - { - dpgOnArrival.DPGItemMARPOLAnnexI = new RootHAZADPGOnArrivalDPGItemMARPOLAnnexI[haz.MARPOLPositions.Count]; - for (int i = 0; i < haz.MARPOLPositions.Count; i++) - { - RootHAZADPGOnArrivalDPGItemMARPOLAnnexI rootMarpol = new RootHAZADPGOnArrivalDPGItemMARPOLAnnexI(); - MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i]; - - rootMarpol.Name = marpolPos.Name; - if (marpolPos.FlashpointInformation.HasValue) - rootMarpol.FlashpointInformation = (RootHAZADPGOnArrivalDPGItemMARPOLAnnexIFlashpointInformation)marpolPos.FlashpointInformation.Value; - rootMarpol.Flashpoint_CEL = marpolPos.Flashpoint_CEL; - if (marpolPos.Quantity_KGM.HasValue) - rootMarpol.Quantity_KGM = (float)marpolPos.Quantity_KGM.Value; - rootMarpol.StowagePosition = marpolPos.StowagePosition; - rootMarpol.PortOfLoading = marpolPos.PortOfLoading; - rootMarpol.PortOfDischarge = marpolPos.PortOfDischarge; - rootMarpol.Remarks = marpolPos.Remarks; - - dpgOnArrival.DPGItemMARPOLAnnexI[i] = rootMarpol; - } - } - #endregion - - rootHAZA.Items[1] = dpgOnArrival; - #endregion - - if (haz.INFShipClass.HasValue) - { - RootHAZAINFShipClass infShipClass = (RootHAZAINFShipClass) haz.INFShipClass.Value; - rootHAZA.Items[2] = infShipClass; - } if (haz.NoDPGOnBoardOnArrival ?? false) - rootHAZA.Items[3] = RootHAZANoDPGOnBoardOnArrival.Y; + { + rootHAZA.Items = new object[1]; + rootHAZA.Items[0] = RootHAZANoDPGOnBoardOnArrival.Y; + } + else + { + rootHAZA.Items = new object[3]; + + // if(haz.DPGManifestOnBoardOnArrival.HasValue) + rootHAZA.Items[0] = (haz.DPGManifestOnBoardOnArrival ?? false) ? RootHAZADPGManifestOnBoardOnArrival.Y : RootHAZADPGManifestOnBoardOnArrival.N; + + #region HAZ positions + + RootHAZADPGOnArrival dpgOnArrival = new RootHAZADPGOnArrival(); + + #region IMDG + if (haz.IMDGPositions.Count > 0) + { + dpgOnArrival.DPGItemIMDG = new RootHAZADPGOnArrivalDPGItemIMDG[haz.IMDGPositions.Count]; + for (int i = 0; i < haz.IMDGPositions.Count; i++) + { + IMDGPosition imdgPos = haz.IMDGPositions[i]; + RootHAZADPGOnArrivalDPGItemIMDG rootIMDG = new RootHAZADPGOnArrivalDPGItemIMDG(); + + rootIMDG.UNNumber = imdgPos.UNNumber; + if (imdgPos.PackingGroup.HasValue) + rootIMDG.PackingGroup = (RootHAZADPGOnArrivalDPGItemIMDGPackingGroup)imdgPos.PackingGroup.Value; + rootIMDG.ProperShippingName = imdgPos.ProperShippingName; + rootIMDG.IMOClass = imdgPos.IMOClass; + rootIMDG.CompatibilityGroup = imdgPos.CompatibilityGroup; + rootIMDG.TechnicalName = imdgPos.TechnicalName; + rootIMDG.NetExplosiveMass_KGMSpecified = imdgPos.NetExplosiveMass_KGM.HasValue; + if (imdgPos.NetExplosiveMass_KGM.HasValue) + rootIMDG.NetExplosiveMass_KGM = (float)imdgPos.NetExplosiveMass_KGM.Value; + rootIMDG.Flashpoint_CEL = imdgPos.Flashpoint_CEL; + rootIMDG.Class7NuclideName = imdgPos.Class7NuclideName; + rootIMDG.Class7MaxActivity_BQLSpecified = imdgPos.Class7MaxActivity_BQL.HasValue; + if (imdgPos.Class7MaxActivity_BQL.HasValue) + rootIMDG.Class7MaxActivity_BQL = (float)imdgPos.Class7MaxActivity_BQL.Value; + rootIMDG.Class7CategorySpecified = imdgPos.Class7Category.HasValue; + if (imdgPos.Class7Category.HasValue) + rootIMDG.Class7Category = imdgPos.Class7Category.Value; + rootIMDG.Class7TransportIndexSpecified = imdgPos.Class7TransportIndex.HasValue; + if (imdgPos.Class7TransportIndex.HasValue) + rootIMDG.Class7TransportIndex = (float)imdgPos.Class7TransportIndex.Value; + rootIMDG.Class7CSISpecified = imdgPos.Class7CSI.HasValue; + if (imdgPos.Class7CSI.HasValue) + rootIMDG.Class7CSI = imdgPos.Class7CSI.Value; + rootIMDG.ControlTemperature_CELSpecified = imdgPos.ControlTemperature_CEL.HasValue; + if (imdgPos.ControlTemperature_CEL.HasValue) + rootIMDG.ControlTemperature_CEL = (float)imdgPos.ControlTemperature_CEL.Value; + rootIMDG.EmergencyTemperature_CELSpecified = imdgPos.EmergencyTemperature_CEL.HasValue; + if (imdgPos.EmergencyTemperature_CEL.HasValue) + rootIMDG.EmergencyTemperature_CEL = (float)imdgPos.EmergencyTemperature_CEL.Value; + if (imdgPos.SubsidiaryRiskList.Count > 0) + { + rootIMDG.SubsidiaryRisks = new string[imdgPos.SubsidiaryRiskList.Count]; + for (int sCount = 0; sCount < imdgPos.SubsidiaryRiskList.Count; sCount++) + rootIMDG.SubsidiaryRisks[sCount] = imdgPos.SubsidiaryRiskList[sCount].SubsidiaryRisk; + } + if (imdgPos.MarinePollutant.HasValue) + rootIMDG.MarinePollutant = imdgPos.MarinePollutant.Value ? RootHAZADPGOnArrivalDPGItemIMDGMarinePollutant.Y : RootHAZADPGOnArrivalDPGItemIMDGMarinePollutant.N; + if (imdgPos.NumberOfPackages.HasValue) + rootIMDG.NumberOfPackages = imdgPos.NumberOfPackages.Value; + rootIMDG.PackageType = imdgPos.PackageType; + if (imdgPos.LimitedQuantities.HasValue) + rootIMDG.LimitedQuantities = imdgPos.LimitedQuantities.Value ? RootHAZADPGOnArrivalDPGItemIMDGLimitedQuantities.Y : RootHAZADPGOnArrivalDPGItemIMDGLimitedQuantities.N; + if (imdgPos.ExceptedQuantities.HasValue) + rootIMDG.ExceptedQuantities = imdgPos.ExceptedQuantities.Value ? RootHAZADPGOnArrivalDPGItemIMDGExceptedQuantities.Y : RootHAZADPGOnArrivalDPGItemIMDGExceptedQuantities.N; + rootIMDG.NetQuantity_KGMSpecified = imdgPos.NetQuantity_KGM.HasValue; + if (imdgPos.NetQuantity_KGM.HasValue) + rootIMDG.NetQuantity_KGM = (float)imdgPos.NetQuantity_KGM.Value; + rootIMDG.GrossQuantity_KGMSpecified = imdgPos.GrossQuantity_KGM.HasValue; + if (imdgPos.GrossQuantity_KGM.HasValue) + rootIMDG.GrossQuantity_KGM = (float)imdgPos.GrossQuantity_KGM.Value; + rootIMDG.Volume_MTQSpecified = imdgPos.Volume_MTQ.HasValue; + if (imdgPos.Volume_MTQ.HasValue) + rootIMDG.Volume_MTQ = (float)imdgPos.Volume_MTQ.Value; + rootIMDG.GeneralCargoIBCSpecified = imdgPos.GeneralCargoIBC.HasValue; + if (imdgPos.GeneralCargoIBC.HasValue) + rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? RootHAZADPGOnArrivalDPGItemIMDGGeneralCargoIBC.Y : RootHAZADPGOnArrivalDPGItemIMDGGeneralCargoIBC.N; + rootIMDG.ContainerNumber = imdgPos.ContainerNumber; + rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber; + rootIMDG.StowagePosition = imdgPos.StowagePosition; + rootIMDG.PortOfLoading = imdgPos.PortOfLoading; + rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge; + rootIMDG.Remarks = imdgPos.Remarks; + + dpgOnArrival.DPGItemIMDG[i] = rootIMDG; + } + } + #endregion + + #region IBC + if (haz.IBCPositions.Count > 0) + { + dpgOnArrival.DPGItemIBC = new RootHAZADPGOnArrivalDPGItemIBC[haz.IBCPositions.Count]; + for (int i = 0; i < haz.IBCPositions.Count; i++) + { + RootHAZADPGOnArrivalDPGItemIBC rootIBC = new RootHAZADPGOnArrivalDPGItemIBC(); + IBCPosition ibcPos = haz.IBCPositions[i]; + + rootIBC.ProductName = ibcPos.ProductName; + if (ibcPos.PollutionCategory.HasValue) + rootIBC.PollutionCategory = (RootHAZADPGOnArrivalDPGItemIBCPollutionCategory)ibcPos.PollutionCategory.Value; + rootIBC.HazardsSpecified = ibcPos.Hazards.HasValue; + if (ibcPos.Hazards.HasValue) + rootIBC.Hazards = (RootHAZADPGOnArrivalDPGItemIBCHazards)ibcPos.Hazards.Value; + if (ibcPos.FlashpointInformation.HasValue) + rootIBC.FlashpointInformation = (RootHAZADPGOnArrivalDPGItemIBCFlashpointInformation)ibcPos.FlashpointInformation.Value; + rootIBC.Flashpoint_CEL = ibcPos.Flashpoint_CEL; + if (ibcPos.Quantity_KGM.HasValue) + rootIBC.Quantity_KGM = (float)ibcPos.Quantity_KGM.Value; + rootIBC.StowagePosition = ibcPos.StowagePosition; + rootIBC.PortOfLoading = ibcPos.PortOfLoading; + rootIBC.PortOfDischarge = ibcPos.PortOfDischarge; + rootIBC.SpecRef15_19Specified = ibcPos.SpecRef15_19.HasValue; + if (ibcPos.SpecRef15_19.HasValue) + rootIBC.SpecRef15_19 = ibcPos.SpecRef15_19.Value ? RootHAZADPGOnArrivalDPGItemIBCSpecRef15_19.Y : RootHAZADPGOnArrivalDPGItemIBCSpecRef15_19.N; + rootIBC.Remarks = ibcPos.Remarks; + + dpgOnArrival.DPGItemIBC[i] = rootIBC; + } + } + #endregion + + #region IGC + if (haz.IGCPositions.Count > 0) + { + dpgOnArrival.DPGItemIGC = new RootHAZADPGOnArrivalDPGItemIGC[haz.IGCPositions.Count]; + for (int i = 0; i < haz.IGCPositions.Count; i++) + { + RootHAZADPGOnArrivalDPGItemIGC rootIGC = new RootHAZADPGOnArrivalDPGItemIGC(); + IGCPosition igcPos = haz.IGCPositions[i]; + + rootIGC.UNNumber = igcPos.UNNumber; + rootIGC.IMOClass = igcPos.IMOClass; + rootIGC.ProductName = igcPos.ProductName; + if (igcPos.Quantity_KGM.HasValue) + rootIGC.Quantity_KGM = (float)igcPos.Quantity_KGM.Value; + rootIGC.StowagePosition = igcPos.StowagePosition; + rootIGC.PortOfLoading = igcPos.PortOfLoading; + rootIGC.PortOfDischarge = igcPos.PortOfDischarge; + rootIGC.Remarks = igcPos.Remarks; + + dpgOnArrival.DPGItemIGC[i] = rootIGC; + } + } + #endregion + + #region IMSBC + if (haz.IMSBCPositions.Count > 0) + { + dpgOnArrival.DPGItemIMSBC = new RootHAZADPGOnArrivalDPGItemIMSBC[haz.IMSBCPositions.Count]; + for (int i = 0; i < haz.IMSBCPositions.Count; i++) + { + RootHAZADPGOnArrivalDPGItemIMSBC rootIMSBC = new RootHAZADPGOnArrivalDPGItemIMSBC(); + IMSBCPosition imsbcPos = haz.IMSBCPositions[i]; + + rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName; + if (imsbcPos.MHB.HasValue) + rootIMSBC.MHB = imsbcPos.MHB.Value ? RootHAZADPGOnArrivalDPGItemIMSBCMHB.Y : RootHAZADPGOnArrivalDPGItemIMSBCMHB.N; + rootIMSBC.UNNumber = imsbcPos.UNNumber; + rootIMSBC.IMOClass = imsbcPos.IMOClass; + if (imsbcPos.Quantity_KGM.HasValue) + rootIMSBC.Quantity_KGM = (float)imsbcPos.Quantity_KGM.Value; + rootIMSBC.StowagePosition = imsbcPos.StowagePosition; + rootIMSBC.PortOfLoading = imsbcPos.PortOfLoading; + rootIMSBC.PortOfDischarge = imsbcPos.PortOfDischarge; + rootIMSBC.Remarks = imsbcPos.Remarks; + + dpgOnArrival.DPGItemIMSBC[i] = rootIMSBC; + } + } + #endregion + + #region MARPOL_ANNEX_I + if (haz.MARPOLPositions.Count > 0) + { + dpgOnArrival.DPGItemMARPOLAnnexI = new RootHAZADPGOnArrivalDPGItemMARPOLAnnexI[haz.MARPOLPositions.Count]; + for (int i = 0; i < haz.MARPOLPositions.Count; i++) + { + RootHAZADPGOnArrivalDPGItemMARPOLAnnexI rootMarpol = new RootHAZADPGOnArrivalDPGItemMARPOLAnnexI(); + MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i]; + + rootMarpol.Name = marpolPos.Name; + if (marpolPos.FlashpointInformation.HasValue) + rootMarpol.FlashpointInformation = (RootHAZADPGOnArrivalDPGItemMARPOLAnnexIFlashpointInformation)marpolPos.FlashpointInformation.Value; + rootMarpol.Flashpoint_CEL = marpolPos.Flashpoint_CEL; + if (marpolPos.Quantity_KGM.HasValue) + rootMarpol.Quantity_KGM = (float)marpolPos.Quantity_KGM.Value; + rootMarpol.StowagePosition = marpolPos.StowagePosition; + rootMarpol.PortOfLoading = marpolPos.PortOfLoading; + rootMarpol.PortOfDischarge = marpolPos.PortOfDischarge; + rootMarpol.Remarks = marpolPos.Remarks; + + dpgOnArrival.DPGItemMARPOLAnnexI[i] = rootMarpol; + } + } + #endregion + + rootHAZA.Items[1] = dpgOnArrival; + + #endregion + + if (haz.INFShipClass.HasValue) + { + RootHAZAINFShipClass infShipClass = (RootHAZAINFShipClass)haz.INFShipClass.Value; + rootHAZA.Items[2] = infShipClass; + } + } item = rootHAZA; } @@ -1112,211 +1120,222 @@ namespace bsmd.dbh { RootHAZD rootHAZD = new RootHAZD(); HAZ haz = message.Elements[0] as HAZ; - rootHAZD.Items = new object[4]; - - if (haz.DPGManifestOnBoardOnArrival.HasValue) - rootHAZD.Items[0] = haz.DPGManifestOnBoardOnArrival.Value ? RootHAZDDPGManifestOnBoardOnDeparture.Y : RootHAZDDPGManifestOnBoardOnDeparture.N; - - #region HAZ positions - RootHAZDDPGOnDeparture dpgOnDeparture = new RootHAZDDPGOnDeparture(); - - #region IMDG - if (haz.IMDGPositions.Count > 0) - { - dpgOnDeparture.DPGItemIMDG = new RootHAZDDPGOnDepartureDPGItemIMDG[haz.IMDGPositions.Count]; - for (int i = 0; i < haz.IMDGPositions.Count; i++) - { - IMDGPosition imdgPos = haz.IMDGPositions[i]; - RootHAZDDPGOnDepartureDPGItemIMDG rootIMDG = new RootHAZDDPGOnDepartureDPGItemIMDG(); - - rootIMDG.UNNumber = imdgPos.UNNumber; - if (imdgPos.PackingGroup.HasValue) - rootIMDG.PackingGroup = (RootHAZDDPGOnDepartureDPGItemIMDGPackingGroup)imdgPos.PackingGroup.Value; - rootIMDG.ProperShippingName = imdgPos.ProperShippingName; - rootIMDG.IMOClass = imdgPos.IMOClass; - rootIMDG.CompatibilityGroup = imdgPos.CompatibilityGroup; - rootIMDG.TechnicalName = imdgPos.TechnicalName; - rootIMDG.NetExplosiveMass_KGMSpecified = imdgPos.NetExplosiveMass_KGM.HasValue; - if (imdgPos.NetExplosiveMass_KGM.HasValue) - rootIMDG.NetExplosiveMass_KGM = (float)imdgPos.NetExplosiveMass_KGM.Value; - rootIMDG.Flashpoint_CEL = imdgPos.Flashpoint_CEL; - rootIMDG.Class7NuclideName = imdgPos.Class7NuclideName; - rootIMDG.Class7MaxActivity_BQLSpecified = imdgPos.Class7MaxActivity_BQL.HasValue; - if (imdgPos.Class7MaxActivity_BQL.HasValue) - rootIMDG.Class7MaxActivity_BQL = (float)imdgPos.Class7MaxActivity_BQL.Value; - rootIMDG.Class7CategorySpecified = imdgPos.Class7Category.HasValue; - if (imdgPos.Class7Category.HasValue) - rootIMDG.Class7Category = imdgPos.Class7Category.Value; - rootIMDG.Class7TransportIndexSpecified = imdgPos.Class7TransportIndex.HasValue; - if (imdgPos.Class7TransportIndex.HasValue) - rootIMDG.Class7TransportIndex = (float)imdgPos.Class7TransportIndex.Value; - rootIMDG.Class7CSISpecified = imdgPos.Class7CSI.HasValue; - if (imdgPos.Class7CSI.HasValue) - rootIMDG.Class7CSI = imdgPos.Class7CSI.Value; - rootIMDG.ControlTemperature_CELSpecified = imdgPos.ControlTemperature_CEL.HasValue; - if (imdgPos.ControlTemperature_CEL.HasValue) - rootIMDG.ControlTemperature_CEL = (float)imdgPos.ControlTemperature_CEL.Value; - rootIMDG.EmergencyTemperature_CELSpecified = imdgPos.EmergencyTemperature_CEL.HasValue; - if (imdgPos.EmergencyTemperature_CEL.HasValue) - rootIMDG.EmergencyTemperature_CEL = (float)imdgPos.EmergencyTemperature_CEL.Value; - if (imdgPos.SubsidiaryRiskList.Count > 0) - { - rootIMDG.SubsidiaryRisks = new string[imdgPos.SubsidiaryRiskList.Count]; - for (int sCount = 0; sCount < imdgPos.SubsidiaryRiskList.Count; sCount++) - rootIMDG.SubsidiaryRisks[sCount] = imdgPos.SubsidiaryRiskList[sCount].SubsidiaryRisk; - } - if (imdgPos.MarinePollutant.HasValue) - rootIMDG.MarinePollutant = imdgPos.MarinePollutant.Value ? RootHAZDDPGOnDepartureDPGItemIMDGMarinePollutant.Y : RootHAZDDPGOnDepartureDPGItemIMDGMarinePollutant.N; - if (imdgPos.NumberOfPackages.HasValue) - rootIMDG.NumberOfPackages = imdgPos.NumberOfPackages.Value; - rootIMDG.PackageType = imdgPos.PackageType; - if (imdgPos.LimitedQuantities.HasValue) - rootIMDG.LimitedQuantities = imdgPos.LimitedQuantities.Value ? RootHAZDDPGOnDepartureDPGItemIMDGLimitedQuantities.Y : RootHAZDDPGOnDepartureDPGItemIMDGLimitedQuantities.N; - if (imdgPos.ExceptedQuantities.HasValue) - rootIMDG.ExceptedQuantities = imdgPos.ExceptedQuantities.Value ? RootHAZDDPGOnDepartureDPGItemIMDGExceptedQuantities.Y : RootHAZDDPGOnDepartureDPGItemIMDGExceptedQuantities.N; - rootIMDG.NetQuantity_KGMSpecified = imdgPos.NetQuantity_KGM.HasValue; - if (imdgPos.NetQuantity_KGM.HasValue) - rootIMDG.NetQuantity_KGM = (float)imdgPos.NetQuantity_KGM.Value; - rootIMDG.GrossQuantity_KGMSpecified = imdgPos.GrossQuantity_KGM.HasValue; - if (imdgPos.GrossQuantity_KGM.HasValue) - rootIMDG.GrossQuantity_KGM = (float)imdgPos.GrossQuantity_KGM.Value; - rootIMDG.Volume_MTQSpecified = imdgPos.Volume_MTQ.HasValue; - if (imdgPos.Volume_MTQ.HasValue) - rootIMDG.Volume_MTQ = (float)imdgPos.Volume_MTQ.Value; - rootIMDG.GeneralCargoIBCSpecified = imdgPos.GeneralCargoIBC.HasValue; - if (imdgPos.GeneralCargoIBC.HasValue) - rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? RootHAZDDPGOnDepartureDPGItemIMDGGeneralCargoIBC.Y : RootHAZDDPGOnDepartureDPGItemIMDGGeneralCargoIBC.N; - rootIMDG.ContainerNumber = imdgPos.ContainerNumber; - rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber; - rootIMDG.StowagePosition = imdgPos.StowagePosition; - rootIMDG.PortOfLoading = imdgPos.PortOfLoading; - rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge; - rootIMDG.Remarks = imdgPos.Remarks; - - dpgOnDeparture.DPGItemIMDG[i] = rootIMDG; - } - } - #endregion - - #region IBC - if (haz.IBCPositions.Count > 0) - { - dpgOnDeparture.DPGItemIBC = new RootHAZDDPGOnDepartureDPGItemIBC[haz.IBCPositions.Count]; - for (int i = 0; i < haz.IBCPositions.Count; i++) - { - RootHAZDDPGOnDepartureDPGItemIBC rootIBC = new RootHAZDDPGOnDepartureDPGItemIBC(); - IBCPosition ibcPos = haz.IBCPositions[i]; - - rootIBC.ProductName = ibcPos.ProductName; - if (ibcPos.PollutionCategory.HasValue) - rootIBC.PollutionCategory = (RootHAZDDPGOnDepartureDPGItemIBCPollutionCategory)ibcPos.PollutionCategory.Value; - rootIBC.HazardsSpecified = ibcPos.Hazards.HasValue; - if (ibcPos.Hazards.HasValue) - rootIBC.Hazards = (RootHAZDDPGOnDepartureDPGItemIBCHazards)ibcPos.Hazards.Value; - if (ibcPos.FlashpointInformation.HasValue) - rootIBC.FlashpointInformation = (RootHAZDDPGOnDepartureDPGItemIBCFlashpointInformation)ibcPos.FlashpointInformation.Value; - rootIBC.Flashpoint_CEL = ibcPos.Flashpoint_CEL; - if (ibcPos.Quantity_KGM.HasValue) - rootIBC.Quantity_KGM = (float)ibcPos.Quantity_KGM.Value; - rootIBC.StowagePosition = ibcPos.StowagePosition; - rootIBC.PortOfLoading = ibcPos.PortOfLoading; - rootIBC.PortOfDischarge = ibcPos.PortOfDischarge; - rootIBC.SpecRef15_19Specified = ibcPos.SpecRef15_19.HasValue; - if (ibcPos.SpecRef15_19.HasValue) - rootIBC.SpecRef15_19 = ibcPos.SpecRef15_19.Value ? RootHAZDDPGOnDepartureDPGItemIBCSpecRef15_19.Y : RootHAZDDPGOnDepartureDPGItemIBCSpecRef15_19.N; - rootIBC.Remarks = ibcPos.Remarks; - - dpgOnDeparture.DPGItemIBC[i] = rootIBC; - } - } - #endregion - - #region IGC - if (haz.IGCPositions.Count > 0) - { - dpgOnDeparture.DPGItemIGC = new RootHAZDDPGOnDepartureDPGItemIGC[haz.IGCPositions.Count]; - for (int i = 0; i < haz.IGCPositions.Count; i++) - { - RootHAZDDPGOnDepartureDPGItemIGC rootIGC = new RootHAZDDPGOnDepartureDPGItemIGC(); - IGCPosition igcPos = haz.IGCPositions[i]; - - rootIGC.UNNumber = igcPos.UNNumber; - rootIGC.IMOClass = igcPos.IMOClass; - rootIGC.ProductName = igcPos.ProductName; - if (igcPos.Quantity_KGM.HasValue) - rootIGC.Quantity_KGM = (float)igcPos.Quantity_KGM.Value; - rootIGC.StowagePosition = igcPos.StowagePosition; - rootIGC.PortOfLoading = igcPos.PortOfLoading; - rootIGC.PortOfDischarge = igcPos.PortOfDischarge; - rootIGC.Remarks = igcPos.Remarks; - - dpgOnDeparture.DPGItemIGC[i] = rootIGC; - } - } - #endregion - - #region IMSBC - if (haz.IMSBCPositions.Count > 0) - { - dpgOnDeparture.DPGItemIMSBC = new RootHAZDDPGOnDepartureDPGItemIMSBC[haz.IMSBCPositions.Count]; - for (int i = 0; i < haz.IMSBCPositions.Count; i++) - { - RootHAZDDPGOnDepartureDPGItemIMSBC rootIMSBC = new RootHAZDDPGOnDepartureDPGItemIMSBC(); - IMSBCPosition imsbcPos = haz.IMSBCPositions[i]; - - rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName; - if (imsbcPos.MHB.HasValue) - rootIMSBC.MHB = imsbcPos.MHB.Value ? RootHAZDDPGOnDepartureDPGItemIMSBCMHB.Y : RootHAZDDPGOnDepartureDPGItemIMSBCMHB.N; - rootIMSBC.UNNumber = imsbcPos.UNNumber; - rootIMSBC.IMOClass = imsbcPos.IMOClass; - if (imsbcPos.Quantity_KGM.HasValue) - rootIMSBC.Quantity_KGM = (float)imsbcPos.Quantity_KGM.Value; - rootIMSBC.StowagePosition = imsbcPos.StowagePosition; - rootIMSBC.PortOfLoading = imsbcPos.PortOfLoading; - rootIMSBC.PortOfDischarge = imsbcPos.PortOfDischarge; - rootIMSBC.Remarks = imsbcPos.Remarks; - - dpgOnDeparture.DPGItemIMSBC[i] = rootIMSBC; - } - } - #endregion - - #region MARPOL_ANNEX_I - if (haz.MARPOLPositions.Count > 0) - { - dpgOnDeparture.DPGItemMARPOLAnnexI = new RootHAZDDPGOnDepartureDPGItemMARPOLAnnexI[haz.MARPOLPositions.Count]; - for (int i = 0; i < haz.MARPOLPositions.Count; i++) - { - RootHAZDDPGOnDepartureDPGItemMARPOLAnnexI rootMarpol = new RootHAZDDPGOnDepartureDPGItemMARPOLAnnexI(); - MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i]; - - rootMarpol.Name = marpolPos.Name; - if (marpolPos.FlashpointInformation.HasValue) - rootMarpol.FlashpointInformation = (RootHAZDDPGOnDepartureDPGItemMARPOLAnnexIFlashpointInformation)marpolPos.FlashpointInformation.Value; - rootMarpol.Flashpoint_CEL = marpolPos.Flashpoint_CEL; - if (marpolPos.Quantity_KGM.HasValue) - rootMarpol.Quantity_KGM = (float)marpolPos.Quantity_KGM.Value; - rootMarpol.StowagePosition = marpolPos.StowagePosition; - rootMarpol.PortOfLoading = marpolPos.PortOfLoading; - rootMarpol.PortOfDischarge = marpolPos.PortOfDischarge; - rootMarpol.Remarks = marpolPos.Remarks; - - dpgOnDeparture.DPGItemMARPOLAnnexI[i] = rootMarpol; - } - } - #endregion - - rootHAZD.Items[1] = dpgOnDeparture; - #endregion - - if (haz.INFShipClass.HasValue) - { - RootHAZDINFShipClass infShipClass = (RootHAZDINFShipClass)haz.INFShipClass.Value; - rootHAZD.Items[2] = infShipClass; - } - + if (haz.NoDPGOnBoardOnArrival ?? false) + { + rootHAZD.Items = new object[1]; rootHAZD.Items[3] = RootHAZDNoDPGOnBoardOnDeparture.Y; + } + + else + { + rootHAZD.Items = new object[3]; + + if (haz.DPGManifestOnBoardOnArrival.HasValue) + rootHAZD.Items[0] = haz.DPGManifestOnBoardOnArrival.Value ? RootHAZDDPGManifestOnBoardOnDeparture.Y : RootHAZDDPGManifestOnBoardOnDeparture.N; + + #region HAZ positions + + RootHAZDDPGOnDeparture dpgOnDeparture = new RootHAZDDPGOnDeparture(); + + #region IMDG + if (haz.IMDGPositions.Count > 0) + { + dpgOnDeparture.DPGItemIMDG = new RootHAZDDPGOnDepartureDPGItemIMDG[haz.IMDGPositions.Count]; + for (int i = 0; i < haz.IMDGPositions.Count; i++) + { + IMDGPosition imdgPos = haz.IMDGPositions[i]; + RootHAZDDPGOnDepartureDPGItemIMDG rootIMDG = new RootHAZDDPGOnDepartureDPGItemIMDG(); + + rootIMDG.UNNumber = imdgPos.UNNumber; + if (imdgPos.PackingGroup.HasValue) + rootIMDG.PackingGroup = (RootHAZDDPGOnDepartureDPGItemIMDGPackingGroup)imdgPos.PackingGroup.Value; + rootIMDG.ProperShippingName = imdgPos.ProperShippingName; + rootIMDG.IMOClass = imdgPos.IMOClass; + rootIMDG.CompatibilityGroup = imdgPos.CompatibilityGroup; + rootIMDG.TechnicalName = imdgPos.TechnicalName; + rootIMDG.NetExplosiveMass_KGMSpecified = imdgPos.NetExplosiveMass_KGM.HasValue; + if (imdgPos.NetExplosiveMass_KGM.HasValue) + rootIMDG.NetExplosiveMass_KGM = (float)imdgPos.NetExplosiveMass_KGM.Value; + rootIMDG.Flashpoint_CEL = imdgPos.Flashpoint_CEL; + rootIMDG.Class7NuclideName = imdgPos.Class7NuclideName; + rootIMDG.Class7MaxActivity_BQLSpecified = imdgPos.Class7MaxActivity_BQL.HasValue; + if (imdgPos.Class7MaxActivity_BQL.HasValue) + rootIMDG.Class7MaxActivity_BQL = (float)imdgPos.Class7MaxActivity_BQL.Value; + rootIMDG.Class7CategorySpecified = imdgPos.Class7Category.HasValue; + if (imdgPos.Class7Category.HasValue) + rootIMDG.Class7Category = imdgPos.Class7Category.Value; + rootIMDG.Class7TransportIndexSpecified = imdgPos.Class7TransportIndex.HasValue; + if (imdgPos.Class7TransportIndex.HasValue) + rootIMDG.Class7TransportIndex = (float)imdgPos.Class7TransportIndex.Value; + rootIMDG.Class7CSISpecified = imdgPos.Class7CSI.HasValue; + if (imdgPos.Class7CSI.HasValue) + rootIMDG.Class7CSI = imdgPos.Class7CSI.Value; + rootIMDG.ControlTemperature_CELSpecified = imdgPos.ControlTemperature_CEL.HasValue; + if (imdgPos.ControlTemperature_CEL.HasValue) + rootIMDG.ControlTemperature_CEL = (float)imdgPos.ControlTemperature_CEL.Value; + rootIMDG.EmergencyTemperature_CELSpecified = imdgPos.EmergencyTemperature_CEL.HasValue; + if (imdgPos.EmergencyTemperature_CEL.HasValue) + rootIMDG.EmergencyTemperature_CEL = (float)imdgPos.EmergencyTemperature_CEL.Value; + if (imdgPos.SubsidiaryRiskList.Count > 0) + { + rootIMDG.SubsidiaryRisks = new string[imdgPos.SubsidiaryRiskList.Count]; + for (int sCount = 0; sCount < imdgPos.SubsidiaryRiskList.Count; sCount++) + rootIMDG.SubsidiaryRisks[sCount] = imdgPos.SubsidiaryRiskList[sCount].SubsidiaryRisk; + } + if (imdgPos.MarinePollutant.HasValue) + rootIMDG.MarinePollutant = imdgPos.MarinePollutant.Value ? RootHAZDDPGOnDepartureDPGItemIMDGMarinePollutant.Y : RootHAZDDPGOnDepartureDPGItemIMDGMarinePollutant.N; + if (imdgPos.NumberOfPackages.HasValue) + rootIMDG.NumberOfPackages = imdgPos.NumberOfPackages.Value; + rootIMDG.PackageType = imdgPos.PackageType; + if (imdgPos.LimitedQuantities.HasValue) + rootIMDG.LimitedQuantities = imdgPos.LimitedQuantities.Value ? RootHAZDDPGOnDepartureDPGItemIMDGLimitedQuantities.Y : RootHAZDDPGOnDepartureDPGItemIMDGLimitedQuantities.N; + if (imdgPos.ExceptedQuantities.HasValue) + rootIMDG.ExceptedQuantities = imdgPos.ExceptedQuantities.Value ? RootHAZDDPGOnDepartureDPGItemIMDGExceptedQuantities.Y : RootHAZDDPGOnDepartureDPGItemIMDGExceptedQuantities.N; + rootIMDG.NetQuantity_KGMSpecified = imdgPos.NetQuantity_KGM.HasValue; + if (imdgPos.NetQuantity_KGM.HasValue) + rootIMDG.NetQuantity_KGM = (float)imdgPos.NetQuantity_KGM.Value; + rootIMDG.GrossQuantity_KGMSpecified = imdgPos.GrossQuantity_KGM.HasValue; + if (imdgPos.GrossQuantity_KGM.HasValue) + rootIMDG.GrossQuantity_KGM = (float)imdgPos.GrossQuantity_KGM.Value; + rootIMDG.Volume_MTQSpecified = imdgPos.Volume_MTQ.HasValue; + if (imdgPos.Volume_MTQ.HasValue) + rootIMDG.Volume_MTQ = (float)imdgPos.Volume_MTQ.Value; + rootIMDG.GeneralCargoIBCSpecified = imdgPos.GeneralCargoIBC.HasValue; + if (imdgPos.GeneralCargoIBC.HasValue) + rootIMDG.GeneralCargoIBC = imdgPos.GeneralCargoIBC.Value ? RootHAZDDPGOnDepartureDPGItemIMDGGeneralCargoIBC.Y : RootHAZDDPGOnDepartureDPGItemIMDGGeneralCargoIBC.N; + rootIMDG.ContainerNumber = imdgPos.ContainerNumber; + rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber; + rootIMDG.StowagePosition = imdgPos.StowagePosition; + rootIMDG.PortOfLoading = imdgPos.PortOfLoading; + rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge; + rootIMDG.Remarks = imdgPos.Remarks; + + dpgOnDeparture.DPGItemIMDG[i] = rootIMDG; + } + } + #endregion + + #region IBC + if (haz.IBCPositions.Count > 0) + { + dpgOnDeparture.DPGItemIBC = new RootHAZDDPGOnDepartureDPGItemIBC[haz.IBCPositions.Count]; + for (int i = 0; i < haz.IBCPositions.Count; i++) + { + RootHAZDDPGOnDepartureDPGItemIBC rootIBC = new RootHAZDDPGOnDepartureDPGItemIBC(); + IBCPosition ibcPos = haz.IBCPositions[i]; + + rootIBC.ProductName = ibcPos.ProductName; + if (ibcPos.PollutionCategory.HasValue) + rootIBC.PollutionCategory = (RootHAZDDPGOnDepartureDPGItemIBCPollutionCategory)ibcPos.PollutionCategory.Value; + rootIBC.HazardsSpecified = ibcPos.Hazards.HasValue; + if (ibcPos.Hazards.HasValue) + rootIBC.Hazards = (RootHAZDDPGOnDepartureDPGItemIBCHazards)ibcPos.Hazards.Value; + if (ibcPos.FlashpointInformation.HasValue) + rootIBC.FlashpointInformation = (RootHAZDDPGOnDepartureDPGItemIBCFlashpointInformation)ibcPos.FlashpointInformation.Value; + rootIBC.Flashpoint_CEL = ibcPos.Flashpoint_CEL; + if (ibcPos.Quantity_KGM.HasValue) + rootIBC.Quantity_KGM = (float)ibcPos.Quantity_KGM.Value; + rootIBC.StowagePosition = ibcPos.StowagePosition; + rootIBC.PortOfLoading = ibcPos.PortOfLoading; + rootIBC.PortOfDischarge = ibcPos.PortOfDischarge; + rootIBC.SpecRef15_19Specified = ibcPos.SpecRef15_19.HasValue; + if (ibcPos.SpecRef15_19.HasValue) + rootIBC.SpecRef15_19 = ibcPos.SpecRef15_19.Value ? RootHAZDDPGOnDepartureDPGItemIBCSpecRef15_19.Y : RootHAZDDPGOnDepartureDPGItemIBCSpecRef15_19.N; + rootIBC.Remarks = ibcPos.Remarks; + + dpgOnDeparture.DPGItemIBC[i] = rootIBC; + } + } + #endregion + + #region IGC + if (haz.IGCPositions.Count > 0) + { + dpgOnDeparture.DPGItemIGC = new RootHAZDDPGOnDepartureDPGItemIGC[haz.IGCPositions.Count]; + for (int i = 0; i < haz.IGCPositions.Count; i++) + { + RootHAZDDPGOnDepartureDPGItemIGC rootIGC = new RootHAZDDPGOnDepartureDPGItemIGC(); + IGCPosition igcPos = haz.IGCPositions[i]; + + rootIGC.UNNumber = igcPos.UNNumber; + rootIGC.IMOClass = igcPos.IMOClass; + rootIGC.ProductName = igcPos.ProductName; + if (igcPos.Quantity_KGM.HasValue) + rootIGC.Quantity_KGM = (float)igcPos.Quantity_KGM.Value; + rootIGC.StowagePosition = igcPos.StowagePosition; + rootIGC.PortOfLoading = igcPos.PortOfLoading; + rootIGC.PortOfDischarge = igcPos.PortOfDischarge; + rootIGC.Remarks = igcPos.Remarks; + + dpgOnDeparture.DPGItemIGC[i] = rootIGC; + } + } + #endregion + + #region IMSBC + if (haz.IMSBCPositions.Count > 0) + { + dpgOnDeparture.DPGItemIMSBC = new RootHAZDDPGOnDepartureDPGItemIMSBC[haz.IMSBCPositions.Count]; + for (int i = 0; i < haz.IMSBCPositions.Count; i++) + { + RootHAZDDPGOnDepartureDPGItemIMSBC rootIMSBC = new RootHAZDDPGOnDepartureDPGItemIMSBC(); + IMSBCPosition imsbcPos = haz.IMSBCPositions[i]; + + rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName; + if (imsbcPos.MHB.HasValue) + rootIMSBC.MHB = imsbcPos.MHB.Value ? RootHAZDDPGOnDepartureDPGItemIMSBCMHB.Y : RootHAZDDPGOnDepartureDPGItemIMSBCMHB.N; + rootIMSBC.UNNumber = imsbcPos.UNNumber; + rootIMSBC.IMOClass = imsbcPos.IMOClass; + if (imsbcPos.Quantity_KGM.HasValue) + rootIMSBC.Quantity_KGM = (float)imsbcPos.Quantity_KGM.Value; + rootIMSBC.StowagePosition = imsbcPos.StowagePosition; + rootIMSBC.PortOfLoading = imsbcPos.PortOfLoading; + rootIMSBC.PortOfDischarge = imsbcPos.PortOfDischarge; + rootIMSBC.Remarks = imsbcPos.Remarks; + + dpgOnDeparture.DPGItemIMSBC[i] = rootIMSBC; + } + } + #endregion + + #region MARPOL_ANNEX_I + if (haz.MARPOLPositions.Count > 0) + { + dpgOnDeparture.DPGItemMARPOLAnnexI = new RootHAZDDPGOnDepartureDPGItemMARPOLAnnexI[haz.MARPOLPositions.Count]; + for (int i = 0; i < haz.MARPOLPositions.Count; i++) + { + RootHAZDDPGOnDepartureDPGItemMARPOLAnnexI rootMarpol = new RootHAZDDPGOnDepartureDPGItemMARPOLAnnexI(); + MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i]; + + rootMarpol.Name = marpolPos.Name; + if (marpolPos.FlashpointInformation.HasValue) + rootMarpol.FlashpointInformation = (RootHAZDDPGOnDepartureDPGItemMARPOLAnnexIFlashpointInformation)marpolPos.FlashpointInformation.Value; + rootMarpol.Flashpoint_CEL = marpolPos.Flashpoint_CEL; + if (marpolPos.Quantity_KGM.HasValue) + rootMarpol.Quantity_KGM = (float)marpolPos.Quantity_KGM.Value; + rootMarpol.StowagePosition = marpolPos.StowagePosition; + rootMarpol.PortOfLoading = marpolPos.PortOfLoading; + rootMarpol.PortOfDischarge = marpolPos.PortOfDischarge; + rootMarpol.Remarks = marpolPos.Remarks; + + dpgOnDeparture.DPGItemMARPOLAnnexI[i] = rootMarpol; + } + } + #endregion + + rootHAZD.Items[1] = dpgOnDeparture; + + #endregion + + if (haz.INFShipClass.HasValue) + { + RootHAZDINFShipClass infShipClass = (RootHAZDINFShipClass)haz.INFShipClass.Value; + rootHAZD.Items[2] = infShipClass; + } + + } + item = rootHAZD; } diff --git a/nsw/Source/bsmd.herberg.FormService/FormService.cs b/nsw/Source/bsmd.herberg.FormService/FormService.cs index 62efd76a..f27f5920 100644 --- a/nsw/Source/bsmd.herberg.FormService/FormService.cs +++ b/nsw/Source/bsmd.herberg.FormService/FormService.cs @@ -35,11 +35,13 @@ namespace bsmd.herberg.FormService this.EventLog.Log = "Application"; this.Init(args); this.EventLog.WriteEntry("FormService started.", EventLogEntryType.Information); + this._log.Info("Starting EU-NOAD FormService."); this.DoOnce(); } protected override void OnStop() { + this._log.Info("Stopping EU-NOAD FormService."); } public void Init(string[] args) diff --git a/nsw/Source/bsmd.herberg.FormService/Properties/AssemblyInfo.cs b/nsw/Source/bsmd.herberg.FormService/Properties/AssemblyInfo.cs index 4ff0d72e..d5321544 100644 --- a/nsw/Source/bsmd.herberg.FormService/Properties/AssemblyInfo.cs +++ b/nsw/Source/bsmd.herberg.FormService/Properties/AssemblyInfo.cs @@ -6,12 +6,7 @@ using System.Runtime.InteropServices; // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("bsmd.herberg.FormService")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("bsmd.herberg.FormService")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] +[assembly: AssemblyDescription("Imports Herberg Fleettracker form data")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible @@ -21,16 +16,3 @@ using System.Runtime.InteropServices; // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("663d14d2-42ce-4efd-9915-82254b211d81")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/nsw/Source/bsmd.herberg.FormService/Util.cs b/nsw/Source/bsmd.herberg.FormService/Util.cs index 44658bb9..cb2d208a 100644 --- a/nsw/Source/bsmd.herberg.FormService/Util.cs +++ b/nsw/Source/bsmd.herberg.FormService/Util.cs @@ -651,9 +651,11 @@ namespace bsmd.herberg.FormService #region CREW case "CREW": { + Dictionary keysInMessage = new Dictionary(); foreach (int key in nDict.Keys) { Dictionary pDict = nDict[key]; + keysInMessage.Add(key.ToString(), key.ToString()); CREW crew = theMessage.GetSublistElementWithIdentifier(key.ToString()) as CREW; if (crew == null) { @@ -680,9 +682,18 @@ namespace bsmd.herberg.FormService { _log.ErrorFormat("Error reading CREW fields: {0}", ex.Message); } - saveMessages.Add(crew); - } + } + // check for missing messages (crew deleted in EU-NOAD) + foreach (CREW crew in theMessage.Elements) + { + if (!keysInMessage.ContainsKey(crew.Identifier)) + { + _log.InfoFormat("CREW {0} {1}, Ident {2} not found in EU-NOAD message, removing!", + crew.CrewMemberLastName ?? "", crew.CrewMemberFirstName ?? "", crew.Identifier); + DBManager.Instance.Delete(crew); + } + } } break; #endregion @@ -816,9 +827,11 @@ namespace bsmd.herberg.FormService #region PAS case "PAS": { + Dictionary keysInMessage = new Dictionary(); foreach (int key in nDict.Keys) { Dictionary pDict = nDict[key]; + keysInMessage.Add(key.ToString(), key.ToString()); PAS pas = theMessage.GetSublistElementWithIdentifier(key.ToString()) as PAS; if (pas == null) { @@ -852,6 +865,16 @@ namespace bsmd.herberg.FormService saveMessages.Add(pas); } + // check for missing messages (passenger deleted in EU-NOAD) + foreach (PAS pas in theMessage.Elements) + { + if (!keysInMessage.ContainsKey(pas.Identifier)) + { + _log.InfoFormat("PAS {0} {1}, Ident {2} not found in EU-NOAD message, removing!", + pas.PassengerLastName ?? "", pas.PassengerFirstName ?? "", pas.Identifier); + DBManager.Instance.Delete(pas); + } + } } break; #endregion diff --git a/nsw/Source/bsmd.herberg.FormService/bsmd.herberg.FormService.csproj b/nsw/Source/bsmd.herberg.FormService/bsmd.herberg.FormService.csproj index 4d10a4a8..c0013931 100644 --- a/nsw/Source/bsmd.herberg.FormService/bsmd.herberg.FormService.csproj +++ b/nsw/Source/bsmd.herberg.FormService/bsmd.herberg.FormService.csproj @@ -62,6 +62,15 @@ + + Properties\AssemblyProductInfo.cs + + + Properties\AssemblyProjectInfo.cs + + + Properties\AssemblyProjectKeyInfo.cs + Component