diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 926b75dc..0c29c6a8 100644 Binary files a/Stundensheet.xlsx and b/Stundensheet.xlsx differ diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index 46d40655..ab17b025 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -62,9 +62,9 @@ namespace bsmd.ExcelReadService ScanTOWA(messages, messageCore, reader); - // HAZA + ScanHAZA(messages, messageCore, reader); - // HAZD + ScanHAZD(messages, messageCore, reader); } else @@ -121,9 +121,9 @@ namespace bsmd.ExcelReadService ScanTOWD(messages, messageCore, reader); - // HAZA + ScanHAZA(messages, messageCore, reader); - // HAZD + ScanHAZD(messages, messageCore, reader); } @@ -370,55 +370,243 @@ namespace bsmd.ExcelReadService reader.Conf.ConfirmText("HAZA.INFShipClass", shipClass, haza.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); } - // IMDG - - string imdg_unno = "HAZA.IMDG.UNNumber_{0}"; - string imdg_properShippingName = "HAZA.IMDG.ProperShippingName_{0}"; - string imdg_imoClass = "HAZA.IMDG.IMOClass_{0}"; - string imdg_packingGroup = "HAZA.IMDG.PackingGroup_{0}"; - string imdg_marinePollutant = "HAZA.IMDG.MarinePollutant_{0}"; - string imdg_flashpoint = "HAZA.IMDG.Flashpoint_CEL_{0}"; - string imdg_numberOfPackages = "HAZA.IMDG.NumberOfPackages_{0}"; - string imdg_packageType = "HAZA.IMDG.PackageType_{0}"; - string imdg_limitedQuantities = "HAZA.IMDG.LimitedQuantities_{0}"; - string imdg_exceptedQuantities = "HAZA.IMDG.ExceptedQuantities_{0}"; - string imdg_netQuantity = "HAZA.IMDG.NetQuantity_KGM_{0}"; - string imdg_grossQuantity = "HAZA.IMDG.GrossQuantity_KGM_{0}"; - string imdg_number = "HAZA.IMDG.Number_{0}"; - string imdg_stowagePosition = "HAZA.IMDG.StowagePosition_{0}"; - string imdg_portOfLoading = "HAZA.IMDG.PortOfLoading_{0}"; - string imdg_portOfDischarge = "HAZA.IMDG.PortOfDischarge_{0}"; + // IMDG + #region IMDG for (int i = 1; i <= 10; i++) { + string imdg_unno = string.Format("HAZA.IMDG.UNNumber_{0}", i); + string imdg_properShippingName = string.Format("HAZA.IMDG.ProperShippingName_{0}", i); + string imdg_imoClass = string.Format("HAZA.IMDG.IMOClass_{0}", i); + string imdg_packingGroup = string.Format("HAZA.IMDG.PackingGroup_{0}", i); + string imdg_marinePollutant = string.Format("HAZA.IMDG.MarinePollutant_{0}", i); + string imdg_flashpoint = string.Format("HAZA.IMDG.Flashpoint_CEL_{0}", i); + string imdg_numberOfPackages = string.Format("HAZA.IMDG.NumberOfPackages_{0}", i); + string imdg_packageType = string.Format("HAZA.IMDG.PackageType_{0}", i); + string imdg_limitedQuantities = string.Format("HAZA.IMDG.LimitedQuantities_{0}", i); + string imdg_exceptedQuantities = string.Format("HAZA.IMDG.ExceptedQuantities_{0}", i); + string imdg_netQuantity = string.Format("HAZA.IMDG.NetQuantity_KGM_{0}", i); + string imdg_grossQuantity = string.Format("HAZA.IMDG.GrossQuantity_KGM_{0}", i); + string imdg_number = string.Format("HAZA.IMDG.Number_{0}", i); + string imdg_stowagePosition = string.Format("HAZA.IMDG.StowagePosition_{0}", i); + string imdg_portOfLoading = string.Format("HAZA.IMDG.PortOfLoading_{0}", i); + string imdg_portOfDischarge = string.Format("HAZA.IMDG.PortOfDischarge_{0}", i); + string unNumber = reader.ReadText(imdg_unno); + if(unNumber.IsNullOrEmpty()) // if unnumber is not set ignore this row + { + reader.Conf.ConfirmText(imdg_unno, null, ExcelReader.ReadState.WARN); + continue; + } + IMDGPosition imdgPosition = haza.GetIMDGPositionWithIdentifier(i.ToString()); + if(imdgPosition == null) + { + imdgPosition = new IMDGPosition(); + imdgPosition.HAZ = haza; + imdgPosition.Identifier = i.ToString(); + haza.IMDGPositions.Add(imdgPosition); + } + + imdgPosition.UNNumber = unNumber; + reader.Conf.ConfirmText(imdg_unno, unNumber, ExcelReader.ReadState.OK); + imdgPosition.ProperShippingName = reader.ReadText(imdg_properShippingName); + reader.Conf.ConfirmText(imdg_properShippingName, imdgPosition.ProperShippingName, imdgPosition.ProperShippingName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.IMOClass = reader.ReadText(imdg_imoClass); + reader.Conf.ConfirmText(imdg_imoClass, imdgPosition.IMOClass, imdgPosition.IMOClass.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.PackingGroup = (byte?) reader.ReadNumber(imdg_packingGroup); + imdgPosition.MarinePollutant = reader.ReadBoolean(imdg_marinePollutant); + imdgPosition.Flashpoint_CEL = reader.ReadText(imdg_flashpoint); + reader.Conf.ConfirmText(imdg_flashpoint, imdgPosition.Flashpoint_CEL, imdgPosition.Flashpoint_CEL.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); + imdgPosition.NumberOfPackages = (int?)reader.ReadNumber(imdg_numberOfPackages); + imdgPosition.PackageType = reader.ReadText(imdg_packageType); + reader.Conf.ConfirmText(imdg_packageType, imdgPosition.PackageType, imdgPosition.PackageType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.LimitedQuantities = reader.ReadBoolean(imdg_limitedQuantities); + imdgPosition.ExceptedQuantities = reader.ReadBoolean(imdg_exceptedQuantities); + imdgPosition.NetQuantity_KGM = reader.ReadNumber(imdg_netQuantity); + imdgPosition.GrossQuantity_KGM = reader.ReadNumber(imdg_grossQuantity); + imdgPosition.VehicleLicenseNumber = reader.ReadText(imdg_number); + reader.Conf.ConfirmText(imdg_number, imdgPosition.VehicleLicenseNumber, imdgPosition.VehicleLicenseNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); + imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition); + reader.Conf.ConfirmText(imdg_stowagePosition, imdgPosition.StowagePosition, imdgPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.PortOfLoading = reader.ReadText(imdg_portOfLoading); + reader.Conf.ConfirmText(imdg_portOfLoading, imdgPosition.PortOfLoading, imdgPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.PortOfDischarge = reader.ReadText(imdg_portOfDischarge); + reader.Conf.ConfirmText(imdg_portOfDischarge, imdgPosition.PortOfDischarge, imdgPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); } + #endregion + + #region IBC // IBC for (int i = 1; i <= 5; i++) { + string ibc_productName = string.Format("HAZA.IBC.ProductName_{0}", i); + string ibc_pollutionCategory = string.Format("HAZA.IBC.PollutionCategory_{0}", i); + string ibc_flash = string.Format("HAZA.IBC.FlashpointInformation_{0}", i); + string ibc_quantity = string.Format("HAZA.IBC.Quantity_KGM_{0}", i); + 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 productName = reader.ReadText(ibc_productName); + if(productName.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(ibc_productName, null, ExcelReader.ReadState.WARN); + continue; + } + + IBCPosition ibcPosition = haza.GetIBCPositionWithIdentifier(i.ToString()); + if(ibcPosition == null) + { + ibcPosition = new IBCPosition(); + ibcPosition.Identifier = i.ToString(); + ibcPosition.HAZ = haza; + haza.IBCPositions.Add(ibcPosition); + } + + ibcPosition.ProductName = productName; + reader.Conf.ConfirmText(ibc_productName, productName, ExcelReader.ReadState.OK); + string pollutionCategory = reader.ReadText(ibc_pollutionCategory); + if(!pollutionCategory.IsNullOrEmpty()) + { + if (pollutionCategory.Equals("X", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 0; + if (pollutionCategory.Equals("Y", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 1; + if (pollutionCategory.Equals("Z", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 2; + if (pollutionCategory.Equals("OS", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 3; + } + reader.Conf.ConfirmText(ibc_pollutionCategory, pollutionCategory, ibcPosition.PollutionCategory.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + + ibcPosition.Flashpoint_CEL = reader.ReadText(ibc_flash); + reader.Conf.ConfirmText(ibc_flash, ibcPosition.Flashpoint_CEL, ExcelReader.ReadState.NONE); + ibcPosition.Quantity_KGM = (int ?) reader.ReadNumber(ibc_quantity); + ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition); + reader.Conf.ConfirmText(ibc_stowagePosition, ibcPosition.StowagePosition, ibcPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + ibcPosition.PortOfLoading = reader.ReadText(ibc_portOfLoading); + reader.Conf.ConfirmText(ibc_portOfLoading, ibcPosition.PortOfLoading, ibcPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + ibcPosition.PortOfDischarge = reader.ReadText(ibc_portOfDischarge); + reader.Conf.ConfirmText(ibc_portOfDischarge, ibcPosition.PortOfDischarge, ibcPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); } + #endregion + #region IGC // IGC for (int i = 1; i <= 5; i++) { + string igc_productName = string.Format("HAZA.IGC.ProductName_{0}", i); + string igc_quantity = string.Format("HAZA.IGC.Quantity_KGM_{0}", i); + 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 productName = reader.ReadText(igc_productName); + if(productName.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(igc_productName, null, ExcelReader.ReadState.WARN); + continue; + } + + IGCPosition igcPosition = haza.GetIGCPositionWithIdentifier(i.ToString()); + if(igcPosition == null) + { + igcPosition = new IGCPosition(); + igcPosition.Identifier = i.ToString(); + igcPosition.HAZ = haza; + haza.IGCPositions.Add(igcPosition); + } + + igcPosition.ProductName = productName; + reader.Conf.ConfirmText(igc_productName, productName, ExcelReader.ReadState.OK); + igcPosition.Quantity_KGM = reader.ReadNumber(igc_quantity); + igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition); + reader.Conf.ConfirmText(igc_stowagePosition, igcPosition.StowagePosition, igcPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + igcPosition.PortOfLoading = reader.ReadText(igc_portOfLoading); + reader.Conf.ConfirmText(igc_portOfLoading, igcPosition.PortOfLoading, igcPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + igcPosition.PortOfDischarge = reader.ReadText(igc_portOfDischarge); + reader.Conf.ConfirmText(igc_portOfDischarge, igcPosition.PortOfDischarge, igcPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); } + #endregion + #region IMSBC // IMSBC for (int i = 1; i <= 5; i++) { + string imsbc_bcsn = string.Format("HAZA.IMSBC.BulkCargoShippingName_{0}", i); + string imsbc_mhb = string.Format("HAZA.IMSBC.MHB_{0}", i); + string imsbc_quantity = string.Format("HAZA.IMSBC.Quantity_KGM_{0}", i); + 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 bcsn = reader.ReadText(imsbc_bcsn); + if(bcsn.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(imsbc_bcsn, null, ExcelReader.ReadState.WARN); + continue; + } + + IMSBCPosition imsbcPosition = haza.GetIMSBCPositionWithIdentifier(i.ToString()); + if(imsbcPosition == null) + { + imsbcPosition = new IMSBCPosition(); + imsbcPosition.Identifier = i.ToString(); + imsbcPosition.HAZ = haza; + haza.IMSBCPositions.Add(imsbcPosition); + } + + imsbcPosition.BulkCargoShippingName = bcsn; + reader.Conf.ConfirmText(imsbc_bcsn, bcsn, ExcelReader.ReadState.OK); + imsbcPosition.MHB = reader.ReadBoolean(imsbc_mhb); + imsbcPosition.Quantity_KGM = reader.ReadNumber(imsbc_quantity); + imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition); + reader.Conf.ConfirmText(imsbc_stowagePosition, imsbcPosition.StowagePosition, imsbcPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imsbcPosition.PortOfLoading = reader.ReadText(imsbc_portOfLoading); + reader.Conf.ConfirmText(imsbc_portOfLoading, imsbcPosition.PortOfLoading, imsbcPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imsbcPosition.PortOfDischarge = reader.ReadText(imsbc_portOfDischarge); + reader.Conf.ConfirmText(imsbc_portOfDischarge, imsbcPosition.PortOfDischarge, imsbcPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); } + #endregion + #region MARPOL // MARPOL for (int i = 1; i <= 5; i++) { + string marpol_name = string.Format("HAZA.MARPOL.Name_{0}", i); + string marpol_flash = string.Format("HAZA.MARPOL.Flashpoint_CEL_{0}", i); + string marpol_quantity = string.Format("HAZA.MARPOL.Quantity_KGM_{0}", i); + 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 name = reader.ReadText(marpol_name); + if(name.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(marpol_name, null, ExcelReader.ReadState.WARN); + continue; + } + + MARPOL_Annex_I_Position marpolPosition = haza.GetMARPOLPositionWithIdentifier(i.ToString()); + if(marpolPosition == null) + { + marpolPosition = new MARPOL_Annex_I_Position(); + marpolPosition.Identifier = i.ToString(); + marpolPosition.HAZ = haza; + haza.MARPOLPositions.Add(marpolPosition); + } + + marpolPosition.Name = name; + reader.Conf.ConfirmText(marpol_name, name, ExcelReader.ReadState.OK); + marpolPosition.Flashpoint_CEL = reader.ReadText(marpol_flash); + reader.Conf.ConfirmText(marpol_flash, marpolPosition.Flashpoint_CEL, marpolPosition.Flashpoint_CEL.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + marpolPosition.Quantity_KGM = reader.ReadNumber(marpol_quantity); + marpolPosition.StowagePosition = reader.ReadText(marpol_stowagePosition); + reader.Conf.ConfirmText(marpol_stowagePosition, marpolPosition.StowagePosition, marpolPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + marpolPosition.PortOfLoading = reader.ReadText(marpol_portOfLoading); + reader.Conf.ConfirmText(marpol_portOfLoading, marpolPosition.PortOfLoading, marpolPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + marpolPosition.PortOfDischarge = reader.ReadText(marpol_portOfDischarge); + reader.Conf.ConfirmText(marpol_portOfDischarge, marpolPosition.PortOfDischarge, marpolPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); } - + #endregion } #endregion @@ -430,13 +618,271 @@ namespace bsmd.ExcelReadService Message hazdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZD); if (hazdMessage.Elements.Count == 0) { - HAZ newHaza = new HAZ(); - newHaza.IsDeparture = true; - newHaza.MessageHeader = hazdMessage; - hazdMessage.Elements.Add(newHaza); + HAZ newHazd = new HAZ(); + newHazd.IsDeparture = true; + newHazd.MessageHeader = hazdMessage; + hazdMessage.Elements.Add(newHazd); } HAZ hazd = hazdMessage.Elements[0] as HAZ; + hazd.DPGManifestOnBoardOnArrival = reader.ReadBoolean("HAZD.DPGManifestOnBoardOnDeparture"); + hazd.DPGContactFamilyName = reader.ReadText("HAZD.DPGContactFamilyName"); + reader.Conf.ConfirmText("HAZD.DPGContactFamilyName", hazd.DPGContactFamilyName, hazd.DPGContactFamilyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + hazd.DPGContactPhone = reader.ReadText("HAZD.DPGContactPhone"); + reader.Conf.ConfirmText("HAZD.DPGContactPhone", hazd.DPGContactPhone, hazd.DPGContactPhone.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + hazd.MOUBaltic = reader.ReadBoolean("HAZD.MOUBaltic"); + string shipClass = reader.ReadText("HAZD.INFShipClass"); + if (shipClass.IsNullOrEmpty()) + { + reader.Conf.ConfirmText("HAZD.INFShipClass", null, ExcelReader.ReadState.FAIL); + } + else + { + if (shipClass.Contains('1')) hazd.INFShipClass = 1; + if (shipClass.Contains('2')) hazd.INFShipClass = 2; + if (shipClass.Contains('3')) hazd.INFShipClass = 3; + if (shipClass.Equals("none", StringComparison.OrdinalIgnoreCase)) hazd.INFShipClass = 0; + reader.Conf.ConfirmText("HAZD.INFShipClass", shipClass, hazd.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + } + + // IMDG + #region IMDG + + for (int i = 1; i <= 10; i++) + { + string imdg_unno = string.Format("HAZD.IMDG.UNNumber_{0}", i); + string imdg_properShippingName = string.Format("HAZD.IMDG.ProperShippingName_{0}", i); + string imdg_imoClass = string.Format("HAZD.IMDG.IMOClass_{0}", i); + string imdg_packingGroup = string.Format("HAZD.IMDG.PackingGroup_{0}", i); + string imdg_marinePollutant = string.Format("HAZD.IMDG.MarinePollutant_{0}", i); + string imdg_flashpoint = string.Format("HAZD.IMDG.Flashpoint_CEL_{0}", i); + string imdg_numberOfPackages = string.Format("HAZD.IMDG.NumberOfPackages_{0}", i); + string imdg_packageType = string.Format("HAZD.IMDG.PackageType_{0}", i); + string imdg_limitedQuantities = string.Format("HAZD.IMDG.LimitedQuantities_{0}", i); + string imdg_exceptedQuantities = string.Format("HAZD.IMDG.ExceptedQuantities_{0}", i); + string imdg_netQuantity = string.Format("HAZD.IMDG.NetQuantity_KGM_{0}", i); + string imdg_grossQuantity = string.Format("HAZD.IMDG.GrossQuantity_KGM_{0}", i); + string imdg_number = string.Format("HAZD.IMDG.Number_{0}", i); + string imdg_stowagePosition = string.Format("HAZD.IMDG.StowagePosition_{0}", i); + string imdg_portOfLoading = string.Format("HAZD.IMDG.PortOfLoading_{0}", i); + string imdg_portOfDischarge = string.Format("HAZD.IMDG.PortOfDischarge_{0}", i); + + string unNumber = reader.ReadText(imdg_unno); + if (unNumber.IsNullOrEmpty()) // if unnumber is not set ignore this row + { + reader.Conf.ConfirmText(imdg_unno, null, ExcelReader.ReadState.WARN); + continue; + } + + IMDGPosition imdgPosition = hazd.GetIMDGPositionWithIdentifier(i.ToString()); + if (imdgPosition == null) + { + imdgPosition = new IMDGPosition(); + imdgPosition.HAZ = hazd; + imdgPosition.Identifier = i.ToString(); + hazd.IMDGPositions.Add(imdgPosition); + } + + imdgPosition.UNNumber = unNumber; + reader.Conf.ConfirmText(imdg_unno, unNumber, ExcelReader.ReadState.OK); + imdgPosition.ProperShippingName = reader.ReadText(imdg_properShippingName); + reader.Conf.ConfirmText(imdg_properShippingName, imdgPosition.ProperShippingName, imdgPosition.ProperShippingName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.IMOClass = reader.ReadText(imdg_imoClass); + reader.Conf.ConfirmText(imdg_imoClass, imdgPosition.IMOClass, imdgPosition.IMOClass.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.PackingGroup = (byte?)reader.ReadNumber(imdg_packingGroup); + imdgPosition.MarinePollutant = reader.ReadBoolean(imdg_marinePollutant); + imdgPosition.Flashpoint_CEL = reader.ReadText(imdg_flashpoint); + reader.Conf.ConfirmText(imdg_flashpoint, imdgPosition.Flashpoint_CEL, imdgPosition.Flashpoint_CEL.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); + imdgPosition.NumberOfPackages = (int?)reader.ReadNumber(imdg_numberOfPackages); + imdgPosition.PackageType = reader.ReadText(imdg_packageType); + reader.Conf.ConfirmText(imdg_packageType, imdgPosition.PackageType, imdgPosition.PackageType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.LimitedQuantities = reader.ReadBoolean(imdg_limitedQuantities); + imdgPosition.ExceptedQuantities = reader.ReadBoolean(imdg_exceptedQuantities); + imdgPosition.NetQuantity_KGM = reader.ReadNumber(imdg_netQuantity); + imdgPosition.GrossQuantity_KGM = reader.ReadNumber(imdg_grossQuantity); + imdgPosition.VehicleLicenseNumber = reader.ReadText(imdg_number); + reader.Conf.ConfirmText(imdg_number, imdgPosition.VehicleLicenseNumber, imdgPosition.VehicleLicenseNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); + imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition); + reader.Conf.ConfirmText(imdg_stowagePosition, imdgPosition.StowagePosition, imdgPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.PortOfLoading = reader.ReadText(imdg_portOfLoading); + reader.Conf.ConfirmText(imdg_portOfLoading, imdgPosition.PortOfLoading, imdgPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imdgPosition.PortOfDischarge = reader.ReadText(imdg_portOfDischarge); + reader.Conf.ConfirmText(imdg_portOfDischarge, imdgPosition.PortOfDischarge, imdgPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } + + #endregion + + #region IBC + // IBC + for (int i = 1; i <= 5; i++) + { + string ibc_productName = string.Format("HAZD.IBC.ProductName_{0}", i); + string ibc_pollutionCategory = string.Format("HAZD.IBC.PollutionCategory_{0}", i); + string ibc_flash = string.Format("HAZD.IBC.FlashpointInformation_{0}", i); + string ibc_quantity = string.Format("HAZD.IBC.Quantity_KGM_{0}", i); + 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 productName = reader.ReadText(ibc_productName); + if (productName.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(ibc_productName, null, ExcelReader.ReadState.WARN); + continue; + } + + IBCPosition ibcPosition = hazd.GetIBCPositionWithIdentifier(i.ToString()); + if (ibcPosition == null) + { + ibcPosition = new IBCPosition(); + ibcPosition.Identifier = i.ToString(); + ibcPosition.HAZ = hazd; + hazd.IBCPositions.Add(ibcPosition); + } + + ibcPosition.ProductName = productName; + reader.Conf.ConfirmText(ibc_productName, productName, ExcelReader.ReadState.OK); + string pollutionCategory = reader.ReadText(ibc_pollutionCategory); + if (!pollutionCategory.IsNullOrEmpty()) + { + if (pollutionCategory.Equals("X", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 0; + if (pollutionCategory.Equals("Y", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 1; + if (pollutionCategory.Equals("Z", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 2; + if (pollutionCategory.Equals("OS", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 3; + } + reader.Conf.ConfirmText(ibc_pollutionCategory, pollutionCategory, ibcPosition.PollutionCategory.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + + ibcPosition.Flashpoint_CEL = reader.ReadText(ibc_flash); + reader.Conf.ConfirmText(ibc_flash, ibcPosition.Flashpoint_CEL, ExcelReader.ReadState.NONE); + ibcPosition.Quantity_KGM = (int?)reader.ReadNumber(ibc_quantity); + ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition); + reader.Conf.ConfirmText(ibc_stowagePosition, ibcPosition.StowagePosition, ibcPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + ibcPosition.PortOfLoading = reader.ReadText(ibc_portOfLoading); + reader.Conf.ConfirmText(ibc_portOfLoading, ibcPosition.PortOfLoading, ibcPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + ibcPosition.PortOfDischarge = reader.ReadText(ibc_portOfDischarge); + reader.Conf.ConfirmText(ibc_portOfDischarge, ibcPosition.PortOfDischarge, ibcPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } + #endregion + + #region IGC + // IGC + for (int i = 1; i <= 5; i++) + { + string igc_productName = string.Format("HAZD.IGC.ProductName_{0}", i); + string igc_quantity = string.Format("HAZD.IGC.Quantity_KGM_{0}", i); + 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 productName = reader.ReadText(igc_productName); + if (productName.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(igc_productName, null, ExcelReader.ReadState.WARN); + continue; + } + + IGCPosition igcPosition = hazd.GetIGCPositionWithIdentifier(i.ToString()); + if (igcPosition == null) + { + igcPosition = new IGCPosition(); + igcPosition.Identifier = i.ToString(); + igcPosition.HAZ = hazd; + hazd.IGCPositions.Add(igcPosition); + } + + igcPosition.ProductName = productName; + reader.Conf.ConfirmText(igc_productName, productName, ExcelReader.ReadState.OK); + igcPosition.Quantity_KGM = reader.ReadNumber(igc_quantity); + igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition); + reader.Conf.ConfirmText(igc_stowagePosition, igcPosition.StowagePosition, igcPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + igcPosition.PortOfLoading = reader.ReadText(igc_portOfLoading); + reader.Conf.ConfirmText(igc_portOfLoading, igcPosition.PortOfLoading, igcPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + igcPosition.PortOfDischarge = reader.ReadText(igc_portOfDischarge); + reader.Conf.ConfirmText(igc_portOfDischarge, igcPosition.PortOfDischarge, igcPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } + #endregion + + #region IMSBC + // IMSBC + for (int i = 1; i <= 5; i++) + { + string imsbc_bcsn = string.Format("HAZD.IMSBC.BulkCargoShippingName_{0}", i); + string imsbc_mhb = string.Format("HAZD.IMSBC.MHB_{0}", i); + string imsbc_quantity = string.Format("HAZD.IMSBC.Quantity_KGM_{0}", i); + 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 bcsn = reader.ReadText(imsbc_bcsn); + if (bcsn.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(imsbc_bcsn, null, ExcelReader.ReadState.WARN); + continue; + } + + IMSBCPosition imsbcPosition = hazd.GetIMSBCPositionWithIdentifier(i.ToString()); + if (imsbcPosition == null) + { + imsbcPosition = new IMSBCPosition(); + imsbcPosition.Identifier = i.ToString(); + imsbcPosition.HAZ = hazd; + hazd.IMSBCPositions.Add(imsbcPosition); + } + + imsbcPosition.BulkCargoShippingName = bcsn; + reader.Conf.ConfirmText(imsbc_bcsn, bcsn, ExcelReader.ReadState.OK); + imsbcPosition.MHB = reader.ReadBoolean(imsbc_mhb); + imsbcPosition.Quantity_KGM = reader.ReadNumber(imsbc_quantity); + imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition); + reader.Conf.ConfirmText(imsbc_stowagePosition, imsbcPosition.StowagePosition, imsbcPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imsbcPosition.PortOfLoading = reader.ReadText(imsbc_portOfLoading); + reader.Conf.ConfirmText(imsbc_portOfLoading, imsbcPosition.PortOfLoading, imsbcPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imsbcPosition.PortOfDischarge = reader.ReadText(imsbc_portOfDischarge); + reader.Conf.ConfirmText(imsbc_portOfDischarge, imsbcPosition.PortOfDischarge, imsbcPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } + #endregion + + #region MARPOL + // MARPOL + for (int i = 1; i <= 5; i++) + { + string marpol_name = string.Format("HAZD.MARPOL.Name_{0}", i); + string marpol_flash = string.Format("HAZD.MARPOL.Flashpoint_CEL_{0}", i); + string marpol_quantity = string.Format("HAZD.MARPOL.Quantity_KGM_{0}", i); + 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 name = reader.ReadText(marpol_name); + if (name.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(marpol_name, null, ExcelReader.ReadState.WARN); + continue; + } + + MARPOL_Annex_I_Position marpolPosition = hazd.GetMARPOLPositionWithIdentifier(i.ToString()); + if (marpolPosition == null) + { + marpolPosition = new MARPOL_Annex_I_Position(); + marpolPosition.Identifier = i.ToString(); + marpolPosition.HAZ = hazd; + hazd.MARPOLPositions.Add(marpolPosition); + } + + marpolPosition.Name = name; + reader.Conf.ConfirmText(marpol_name, name, ExcelReader.ReadState.OK); + marpolPosition.Flashpoint_CEL = reader.ReadText(marpol_flash); + reader.Conf.ConfirmText(marpol_flash, marpolPosition.Flashpoint_CEL, marpolPosition.Flashpoint_CEL.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + marpolPosition.Quantity_KGM = reader.ReadNumber(marpol_quantity); + marpolPosition.StowagePosition = reader.ReadText(marpol_stowagePosition); + reader.Conf.ConfirmText(marpol_stowagePosition, marpolPosition.StowagePosition, marpolPosition.StowagePosition.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + marpolPosition.PortOfLoading = reader.ReadText(marpol_portOfLoading); + reader.Conf.ConfirmText(marpol_portOfLoading, marpolPosition.PortOfLoading, marpolPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + marpolPosition.PortOfDischarge = reader.ReadText(marpol_portOfDischarge); + reader.Conf.ConfirmText(marpol_portOfDischarge, marpolPosition.PortOfDischarge, marpolPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } + #endregion + } #endregion diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index 7b32e2a6..1fcc2da1 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("3.3.4")] +[assembly: AssemblyInformationalVersion("3.3.5")] [assembly: AssemblyCopyright("Copyright © 2014-2016 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 34da9674..bcd553d4 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.3.4.*")] +[assembly: AssemblyVersion("3.3.5.*")]