From 72c9659cfc159578b0c2831fcdb2ce31426a5f65 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 20 Apr 2017 18:52:18 +0000 Subject: [PATCH] 3.5.4: Kleine Korrekturen an Excel und Versand --- Stundensheet.xlsx | Bin 29503 -> 29550 bytes .../bsmd.ExcelReadService/Confirmation.cs | 1 + nsw/Source/bsmd.ExcelReadService/Util.cs | 4330 ++++++++--------- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.dbh/Request.cs | 2 + 6 files changed, 2170 insertions(+), 2167 deletions(-) diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index c780d770564228eecf71c7d6c93baebba89fe248..81f8bfb489920aee78d28c05dde7207ce1077155 100644 GIT binary patch delta 18107 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 delta 18049 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 diff --git a/nsw/Source/bsmd.ExcelReadService/Confirmation.cs b/nsw/Source/bsmd.ExcelReadService/Confirmation.cs index f0fb58b3..537a6ab4 100644 --- a/nsw/Source/bsmd.ExcelReadService/Confirmation.cs +++ b/nsw/Source/bsmd.ExcelReadService/Confirmation.cs @@ -153,6 +153,7 @@ namespace bsmd.ExcelReadService // construct file path string fileNameWithPath = Path.Combine(Path.GetDirectoryName(receivedFileName), string.Format("{0}_{1}.xlsx", this.templateNames[i], Path.GetFileNameWithoutExtension(receivedFileName))); + this.workbooks[i].Worksheets[1].Select(Type.Missing); this.workbooks[i].SaveAs(fileNameWithPath, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index eda27ad0..a6bc8f61 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -16,626 +16,626 @@ using bsmd.database; namespace bsmd.ExcelReadService { - public class Util - { - private static ILog _log = LogManager.GetLogger(typeof(Util)); + public class Util + { + private static ILog _log = LogManager.GetLogger(typeof(Util)); - internal static bool ProcessSheet(ExcelReader reader, out string readMessage, out MessageCore messageCore) - { - readMessage = "ok"; - - messageCore = Util.LookupMessageCore(reader, out readMessage); + internal static bool ProcessSheet(ExcelReader reader, out string readMessage, out MessageCore messageCore) + { + readMessage = "ok"; + + messageCore = Util.LookupMessageCore(reader, out readMessage); - if (messageCore == null) return false; // cannot work with this sheet or create one + if (messageCore == null) return false; // cannot work with this sheet or create one - // load messages if already present - List messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.EXCEL); + // load messages if already present + List messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.EXCEL); - // start parsing fields - if (messageCore.IsTransit) - { - // scan for transit messages + // start parsing fields + if (messageCore.IsTransit) + { + // scan for transit messages - ScanAGNT(messages, messageCore, reader); + ScanAGNT(messages, messageCore, reader); - ScanNOA_NOD(messages, messageCore, reader); + ScanNOA_NOD(messages, messageCore, reader); - ScanSEC(messages, messageCore, reader); + ScanSEC(messages, messageCore, reader); - ScanPOBA(messages, messageCore, reader); + ScanPOBA(messages, messageCore, reader); - ScanPOBD(messages, messageCore, reader); + ScanPOBD(messages, messageCore, reader); - ScanTIEFA(messages, messageCore, reader); + ScanTIEFA(messages, messageCore, reader); - ScanBKRA(messages, messageCore, reader); + ScanBKRA(messages, messageCore, reader); - ScanSTAT(messages, messageCore, reader); + ScanSTAT(messages, messageCore, reader); - ScanMDH(messages, messageCore, reader); + ScanMDH(messages, messageCore, reader); - ScanCREW(messages, messageCore, reader); + ScanCREW(messages, messageCore, reader); - ScanPAS(messages, messageCore, reader); + ScanPAS(messages, messageCore, reader); - // BPOL nicht im sheet + // BPOL nicht im sheet - ScanTOWA(messages, messageCore, reader); + ScanTOWA(messages, messageCore, reader); - ScanHAZA(messages, messageCore, reader); + ScanHAZA(messages, messageCore, reader); - ScanHAZD(messages, messageCore, reader); + ScanHAZD(messages, messageCore, reader); - } - else - { - // scan for visit messages + } + else + { + // scan for visit messages - ScanAGNT(messages, messageCore, reader); + ScanAGNT(messages, messageCore, reader); - ScanNOA_NOD(messages, messageCore, reader); + ScanNOA_NOD(messages, messageCore, reader); - ScanATA(messages, messageCore, reader); + ScanATA(messages, messageCore, reader); - ScanATD(messages, messageCore, reader); + ScanATD(messages, messageCore, reader); - ScanSEC(messages, messageCore, reader); + ScanSEC(messages, messageCore, reader); - ScanPOBA(messages, messageCore, reader); + ScanPOBA(messages, messageCore, reader); - ScanPOBD(messages, messageCore, reader); + ScanPOBD(messages, messageCore, reader); - ScanNAME(messages, messageCore, reader); + ScanNAME(messages, messageCore, reader); - ScanTIEFA(messages, messageCore, reader); + ScanTIEFA(messages, messageCore, reader); - ScanTIEFD(messages, messageCore, reader); + ScanTIEFD(messages, messageCore, reader); - ScanBKRA(messages, messageCore, reader); + ScanBKRA(messages, messageCore, reader); - ScanBKRD(messages, messageCore, reader); + ScanBKRD(messages, messageCore, reader); - ScanSTAT(messages, messageCore, reader); + ScanSTAT(messages, messageCore, reader); - ScanLADG(messages, messageCore, reader); + ScanLADG(messages, messageCore, reader); - ScanSTO(messages, messageCore, reader); + ScanSTO(messages, messageCore, reader); - ScanINFO(messages, messageCore, reader); + ScanINFO(messages, messageCore, reader); - ScanSERV(messages, messageCore, reader); + ScanSERV(messages, messageCore, reader); - ScanPRE72H(messages, messageCore, reader); + ScanPRE72H(messages, messageCore, reader); - ScanMDH(messages, messageCore, reader); + ScanMDH(messages, messageCore, reader); - ScanWAS(messages, messageCore, reader); + ScanWAS(messages, messageCore, reader); - ScanCREW(messages, messageCore, reader); + ScanCREW(messages, messageCore, reader); - ScanPAS(messages, messageCore, reader); - - ScanBPOL(messages, messageCore, reader); + ScanPAS(messages, messageCore, reader); + + ScanBPOL(messages, messageCore, reader); - ScanTOWA(messages, messageCore, reader); + ScanTOWA(messages, messageCore, reader); - ScanTOWD(messages, messageCore, reader); + ScanTOWD(messages, messageCore, reader); - ScanHAZA(messages, messageCore, reader); + ScanHAZA(messages, messageCore, reader); - ScanHAZD(messages, messageCore, reader); + ScanHAZD(messages, messageCore, reader); - } - - //string sheetVersion = reader.GetCell("Portcall", 2, 1) as string; - //messageCore.SietasSheetVersion = sheetVersion; + } + + //string sheetVersion = reader.GetCell("Portcall", 2, 1) as string; + //messageCore.SietasSheetVersion = sheetVersion; - DBManager.Instance.Save(messageCore); + DBManager.Instance.Save(messageCore); - // save all messages now + // save all messages now - foreach(Message message in messages) - { - message.CreatedBy = "EXCEL"; - DBManager.Instance.Save(message); - message.SaveElements(); - } - - return true; - } + foreach(Message message in messages) + { + message.CreatedBy = "EXCEL"; + DBManager.Instance.Save(message); + message.SaveElements(); + } + + return true; + } - #region ATA + #region ATA - static void ScanATA(List messages, MessageCore messageCore, ExcelReader reader) - { - Message ataMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.ATA); - if (ataMessage.Elements.Count == 0) - { - ATA newATA = new ATA(); - newATA.MessageHeader = ataMessage; - ataMessage.Elements.Add(newATA); - } - ATA ata = ataMessage.Elements[0] as ATA; - Util.ScanMessage(ata, reader); + static void ScanATA(List messages, MessageCore messageCore, ExcelReader reader) + { + Message ataMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.ATA); + if (ataMessage.Elements.Count == 0) + { + ATA newATA = new ATA(); + newATA.MessageHeader = ataMessage; + ataMessage.Elements.Add(newATA); + } + ATA ata = ataMessage.Elements[0] as ATA; + Util.ScanMessage(ata, reader); - if(!ata.ATAPortOfCall.HasValue) - { - reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall"); - } + if(!ata.ATAPortOfCall.HasValue) + { + reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall"); + } - if (!ata.ATAPortOfCall.HasValue && ataMessage.IsNew) - messages.Remove(ataMessage); - } + if (!ata.ATAPortOfCall.HasValue && ataMessage.IsNew) + messages.Remove(ataMessage); + } - #endregion + #endregion - #region ATD + #region ATD - static void ScanATD(List messages, MessageCore messageCore, ExcelReader reader) - { - Message atdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.ATD); - if (atdMessage.Elements.Count == 0) - { - ATD newATD = new ATD(); - newATD.MessageHeader = atdMessage; - atdMessage.Elements.Add(newATD); - } - ATD atd = atdMessage.Elements[0] as ATD; - Util.ScanMessage(atd, reader); + static void ScanATD(List messages, MessageCore messageCore, ExcelReader reader) + { + Message atdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.ATD); + if (atdMessage.Elements.Count == 0) + { + ATD newATD = new ATD(); + newATD.MessageHeader = atdMessage; + atdMessage.Elements.Add(newATD); + } + ATD atd = atdMessage.Elements[0] as ATD; + Util.ScanMessage(atd, reader); - if (!atd.ATDPortOfCall.HasValue) - { - reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall"); - } - - if (!atd.ATDPortOfCall.HasValue && atdMessage.IsNew) - messages.Remove(atdMessage); - } - - #endregion - - #region TIEFA - - static void ScanTIEFA(List messages, MessageCore messageCore, ExcelReader reader) - { - Message tiefaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TIEFA); - if (tiefaMessage.Elements.Count == 0) - { - TIEFA newTIEFA = new TIEFA(); - newTIEFA.MessageHeader = tiefaMessage; - tiefaMessage.Elements.Add(newTIEFA); - } - TIEFA tiefa = tiefaMessage.Elements[0] as TIEFA; - Util.ScanMessage(tiefa, reader); - if (!tiefa.DraughtUponArrival_DMT.HasValue && tiefaMessage.IsNew) - messages.Remove(tiefaMessage); - - reader.Conf.ConfirmNumber("TIEFA.DraughtUponArrival_DMT_DK", tiefa.DraughtUponArrival_DMT, tiefa.DraughtUponArrival_DMT.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); - - } - - #endregion - - #region TIEFD - - static void ScanTIEFD(List messages, MessageCore messageCore, ExcelReader reader) - { - Message tiefdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TIEFD); - if(tiefdMessage.Elements.Count == 0) - { - TIEFD newTIEFD = new TIEFD(); - newTIEFD.MessageHeader = tiefdMessage; - tiefdMessage.Elements.Add(newTIEFD); - } - TIEFD tiefd = tiefdMessage.Elements[0] as TIEFD; - Util.ScanMessage(tiefd, reader); - if (!tiefd.DraughtUponDeparture_DMT.HasValue && tiefdMessage.IsNew) - messages.Remove(tiefdMessage); - - reader.Conf.ConfirmNumber("TIEFD.DraughtUponDeparture_DMT_DK", tiefd.DraughtUponDeparture_DMT, tiefd.DraughtUponDeparture_DMT.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); - - } - - #endregion - - #region NAME - - static void ScanNAME(List messages, MessageCore messageCore, ExcelReader reader) - { - Message nameMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NAME); - if (nameMessage.Elements.Count == 0) - { - NAME newNAME = new NAME(); - newNAME.MessageHeader = nameMessage; - nameMessage.Elements.Add(newNAME); - } - NAME name = nameMessage.Elements[0] as NAME; - Util.ScanMessage(name, reader); - if (name.NameOfMaster.IsNullOrEmpty() && name.IsNew) - messages.Remove(nameMessage); - } - - #endregion - - #region BPOL - - static void ScanBPOL(List messages, MessageCore messageCore, ExcelReader reader) - { - // Die Verarbeitung dieser Nachricht aktuell nur für - Message bpolMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BPOL); - if (bpolMessage.Elements.Count == 0) - { - BPOL newBPOL = new BPOL(); - newBPOL.MessageHeader = bpolMessage; - bpolMessage.Elements.Add(newBPOL); - } - - BPOL bpol = bpolMessage.Elements[0] as BPOL; - Util.ScanMessage(bpol, reader); - - // 19.12.16: Einschleicher-Feld von Klasse POBA übernehmen (anderes ist nicht im Sheet!) - Message pobaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA); - if(pobaMessage.Elements.Count > 0) - { - POBA poba = pobaMessage.Elements[0] as POBA; - bpol.StowawaysOnBoard = (poba.TotalStowawaysOnBoardUponArrival ?? 0) > 0; - } - - // PortOfItinerary - for (int i = 1; i <= 10; i++) - { - string bpolName = string.Format("BPOL.PortOfItineraryName_{0}", i); - string bpolLocode = string.Format("BPOL.PortOfItineraryLoCode_{0}", i); - string bpolETADate = string.Format("BPOL.PortOfItineraryETADate_{0}", i); - string bpolETATime = string.Format("BPOL.PortOfItineraryETATime_{0}", i); - - string bpolNameValue = reader.ReadText(bpolName)?.Trim(); - if (!bpolNameValue.IsNullOrEmpty()) - { - PortOfItinerary poi = bpol.GetSublistElementWithIdentifier(i.ToString()) as PortOfItinerary; - if (poi == null) - { - poi = new PortOfItinerary(); - poi.BPOL = bpol; - poi.Identifier = i.ToString(); - bpol.PortOfItineraries.Add(poi); - } - poi.PortOfItineraryName = bpolNameValue; - reader.Conf.ConfirmText(bpolName, bpolNameValue, ExcelReader.ReadState.OK); - poi.PortOfItineraryLocode = reader.ReadLoCode(bpolLocode); - if (!poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length > 5)) - { - reader.Conf.ConfirmText(bpolLocode, poi.PortOfItineraryLocode, ExcelReader.ReadState.WARN); - } - poi.PortOfItineraryETA = reader.ReadDateTime(bpolETADate, bpolETATime); - } - } - } - - #endregion - - #region POBA - - static void ScanPOBA(List messages, MessageCore messageCore, ExcelReader reader) - { - Message pobaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA); - if(pobaMessage.Elements.Count == 0) - { - POBA newPoba = new POBA(); - newPoba.MessageHeader = pobaMessage; - pobaMessage.Elements.Add(newPoba); - } - - POBA poba = pobaMessage.Elements[0] as POBA; - Util.ScanMessage(poba, reader); - if (((poba.TotalPersonsOnBoardUponArrival ?? 0) == 0) && poba.IsNew) - messages.Remove(pobaMessage); - - reader.Conf.ConfirmNumber("POBA.TotalCrewMembersOnBoardUponArrival_DK", poba.TotalCrewMembersOnBoardUponArrival, - (poba.TotalCrewMembersOnBoardUponArrival.HasValue && poba.TotalCrewMembersOnBoardUponArrival > 0) ? - ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); - - reader.Conf.ConfirmNumber("POBA.TotalPassengersOnBoardUponArrival_DK", poba.TotalPassengersOnBoardUponArrival, - ExcelReader.ReadState.OK); - } - - #endregion - - #region POBD - - static void ScanPOBD(List messages, MessageCore messageCore, ExcelReader reader) - { - Message pobdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBD); - if(pobdMessage.Elements.Count == 0) - { - POBD newPobd = new POBD(); - newPobd.MessageHeader = pobdMessage; - pobdMessage.Elements.Add(newPobd); - } - - POBD pobd = pobdMessage.Elements[0] as POBD; - Util.ScanMessage(pobd, reader); - if (((pobd.TotalPersonsOnBoardUponDeparture ?? 0) == 0) && pobd.IsNew) - messages.Remove(pobdMessage); - - reader.Conf.ConfirmNumber("POBD.TotalCrewMembersOnBoardUponDeparture_DK", pobd.TotalCrewMembersOnBoardUponDeparture, - (pobd.TotalCrewMembersOnBoardUponDeparture.HasValue && pobd.TotalCrewMembersOnBoardUponDeparture > 0) ? - ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); - - reader.Conf.ConfirmNumber("POBD.TotalPassengersOnBoardUponDeparture_DK", pobd.TotalPassengersOnBoardUponDeparture, - ExcelReader.ReadState.OK); - - } - - #endregion - - #region HAZA - - static void ScanHAZA(List messages, MessageCore messageCore, ExcelReader reader) - { - Message hazaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZA); - if(hazaMessage.Elements.Count == 0) - { - HAZ newHaza = new HAZ(); - newHaza.IsDeparture = false; - newHaza.MessageHeader = hazaMessage; - hazaMessage.Elements.Add(newHaza); - } - HAZ haza = hazaMessage.Elements[0] as HAZ; - - haza.NoDPGOnBoardOnArrival = !reader.ReadBoolean("HAZA.DGOnBoard"); - haza.DPGManifestOnBoardOnArrival = reader.ReadBoolean("HAZA.DPGManifestOnBoardOnArrival"); - haza.DPGContactFamilyName = reader.ReadText("HAZA.DPGContactFamilyName"); - reader.Conf.ConfirmText("HAZA.DPGContactFamilyName", haza.DPGContactFamilyName, haza.DPGContactFamilyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - haza.DPGContactPhone = reader.ReadText("HAZA.DPGContactPhone"); - reader.Conf.ConfirmText("HAZA.DPGContactPhone", haza.DPGContactPhone, haza.DPGContactPhone.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - haza.MOUBaltic = reader.ReadBoolean("HAZA.MOUBaltic"); - string shipClass = reader.ReadText("HAZA.INFShipClass"); - if(shipClass.IsNullOrEmpty()) - { - reader.Conf.ConfirmText("HAZA.INFShipClass", null, ExcelReader.ReadState.FAIL); - } - else - { - if (shipClass.Contains('1')) haza.INFShipClass = 1; - if (shipClass.Contains('2')) haza.INFShipClass = 2; - if (shipClass.Contains('3')) haza.INFShipClass = 3; - if (shipClass.Equals("none", StringComparison.OrdinalIgnoreCase)) haza.INFShipClass = 0; - reader.Conf.ConfirmText("HAZA.INFShipClass", shipClass, haza.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); - } - - // 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 imdg_containerNumber = string.Format("HAZA.IMDG.ContainerNumber_{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 = reader.ReadPackingGroup(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); - imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber); - reader.Conf.ConfirmText(imdg_containerNumber, imdgPosition.ContainerNumber, imdgPosition.ContainerNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : 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); + if (!atd.ATDPortOfCall.HasValue) + { + reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall"); + } + + if (!atd.ATDPortOfCall.HasValue && atdMessage.IsNew) + messages.Remove(atdMessage); + } + + #endregion + + #region TIEFA + + static void ScanTIEFA(List messages, MessageCore messageCore, ExcelReader reader) + { + Message tiefaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TIEFA); + if (tiefaMessage.Elements.Count == 0) + { + TIEFA newTIEFA = new TIEFA(); + newTIEFA.MessageHeader = tiefaMessage; + tiefaMessage.Elements.Add(newTIEFA); + } + TIEFA tiefa = tiefaMessage.Elements[0] as TIEFA; + Util.ScanMessage(tiefa, reader); + if (!tiefa.DraughtUponArrival_DMT.HasValue && tiefaMessage.IsNew) + messages.Remove(tiefaMessage); + + reader.Conf.ConfirmNumber("TIEFA.DraughtUponArrival_DMT_DK", tiefa.DraughtUponArrival_DMT, tiefa.DraughtUponArrival_DMT.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + + } + + #endregion + + #region TIEFD + + static void ScanTIEFD(List messages, MessageCore messageCore, ExcelReader reader) + { + Message tiefdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TIEFD); + if(tiefdMessage.Elements.Count == 0) + { + TIEFD newTIEFD = new TIEFD(); + newTIEFD.MessageHeader = tiefdMessage; + tiefdMessage.Elements.Add(newTIEFD); + } + TIEFD tiefd = tiefdMessage.Elements[0] as TIEFD; + Util.ScanMessage(tiefd, reader); + if (!tiefd.DraughtUponDeparture_DMT.HasValue && tiefdMessage.IsNew) + messages.Remove(tiefdMessage); + + reader.Conf.ConfirmNumber("TIEFD.DraughtUponDeparture_DMT_DK", tiefd.DraughtUponDeparture_DMT, tiefd.DraughtUponDeparture_DMT.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + + } + + #endregion + + #region NAME + + static void ScanNAME(List messages, MessageCore messageCore, ExcelReader reader) + { + Message nameMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NAME); + if (nameMessage.Elements.Count == 0) + { + NAME newNAME = new NAME(); + newNAME.MessageHeader = nameMessage; + nameMessage.Elements.Add(newNAME); + } + NAME name = nameMessage.Elements[0] as NAME; + Util.ScanMessage(name, reader); + if (name.NameOfMaster.IsNullOrEmpty() && name.IsNew) + messages.Remove(nameMessage); + } + + #endregion + + #region BPOL + + static void ScanBPOL(List messages, MessageCore messageCore, ExcelReader reader) + { + // Die Verarbeitung dieser Nachricht aktuell nur für + Message bpolMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BPOL); + if (bpolMessage.Elements.Count == 0) + { + BPOL newBPOL = new BPOL(); + newBPOL.MessageHeader = bpolMessage; + bpolMessage.Elements.Add(newBPOL); + } + + BPOL bpol = bpolMessage.Elements[0] as BPOL; + Util.ScanMessage(bpol, reader); + + // 19.12.16: Einschleicher-Feld von Klasse POBA übernehmen (anderes ist nicht im Sheet!) + Message pobaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA); + if(pobaMessage.Elements.Count > 0) + { + POBA poba = pobaMessage.Elements[0] as POBA; + bpol.StowawaysOnBoard = (poba.TotalStowawaysOnBoardUponArrival ?? 0) > 0; + } + + // PortOfItinerary + for (int i = 1; i <= 10; i++) + { + string bpolName = string.Format("BPOL.PortOfItineraryName_{0}", i); + string bpolLocode = string.Format("BPOL.PortOfItineraryLoCode_{0}", i); + string bpolETADate = string.Format("BPOL.PortOfItineraryETADate_{0}", i); + string bpolETATime = string.Format("BPOL.PortOfItineraryETATime_{0}", i); + + string bpolNameValue = reader.ReadText(bpolName)?.Trim(); + if (!bpolNameValue.IsNullOrEmpty()) + { + PortOfItinerary poi = bpol.GetSublistElementWithIdentifier(i.ToString()) as PortOfItinerary; + if (poi == null) + { + poi = new PortOfItinerary(); + poi.BPOL = bpol; + poi.Identifier = i.ToString(); + bpol.PortOfItineraries.Add(poi); + } + poi.PortOfItineraryName = bpolNameValue; + reader.Conf.ConfirmText(bpolName, bpolNameValue, ExcelReader.ReadState.OK); + poi.PortOfItineraryLocode = reader.ReadLoCode(bpolLocode); + if (!poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length > 5)) + { + reader.Conf.ConfirmText(bpolLocode, poi.PortOfItineraryLocode, ExcelReader.ReadState.WARN); + } + poi.PortOfItineraryETA = reader.ReadDateTime(bpolETADate, bpolETATime); + } + } + } + + #endregion + + #region POBA + + static void ScanPOBA(List messages, MessageCore messageCore, ExcelReader reader) + { + Message pobaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA); + if(pobaMessage.Elements.Count == 0) + { + POBA newPoba = new POBA(); + newPoba.MessageHeader = pobaMessage; + pobaMessage.Elements.Add(newPoba); + } + + POBA poba = pobaMessage.Elements[0] as POBA; + Util.ScanMessage(poba, reader); + if (((poba.TotalPersonsOnBoardUponArrival ?? 0) == 0) && poba.IsNew) + messages.Remove(pobaMessage); + + reader.Conf.ConfirmNumber("POBA.TotalCrewMembersOnBoardUponArrival_DK", poba.TotalCrewMembersOnBoardUponArrival, + (poba.TotalCrewMembersOnBoardUponArrival.HasValue && poba.TotalCrewMembersOnBoardUponArrival > 0) ? + ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + + reader.Conf.ConfirmNumber("POBA.TotalPassengersOnBoardUponArrival_DK", poba.TotalPassengersOnBoardUponArrival, + ExcelReader.ReadState.OK); + } + + #endregion + + #region POBD + + static void ScanPOBD(List messages, MessageCore messageCore, ExcelReader reader) + { + Message pobdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBD); + if(pobdMessage.Elements.Count == 0) + { + POBD newPobd = new POBD(); + newPobd.MessageHeader = pobdMessage; + pobdMessage.Elements.Add(newPobd); + } + + POBD pobd = pobdMessage.Elements[0] as POBD; + Util.ScanMessage(pobd, reader); + if (((pobd.TotalPersonsOnBoardUponDeparture ?? 0) == 0) && pobd.IsNew) + messages.Remove(pobdMessage); + + reader.Conf.ConfirmNumber("POBD.TotalCrewMembersOnBoardUponDeparture_DK", pobd.TotalCrewMembersOnBoardUponDeparture, + (pobd.TotalCrewMembersOnBoardUponDeparture.HasValue && pobd.TotalCrewMembersOnBoardUponDeparture > 0) ? + ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + + reader.Conf.ConfirmNumber("POBD.TotalPassengersOnBoardUponDeparture_DK", pobd.TotalPassengersOnBoardUponDeparture, + ExcelReader.ReadState.OK); + + } + + #endregion + + #region HAZA + + static void ScanHAZA(List messages, MessageCore messageCore, ExcelReader reader) + { + Message hazaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZA); + if(hazaMessage.Elements.Count == 0) + { + HAZ newHaza = new HAZ(); + newHaza.IsDeparture = false; + newHaza.MessageHeader = hazaMessage; + hazaMessage.Elements.Add(newHaza); + } + HAZ haza = hazaMessage.Elements[0] as HAZ; + + haza.NoDPGOnBoardOnArrival = !reader.ReadBoolean("HAZA.DGOnBoard"); + haza.DPGManifestOnBoardOnArrival = reader.ReadBoolean("HAZA.DPGManifestOnBoardOnArrival"); + haza.DPGContactFamilyName = reader.ReadText("HAZA.DPGContactFamilyName"); + reader.Conf.ConfirmText("HAZA.DPGContactFamilyName", haza.DPGContactFamilyName, haza.DPGContactFamilyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + haza.DPGContactPhone = reader.ReadText("HAZA.DPGContactPhone"); + reader.Conf.ConfirmText("HAZA.DPGContactPhone", haza.DPGContactPhone, haza.DPGContactPhone.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + haza.MOUBaltic = reader.ReadBoolean("HAZA.MOUBaltic"); + string shipClass = reader.ReadText("HAZA.INFShipClass"); + if(shipClass.IsNullOrEmpty()) + { + reader.Conf.ConfirmText("HAZA.INFShipClass", null, ExcelReader.ReadState.FAIL); + } + else + { + if (shipClass.Contains('1')) haza.INFShipClass = 1; + if (shipClass.Contains('2')) haza.INFShipClass = 2; + if (shipClass.Contains('3')) haza.INFShipClass = 3; + if (shipClass.Equals("none", StringComparison.OrdinalIgnoreCase)) haza.INFShipClass = 0; + reader.Conf.ConfirmText("HAZA.INFShipClass", shipClass, haza.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + } + + // 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 imdg_containerNumber = string.Format("HAZA.IMDG.ContainerNumber_{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 = reader.ReadPackingGroup(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); + imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber); + reader.Conf.ConfirmText(imdg_containerNumber, imdgPosition.ContainerNumber, imdgPosition.ContainerNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : 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); if (marpolPosition.Flashpoint_CEL.IsNullOrEmpty()) { marpolPosition.FlashpointInformation = 0; } // NF // Ableitung Flashpoint-Info: Christin, 22.3.2017 else @@ -649,14 +649,14 @@ namespace bsmd.ExcelReadService } 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 + 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 if(haza.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen { @@ -664,276 +664,276 @@ namespace bsmd.ExcelReadService haza.DPGManifestOnBoardOnArrival = true; } - } + } - #endregion + #endregion - #region HAZD + #region HAZD - static void ScanHAZD(List messages, MessageCore messageCore, ExcelReader reader) - { - Message hazdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZD); - if (hazdMessage.Elements.Count == 0) - { - HAZ newHazd = new HAZ(); - newHazd.IsDeparture = true; - newHazd.MessageHeader = hazdMessage; - hazdMessage.Elements.Add(newHazd); - } - HAZ hazd = hazdMessage.Elements[0] as HAZ; + static void ScanHAZD(List messages, MessageCore messageCore, ExcelReader reader) + { + Message hazdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZD); + if (hazdMessage.Elements.Count == 0) + { + HAZ newHazd = new HAZ(); + newHazd.IsDeparture = true; + newHazd.MessageHeader = hazdMessage; + hazdMessage.Elements.Add(newHazd); + } + HAZ hazd = hazdMessage.Elements[0] as HAZ; - hazd.NoDPGOnBoardOnArrival = !reader.ReadBoolean("HAZD.DGOnBoard"); - 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); - } + hazd.NoDPGOnBoardOnArrival = !reader.ReadBoolean("HAZD.DGOnBoard"); + 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 + // 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 imdg_containerNumber = string.Format("HAZD.IMDG.ContainerNumber_{0}", i); + 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 imdg_containerNumber = string.Format("HAZD.IMDG.ContainerNumber_{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; - } + 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 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 = reader.ReadPackingGroup(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); - imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber); - reader.Conf.ConfirmText(imdg_containerNumber, imdgPosition.ContainerNumber, imdgPosition.ContainerNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); - } + 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 = reader.ReadPackingGroup(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); + imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber); + reader.Conf.ConfirmText(imdg_containerNumber, imdgPosition.ContainerNumber, imdgPosition.ContainerNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); + } - #endregion + #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.Flashpoint_CEL_{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); + #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.Flashpoint_CEL_{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; - } + 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 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.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 + 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); + #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; - } + 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 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 + 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); + #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; - } + 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 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 + 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); + #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; - } + 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); - } + 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.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); if (marpolPosition.Flashpoint_CEL.IsNullOrEmpty()) { marpolPosition.FlashpointInformation = 0; } // NF // Ableitung Flashpoint-Info: Christin, 22.3.2017 else @@ -947,13 +947,13 @@ namespace bsmd.ExcelReadService } 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); - } + 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 if (hazd.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen @@ -963,334 +963,334 @@ namespace bsmd.ExcelReadService } } - #endregion + #endregion - #region INFO + #region INFO - static void ScanINFO(List messages, MessageCore messageCore, ExcelReader reader) - { - Message infoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.INFO); - if(infoMessage.Elements.Count == 0) - { - INFO newINFO = new INFO(); - newINFO.MessageHeader = infoMessage; - infoMessage.Elements.Add(newINFO); - } - INFO info = infoMessage.Elements[0] as INFO; - Util.ScanMessage(info, reader); + static void ScanINFO(List messages, MessageCore messageCore, ExcelReader reader) + { + Message infoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.INFO); + if(infoMessage.Elements.Count == 0) + { + INFO newINFO = new INFO(); + newINFO.MessageHeader = infoMessage; + infoMessage.Elements.Add(newINFO); + } + INFO info = infoMessage.Elements[0] as INFO; + Util.ScanMessage(info, reader); - info.ShippingArea = reader.ReadShippingArea(@"INFO.ShippingArea"); // enum read func + info.ShippingArea = reader.ReadShippingArea(@"INFO.ShippingArea"); // enum read func - bool? fumigatedBulkCargo = reader.ReadBoolean("INFO.FumigatedBulkCargo"); - info.FumigatedBulkCargo = (byte) ((fumigatedBulkCargo ?? false) ? 1 : 0); - // wird nicht wieder entfernt - } + bool? fumigatedBulkCargo = reader.ReadBoolean("INFO.FumigatedBulkCargo"); + info.FumigatedBulkCargo = (byte) ((fumigatedBulkCargo ?? false) ? 1 : 0); + // wird nicht wieder entfernt + } - #endregion + #endregion - #region STAT + #region STAT - static void ScanSTAT(List messages, MessageCore messageCore, ExcelReader reader) - { - Message statMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STAT); - if(statMessage.Elements.Count == 0) - { - STAT newSTAT = new STAT(); - newSTAT.MessageHeader = statMessage; - statMessage.Elements.Add(newSTAT); - } - STAT stat = statMessage.Elements[0] as STAT; - Util.ScanMessage(stat, reader); + static void ScanSTAT(List messages, MessageCore messageCore, ExcelReader reader) + { + Message statMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STAT); + if(statMessage.Elements.Count == 0) + { + STAT newSTAT = new STAT(); + newSTAT.MessageHeader = statMessage; + statMessage.Elements.Add(newSTAT); + } + STAT stat = statMessage.Elements[0] as STAT; + Util.ScanMessage(stat, reader); stat.PortOfRegistry = reader.ReadLoCode("STAT.PortOfRegistry"); stat.Flag = reader.ReadNationality("STAT.Flag"); stat.MMSINumber = reader.ReadTextNoWhitespace("STAT.MMSINumber"); - reader.Conf.ConfirmText("STAT.MMSINumber", stat.MMSINumber, (stat.MMSINumber.IsNullOrEmpty() || (stat.MMSINumber.Length != 9)) ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + reader.Conf.ConfirmText("STAT.MMSINumber", stat.MMSINumber, (stat.MMSINumber.IsNullOrEmpty() || (stat.MMSINumber.Length != 9)) ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - stat.ISMCompanyId = reader.ReadTextNoWhitespace("STAT.ISMCompanyId"); - if(!stat.ISMCompanyId.IsNullOrEmpty() && stat.ISMCompanyId.Length < 7) - { - while (stat.ISMCompanyId.Length < 7) - stat.ISMCompanyId = "0" + stat.ISMCompanyId; - } - reader.Conf.ConfirmText("STAT.ISMCompanyId", stat.ISMCompanyId, stat.ISMCompanyId.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + stat.ISMCompanyId = reader.ReadTextNoWhitespace("STAT.ISMCompanyId"); + if(!stat.ISMCompanyId.IsNullOrEmpty() && stat.ISMCompanyId.Length < 7) + { + while (stat.ISMCompanyId.Length < 7) + stat.ISMCompanyId = "0" + stat.ISMCompanyId; + } + reader.Conf.ConfirmText("STAT.ISMCompanyId", stat.ISMCompanyId, stat.ISMCompanyId.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - string transportMode = reader.ReadText("STAT.TransportMode"); - if(transportMode != null) - { - if (transportMode.Contains("maritime", StringComparison.OrdinalIgnoreCase)) stat.TransportMode = "1"; - if (transportMode.Contains("inland", StringComparison.OrdinalIgnoreCase)) stat.TransportMode = "8"; - } - reader.Conf.ConfirmText("STAT.TransportMode", transportMode, stat.TransportMode.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + string transportMode = reader.ReadText("STAT.TransportMode"); + if(transportMode != null) + { + if (transportMode.Contains("maritime", StringComparison.OrdinalIgnoreCase)) stat.TransportMode = "1"; + if (transportMode.Contains("inland", StringComparison.OrdinalIgnoreCase)) stat.TransportMode = "8"; + } + reader.Conf.ConfirmText("STAT.TransportMode", transportMode, stat.TransportMode.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); if (!stat.ShipType.IsNullOrEmpty() && stat.ShipType.Length > 3) reader.Conf.ConfirmText("STAT.ShipType", stat.ShipType, ExcelReader.ReadState.WARN); - // Vessel Email as HerbergEmail sichern - messageCore.HerbergEmailContactReportingVessel = reader.ReadText("ShipMail"); - reader.Conf.ConfirmText("ShipMail", messageCore.HerbergEmailContactReportingVessel, messageCore.HerbergEmailContactReportingVessel.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + // Vessel Email as HerbergEmail sichern + messageCore.HerbergEmailContactReportingVessel = reader.ReadText("ShipMail"); + reader.Conf.ConfirmText("ShipMail", messageCore.HerbergEmailContactReportingVessel, messageCore.HerbergEmailContactReportingVessel.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - // wird nicht wieder entfernt (core ist auch da!) - - } + // wird nicht wieder entfernt (core ist auch da!) + + } - #endregion + #endregion - #region NOA_NOD + #region NOA_NOD - static void ScanNOA_NOD(List messages, MessageCore messageCore, ExcelReader reader) - { - Message noa_nodMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NOA_NOD); - if (noa_nodMessage.Elements.Count == 0) - { - NOA_NOD newNoa_nod = new NOA_NOD(); - newNoa_nod.MessageHeader = noa_nodMessage; - noa_nodMessage.Elements.Add(newNoa_nod); - } + static void ScanNOA_NOD(List messages, MessageCore messageCore, ExcelReader reader) + { + Message noa_nodMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NOA_NOD); + if (noa_nodMessage.Elements.Count == 0) + { + NOA_NOD newNoa_nod = new NOA_NOD(); + newNoa_nod.MessageHeader = noa_nodMessage; + noa_nodMessage.Elements.Add(newNoa_nod); + } - NOA_NOD noa_nod = noa_nodMessage.Elements[0] as NOA_NOD; - if (messageCore.IsTransit) - { - noa_nod.ETAToKielCanal = messageCore.ETAKielCanal; - } - else - { + NOA_NOD noa_nod = noa_nodMessage.Elements[0] as NOA_NOD; + if (messageCore.IsTransit) + { + noa_nod.ETAToKielCanal = messageCore.ETAKielCanal; + } + else + { - noa_nod.ETAToPortOfCall = messageCore.ETA; - // Zeit muss zurückkonvertiert werden, da toUniversalTime() kodiert - if(noa_nod.ETAToPortOfCall.HasValue) - reader.Conf.ConfirmDate("NOA_NOD.ETAToPortOfCall", noa_nod.ETAToPortOfCall.Value.ToLocalTime(), ExcelReader.ReadState.OK); + noa_nod.ETAToPortOfCall = messageCore.ETA; + // Zeit muss zurückkonvertiert werden, da toUniversalTime() kodiert + if(noa_nod.ETAToPortOfCall.HasValue) + reader.Conf.ConfirmDate("NOA_NOD.ETAToPortOfCall", noa_nod.ETAToPortOfCall.Value.ToLocalTime(), ExcelReader.ReadState.OK); - for (int i = 1; i <= noa_nod.NumberOfExcelRows; i++) - { - string callPurposeDescriptionKey = string.Format("NOA_NOD.CallPuposeDescription_{0}", i); - string callPurposeCodeKey = string.Format("NOA_NOD.CallPurposeCode_{0}", i); - string callPurposeDescription = reader.ReadText(callPurposeDescriptionKey); - string callPurposeCode = reader.ReadText(callPurposeCodeKey); + for (int i = 1; i <= noa_nod.NumberOfExcelRows; i++) + { + string callPurposeDescriptionKey = string.Format("NOA_NOD.CallPuposeDescription_{0}", i); + string callPurposeCodeKey = string.Format("NOA_NOD.CallPurposeCode_{0}", i); + string callPurposeDescription = reader.ReadText(callPurposeDescriptionKey); + string callPurposeCode = reader.ReadText(callPurposeCodeKey); - if (!callPurposeCode.IsNullOrEmpty()) - { + if (!callPurposeCode.IsNullOrEmpty()) + { - CallPurpose callPurpose = noa_nod.GetSublistElementWithIdentifier(i.ToString()) as CallPurpose; - if (callPurpose == null) - { - callPurpose = new CallPurpose(); - callPurpose.NOA_NOD = noa_nod; - callPurpose.Identifier = i.ToString(); - noa_nod.CallPurposes.Add(callPurpose); - } + CallPurpose callPurpose = noa_nod.GetSublistElementWithIdentifier(i.ToString()) as CallPurpose; + if (callPurpose == null) + { + callPurpose = new CallPurpose(); + callPurpose.NOA_NOD = noa_nod; + callPurpose.Identifier = i.ToString(); + noa_nod.CallPurposes.Add(callPurpose); + } - callPurpose.CallPurposeCode = ((int?)reader.ReadNumber(callPurposeCodeKey)) ?? 0; - callPurpose.CallPurposeDescription = callPurposeDescription; - reader.Conf.ConfirmText(callPurposeDescriptionKey, callPurposeDescription, callPurposeDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - if (i == 1) - reader.Conf.ConfirmText("NOA_NOD.CallPuposeDescription_1_DK", callPurposeDescription, callPurposeDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - } - } - } + callPurpose.CallPurposeCode = ((int?)reader.ReadNumber(callPurposeCodeKey)) ?? 0; + callPurpose.CallPurposeDescription = callPurposeDescription; + reader.Conf.ConfirmText(callPurposeDescriptionKey, callPurposeDescription, callPurposeDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + if (i == 1) + reader.Conf.ConfirmText("NOA_NOD.CallPuposeDescription_1_DK", callPurposeDescription, callPurposeDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + } + } + } - string lastPort = reader.ReadText("NOA_NOD.LastPort"); - if (!lastPort.IsNullOrEmpty()) lastPort = lastPort.Trim(); + string lastPort = reader.ReadText("NOA_NOD.LastPort"); + if (!lastPort.IsNullOrEmpty()) lastPort = lastPort.Trim(); - if (lastPort != null) - { - if (LocodeDB.PortNameFromLocode(lastPort) != null) - { - noa_nod.LastPort = lastPort; - } - else - { - List lastPorts = LocodeDB.AllLocodesForCityName(lastPort); - if (lastPorts.Count == 1) - noa_nod.LastPort = lastPorts[0]; - else - _log.WarnFormat("{0} results in {1} possible LOCODES", lastPort, lastPorts.Count); - } - } + if (lastPort != null) + { + if (LocodeDB.PortNameFromLocode(lastPort) != null) + { + noa_nod.LastPort = lastPort; + } + else + { + List lastPorts = LocodeDB.AllLocodesForCityName(lastPort); + if (lastPorts.Count == 1) + noa_nod.LastPort = lastPorts[0]; + else + _log.WarnFormat("{0} results in {1} possible LOCODES", lastPort, lastPorts.Count); + } + } - reader.Conf.ConfirmText("NOA_NOD.LastPort", lastPort, noa_nod.LastPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + reader.Conf.ConfirmText("NOA_NOD.LastPort", lastPort, noa_nod.LastPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - string nextPort = reader.ReadText("NOA_NOD.NextPort"); - if (!nextPort.IsNullOrEmpty()) nextPort = nextPort.Trim(); + string nextPort = reader.ReadText("NOA_NOD.NextPort"); + if (!nextPort.IsNullOrEmpty()) nextPort = nextPort.Trim(); - if (nextPort != null) - { - if (LocodeDB.PortNameFromLocode(nextPort) != null) - { - noa_nod.NextPort = nextPort; - } - else - { - List nextPorts = LocodeDB.AllLocodesForCityName(nextPort); - if (nextPorts.Count == 1) - noa_nod.NextPort = nextPorts[0]; - else - { - if (nextPort.Equals("ZZUKN", StringComparison.OrdinalIgnoreCase)) - noa_nod.NextPort = nextPort; - else - _log.WarnFormat("{0} results in {1} possible LOCODES", nextPort, nextPorts.Count); - } - } - } + if (nextPort != null) + { + if (LocodeDB.PortNameFromLocode(nextPort) != null) + { + noa_nod.NextPort = nextPort; + } + else + { + List nextPorts = LocodeDB.AllLocodesForCityName(nextPort); + if (nextPorts.Count == 1) + noa_nod.NextPort = nextPorts[0]; + else + { + if (nextPort.Equals("ZZUKN", StringComparison.OrdinalIgnoreCase)) + noa_nod.NextPort = nextPort; + else + _log.WarnFormat("{0} results in {1} possible LOCODES", nextPort, nextPorts.Count); + } + } + } - reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, noa_nod.NextPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, noa_nod.NextPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - if(messageCore.IsTransit) - { - noa_nod.ETDFromKielCanal = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall"); - if(noa_nod.ETDFromKielCanal.HasValue) - reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromKielCanal.Value.ToLocalTime(), ExcelReader.ReadState.OK); - else - reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL); - } else - { - noa_nod.ETDFromPortOfCall = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall"); - if(noa_nod.ETDFromPortOfCall.HasValue) - reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromPortOfCall.Value.ToLocalTime(), ExcelReader.ReadState.OK); - else - reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL); - } - - noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort"); - noa_nod.ETAToNextPort = reader.ReadDateTime("NOA_NOD.ETADateToNextPort", "NOA_NOD.ETATimeToNextPort"); + if(messageCore.IsTransit) + { + noa_nod.ETDFromKielCanal = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall"); + if(noa_nod.ETDFromKielCanal.HasValue) + reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromKielCanal.Value.ToLocalTime(), ExcelReader.ReadState.OK); + else + reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL); + } else + { + noa_nod.ETDFromPortOfCall = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall"); + if(noa_nod.ETDFromPortOfCall.HasValue) + reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", noa_nod.ETDFromPortOfCall.Value.ToLocalTime(), ExcelReader.ReadState.OK); + else + reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL); + } + + noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort"); + noa_nod.ETAToNextPort = reader.ReadDateTime("NOA_NOD.ETADateToNextPort", "NOA_NOD.ETATimeToNextPort"); // DK noa_nod.IsAnchored = reader.ReadBoolean("NOA_NOD.IsAnchored", (reader.Mode == ExcelReader.CountryMode.DE)); - } + } - #endregion + #endregion - #region AGNT + #region AGNT - static void ScanAGNT(List messages, MessageCore messageCore, ExcelReader reader) - { - Message agntMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.AGNT); - if(agntMessage.Elements.Count == 0) - { - AGNT newAgnt = new AGNT(); - newAgnt.MessageHeader = agntMessage; - agntMessage.Elements.Add(newAgnt); - } - AGNT agnt = agntMessage.Elements[0] as AGNT; - Util.ScanMessage(agnt, reader); + static void ScanAGNT(List messages, MessageCore messageCore, ExcelReader reader) + { + Message agntMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.AGNT); + if(agntMessage.Elements.Count == 0) + { + AGNT newAgnt = new AGNT(); + newAgnt.MessageHeader = agntMessage; + agntMessage.Elements.Add(newAgnt); + } + AGNT agnt = agntMessage.Elements[0] as AGNT; + Util.ScanMessage(agnt, reader); - if (agnt.AgentLastName.IsNullOrEmpty()) agnt.AgentLastName = "-"; + if (agnt.AgentLastName.IsNullOrEmpty()) agnt.AgentLastName = "-"; - // wird nicht mehr entfernt, egal welche Felder gelesen werden - } + // wird nicht mehr entfernt, egal welche Felder gelesen werden + } - #endregion + #endregion - #region WAS + #region WAS - static void ScanWAS(List messages, MessageCore messageCore, ExcelReader reader) - { - Message wasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.WAS); - if (wasMessage.Elements.Count == 0) - { - WAS newWAS = new WAS(); - newWAS.MessageHeader = wasMessage; - wasMessage.Elements.Add(newWAS); - } - WAS was = wasMessage.Elements[0] as WAS; - Util.ScanMessage(was, reader); - was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery"); - if ((was.LastWasteDisposalPort != null) && (was.LastWasteDisposalPort.Length > 5)) - { - string lastWasteDisposalPort = reader.ReadText("WAS.LastWasteDisposalPort"); - List deliveryLocodes = LocodeDB.AllLocodesForCityName(lastWasteDisposalPort); - if (deliveryLocodes.Count == 1) - was.LastWasteDisposalPort = deliveryLocodes[0]; - } + static void ScanWAS(List messages, MessageCore messageCore, ExcelReader reader) + { + Message wasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.WAS); + if (wasMessage.Elements.Count == 0) + { + WAS newWAS = new WAS(); + newWAS.MessageHeader = wasMessage; + wasMessage.Elements.Add(newWAS); + } + WAS was = wasMessage.Elements[0] as WAS; + Util.ScanMessage(was, reader); + was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery"); + if ((was.LastWasteDisposalPort != null) && (was.LastWasteDisposalPort.Length > 5)) + { + string lastWasteDisposalPort = reader.ReadText("WAS.LastWasteDisposalPort"); + List deliveryLocodes = LocodeDB.AllLocodesForCityName(lastWasteDisposalPort); + if (deliveryLocodes.Count == 1) + was.LastWasteDisposalPort = deliveryLocodes[0]; + } - string wastedispServProvName = reader.ReadText("WAS.WasteDisposalServiceProviderName"); - if (wastedispServProvName != null) - { - if (was.WasteDisposalServiceProvider.Count == 0) - { - WasteDisposalServiceProvider wdsp = new WasteDisposalServiceProvider(); - wdsp.Identifier = "1"; - wdsp.WAS = was; - was.WasteDisposalServiceProvider.Add(wdsp); - } - was.WasteDisposalServiceProvider[0].WasteDisposalServiceProviderName = wastedispServProvName; - was.WasteDisposalServiceProvider[0].WasteDisposalDelivery = was.WasteDisposalDelivery; - } - reader.Conf.ConfirmText("WAS.WasteDisposalServiceProviderName", wastedispServProvName, wastedispServProvName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + string wastedispServProvName = reader.ReadText("WAS.WasteDisposalServiceProviderName"); + if (wastedispServProvName != null) + { + if (was.WasteDisposalServiceProvider.Count == 0) + { + WasteDisposalServiceProvider wdsp = new WasteDisposalServiceProvider(); + wdsp.Identifier = "1"; + wdsp.WAS = was; + was.WasteDisposalServiceProvider.Add(wdsp); + } + was.WasteDisposalServiceProvider[0].WasteDisposalServiceProviderName = wastedispServProvName; + was.WasteDisposalServiceProvider[0].WasteDisposalDelivery = was.WasteDisposalDelivery; + } + reader.Conf.ConfirmText("WAS.WasteDisposalServiceProviderName", wastedispServProvName, wastedispServProvName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - // Waste 1 - 15 - for (int i = 1; i <= was.NumberOfExcelRows; i++) - { - string wastetype = string.Format("WAS.WasteType_{0}", i); - string wasteCode = string.Format("WAS.WasteCode_{0}", i); - string wasteDescription = string.Format("WAS.WasteDescription_{0}", i); - string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i); - 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); + // Waste 1 - 15 + for (int i = 1; i <= was.NumberOfExcelRows; i++) + { + string wastetype = string.Format("WAS.WasteType_{0}", i); + string wasteCode = string.Format("WAS.WasteCode_{0}", i); + string wasteDescription = string.Format("WAS.WasteDescription_{0}", i); + string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i); + 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); - Waste waste = was.GetSublistElementWithIdentifier(i.ToString()) as Waste; - if(waste == null) - { - waste = new Waste(); - waste.Identifier = i.ToString(); - waste.WAS = was; - was.Waste.Add(waste); - } + Waste waste = was.GetSublistElementWithIdentifier(i.ToString()) as Waste; + if(waste == null) + { + waste = new Waste(); + waste.Identifier = i.ToString(); + waste.WAS = was; + was.Waste.Add(waste); + } - waste.WasteType = (int?) reader.ReadNumber(wasteCode); + waste.WasteType = (int?) reader.ReadNumber(wasteCode); if (waste.WasteType.HasValue && (waste.WasteType == 2313)) waste.WasteType = 2600; - if (reader.Mode == ExcelReader.CountryMode.DE) - { - reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplay, ExcelReader.ReadState.OK); - reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK); - } - else if (reader.Mode == ExcelReader.CountryMode.DK) - { - reader.Conf.ConfirmText(wastetype, WAS.DKWasteTypes[i - 1], ExcelReader.ReadState.OK); - reader.Conf.ConfirmNumber(wasteCode, WAS.DKWasteCodes[i - 1], ExcelReader.ReadState.OK); - } + if (reader.Mode == ExcelReader.CountryMode.DE) + { + reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplay, ExcelReader.ReadState.OK); + reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK); + } + else if (reader.Mode == ExcelReader.CountryMode.DK) + { + reader.Conf.ConfirmText(wastetype, WAS.DKWasteTypes[i - 1], ExcelReader.ReadState.OK); + reader.Conf.ConfirmNumber(wasteCode, WAS.DKWasteCodes[i - 1], ExcelReader.ReadState.OK); + } - // Waste description Spezialfälle für DK - waste.WasteDescription = reader.ReadText(wasteDescription); - if (waste.WasteDescription.IsNullOrEmpty()) - { - if (reader.Mode == ExcelReader.CountryMode.DE) - { - waste.WasteDescription = "-"; - } - else if (reader.Mode == ExcelReader.CountryMode.DK) - { - waste.WasteDescription = "-"; - if (i == 6) waste.WasteDescription = "Domestic waste"; - if (i == 9) waste.WasteDescription = "Operational waste"; - } - } - else - { - if (reader.Mode == ExcelReader.CountryMode.DK) - { - if (i == 6) - waste.WasteDescription = string.Format("Domestic waste - {0}", waste.WasteDescription); - if (i == 9) - waste.WasteDescription = string.Format("Operational waste - {0}", waste.WasteDescription); - } - } + // Waste description Spezialfälle für DK + waste.WasteDescription = reader.ReadText(wasteDescription); + if (waste.WasteDescription.IsNullOrEmpty()) + { + if (reader.Mode == ExcelReader.CountryMode.DE) + { + waste.WasteDescription = "-"; + } + else if (reader.Mode == ExcelReader.CountryMode.DK) + { + waste.WasteDescription = "-"; + if (i == 6) waste.WasteDescription = "Domestic waste"; + if (i == 9) waste.WasteDescription = "Operational waste"; + } + } + else + { + if (reader.Mode == ExcelReader.CountryMode.DK) + { + if (i == 6) + waste.WasteDescription = string.Format("Domestic waste - {0}", waste.WasteDescription); + if (i == 9) + waste.WasteDescription = string.Format("Operational waste - {0}", waste.WasteDescription); + } + } - reader.Conf.ConfirmText(wasteDescription, waste.WasteDescription, waste.WasteDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - waste.WasteDisposalAmount_MTQ = reader.ReadNumberDefaultZero(wasteAmount); - waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity); - waste.WasteAmountRetained_MTQ = reader.ReadNumberDefaultZero(wasteRetained); - - waste.WasteDisposalPort = reader.ReadText(wastePort); + reader.Conf.ConfirmText(wasteDescription, waste.WasteDescription, waste.WasteDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + waste.WasteDisposalAmount_MTQ = reader.ReadNumberDefaultZero(wasteAmount); + waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity); + waste.WasteAmountRetained_MTQ = reader.ReadNumberDefaultZero(wasteRetained); + + waste.WasteDisposalPort = reader.ReadText(wastePort); bool isLocode; ExcelReader.ReadState rs; if (waste.WasteDisposalPort.IsNullOrEmpty()) @@ -1303,22 +1303,22 @@ namespace bsmd.ExcelReadService isLocode = (LocodeDB.PortNameFromLocode(waste.WasteDisposalPort) != null); rs = isLocode ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL; } - reader.Conf.ConfirmText(wastePort, waste.WasteDisposalPort, rs); + reader.Conf.ConfirmText(wastePort, waste.WasteDisposalPort, rs); - waste.WasteAmountGeneratedTillNextPort_MTQ = reader.ReadNumberDefaultZero(amountGen); - waste.WasteDisposedAtLastPort_MTQ = reader.ReadNumberDefaultZero(wasteDis); + waste.WasteAmountGeneratedTillNextPort_MTQ = reader.ReadNumberDefaultZero(amountGen); + waste.WasteDisposedAtLastPort_MTQ = reader.ReadNumberDefaultZero(wasteDis); /* - if ((reader.Mode == ExcelReader.CountryMode.DE) && - ((i == 6) || (i == 8) || (i == 9))) - { - waste.WasteDescription = "-"; - waste.WasteDisposalAmount_MTQ = 0; - waste.WasteCapacity_MTQ = 0; - waste.WasteAmountRetained_MTQ = 0; - waste.WasteDisposalPort = "ZZUKN"; - waste.WasteAmountGeneratedTillNextPort_MTQ = 0; - } + if ((reader.Mode == ExcelReader.CountryMode.DE) && + ((i == 6) || (i == 8) || (i == 9))) + { + waste.WasteDescription = "-"; + waste.WasteDisposalAmount_MTQ = 0; + waste.WasteCapacity_MTQ = 0; + waste.WasteAmountRetained_MTQ = 0; + waste.WasteDisposalPort = "ZZUKN"; + waste.WasteAmountGeneratedTillNextPort_MTQ = 0; + } */ if(i==15) // falls letzte Zeile leer, entfernen: Christin 22.3.17 @@ -1354,519 +1354,519 @@ namespace bsmd.ExcelReadService } /* - try - { - // Übergangsphase: Für "DE" werden nur 9 Positionen verwendet - // EMail Christin mit angehängtem Excel Sheet vom 30.1.2017 - if (reader.Mode == ExcelReader.CountryMode.DE) - { - Waste nrSeven = was.GetSublistElementWithIdentifier("7") as Waste; - Waste nrEleven = was.GetSublistElementWithIdentifier("11") as Waste; - nrSeven.WasteDescription = nrEleven.WasteDescription; - nrSeven.WasteDisposalAmount_MTQ = nrEleven.WasteDisposalAmount_MTQ; - nrSeven.WasteCapacity_MTQ = nrEleven.WasteCapacity_MTQ; - nrSeven.WasteAmountRetained_MTQ = nrEleven.WasteAmountRetained_MTQ; - nrSeven.WasteDisposalPort = nrEleven.WasteDisposalPort; - nrSeven.WasteAmountGeneratedTillNextPort_MTQ = nrEleven.WasteAmountGeneratedTillNextPort_MTQ; - // was.Waste.RemoveRange(9, 6); // 9-15 entfernen - } - } - catch(Exception ex) - { - _log.ErrorFormat("Error Waste Workaround DE: {0}", ex.Message); - } + try + { + // Übergangsphase: Für "DE" werden nur 9 Positionen verwendet + // EMail Christin mit angehängtem Excel Sheet vom 30.1.2017 + if (reader.Mode == ExcelReader.CountryMode.DE) + { + Waste nrSeven = was.GetSublistElementWithIdentifier("7") as Waste; + Waste nrEleven = was.GetSublistElementWithIdentifier("11") as Waste; + nrSeven.WasteDescription = nrEleven.WasteDescription; + nrSeven.WasteDisposalAmount_MTQ = nrEleven.WasteDisposalAmount_MTQ; + nrSeven.WasteCapacity_MTQ = nrEleven.WasteCapacity_MTQ; + nrSeven.WasteAmountRetained_MTQ = nrEleven.WasteAmountRetained_MTQ; + nrSeven.WasteDisposalPort = nrEleven.WasteDisposalPort; + nrSeven.WasteAmountGeneratedTillNextPort_MTQ = nrEleven.WasteAmountGeneratedTillNextPort_MTQ; + // was.Waste.RemoveRange(9, 6); // 9-15 entfernen + } + } + catch(Exception ex) + { + _log.ErrorFormat("Error Waste Workaround DE: {0}", ex.Message); + } */ - } - #endregion + } + #endregion - #region MDH + #region MDH - static void ScanMDH(List messages, MessageCore messageCore, ExcelReader reader) - { - Message mdhMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.MDH); - if(mdhMessage.Elements.Count == 0) - { - MDH newMDH = new MDH(); - newMDH.MessageHeader = mdhMessage; - mdhMessage.Elements.Add(newMDH); - } - MDH mdh = mdhMessage.Elements[0] as MDH; - Util.ScanMessage(mdh, reader); + static void ScanMDH(List messages, MessageCore messageCore, ExcelReader reader) + { + Message mdhMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.MDH); + if(mdhMessage.Elements.Count == 0) + { + MDH newMDH = new MDH(); + newMDH.MessageHeader = mdhMessage; + mdhMessage.Elements.Add(newMDH); + } + MDH mdh = mdhMessage.Elements[0] as MDH; + Util.ScanMessage(mdh, reader); - // lt. Mail von Christin am 28.9.2016 - mdh.MDHSimplification = false; - mdh.PortOfCallWhereCompleteMDHNotified = ""; + // lt. Mail von Christin am 28.9.2016 + mdh.MDHSimplification = false; + mdh.PortOfCallWhereCompleteMDHNotified = ""; - - string kuerzelErsteZelle = reader.ReadText("MDH.PortOfCallLast30DaysLocode_1"); + + string kuerzelErsteZelle = reader.ReadText("MDH.PortOfCallLast30DaysLocode_1"); - try - { + try + { - #region PoC last 30 days + #region PoC last 30 days - // lt. Mail von Christin am 11.10.2016 - // "SEC" Mode, die Werte aus last10PortFacilitesCalled (SEC) werden übernommen - // das funktioniert, da SEC vor MDH gelesen wird - if (!kuerzelErsteZelle.IsNullOrEmpty() && kuerzelErsteZelle.Equals("sec", StringComparison.OrdinalIgnoreCase)) - { - Message secMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SEC); - if (secMessage.Elements.Count == 0) return; - SEC sec = secMessage.Elements[0] as SEC; - int i = 1; - foreach (LastTenPortFacilitiesCalled ltpfc in sec.LastTenPortFacilitesCalled) - { - PortOfCallLast30Days poc30d = mdh.GetSublistElementWithIdentifier((i + 1).ToString()) as PortOfCallLast30Days; - if (poc30d == null) - { - poc30d = new PortOfCallLast30Days(); - poc30d.Identifier = (i + 1).ToString(); - poc30d.MDH = mdh; - mdh.PortOfCallLast30Days.Add(poc30d); - } + // lt. Mail von Christin am 11.10.2016 + // "SEC" Mode, die Werte aus last10PortFacilitesCalled (SEC) werden übernommen + // das funktioniert, da SEC vor MDH gelesen wird + if (!kuerzelErsteZelle.IsNullOrEmpty() && kuerzelErsteZelle.Equals("sec", StringComparison.OrdinalIgnoreCase)) + { + Message secMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SEC); + if (secMessage.Elements.Count == 0) return; + SEC sec = secMessage.Elements[0] as SEC; + int i = 1; + foreach (LastTenPortFacilitiesCalled ltpfc in sec.LastTenPortFacilitesCalled) + { + PortOfCallLast30Days poc30d = mdh.GetSublistElementWithIdentifier((i + 1).ToString()) as PortOfCallLast30Days; + if (poc30d == null) + { + poc30d = new PortOfCallLast30Days(); + poc30d.Identifier = (i + 1).ToString(); + poc30d.MDH = mdh; + mdh.PortOfCallLast30Days.Add(poc30d); + } - poc30d.PortOfCallLast30DaysCrewMembersJoined = false; - poc30d.PortOfCallLast30DaysLocode = ltpfc.PortFacilityPortLoCode; - poc30d.PortOfCallLast30DaysDateOfDeparture = ltpfc.PortFacilityDateOfDeparture; - i++; - } - } - else // "normal mode", aus den Zellen lesen - { + poc30d.PortOfCallLast30DaysCrewMembersJoined = false; + poc30d.PortOfCallLast30DaysLocode = ltpfc.PortFacilityPortLoCode; + poc30d.PortOfCallLast30DaysDateOfDeparture = ltpfc.PortFacilityDateOfDeparture; + i++; + } + } + else // "normal mode", aus den Zellen lesen + { - // POC last 30 days - for (int i = 0; i < mdh.NumberOfExcelRows; i++) - { - string portName = string.Format("MDH.PortOfCallLast30DaysPort_{0}", i + 1); - string portCountry = string.Format("MDH.PortOfCallLast30DaysCountry_{0}", i + 1); - string locode = string.Format("MDH.PortOfCallLast30DaysLocode_{0}", i + 1); - string crewJoined = string.Format("MDH.PortOfCallLast30DaysCrewMembersJoined_{0}", i + 1); - string crewName = string.Format("MDH.PortOfCallLast30DaysCrewJoinedShipName_{0}", i + 1); - string depDate = string.Format("MDH.PortOfCallLast30DaysDateOfDeparture_{0}", i + 1); + // POC last 30 days + for (int i = 0; i < mdh.NumberOfExcelRows; i++) + { + string portName = string.Format("MDH.PortOfCallLast30DaysPort_{0}", i + 1); + string portCountry = string.Format("MDH.PortOfCallLast30DaysCountry_{0}", i + 1); + string locode = string.Format("MDH.PortOfCallLast30DaysLocode_{0}", i + 1); + string crewJoined = string.Format("MDH.PortOfCallLast30DaysCrewMembersJoined_{0}", i + 1); + string crewName = string.Format("MDH.PortOfCallLast30DaysCrewJoinedShipName_{0}", i + 1); + string depDate = string.Format("MDH.PortOfCallLast30DaysDateOfDeparture_{0}", i + 1); - PortOfCallLast30Days poc30d = mdh.GetSublistElementWithIdentifier((i + 1).ToString()) as PortOfCallLast30Days; - if (poc30d == null) - { - poc30d = new PortOfCallLast30Days(); - poc30d.Identifier = (i + 1).ToString(); - poc30d.MDH = mdh; - mdh.PortOfCallLast30Days.Add(poc30d); - } + PortOfCallLast30Days poc30d = mdh.GetSublistElementWithIdentifier((i + 1).ToString()) as PortOfCallLast30Days; + if (poc30d == null) + { + poc30d = new PortOfCallLast30Days(); + poc30d.Identifier = (i + 1).ToString(); + poc30d.MDH = mdh; + mdh.PortOfCallLast30Days.Add(poc30d); + } - string pName = reader.ReadText(portName); - string pCountry = reader.ReadText(portCountry); - reader.Conf.ConfirmText(portName, pName, ExcelReader.ReadState.NONE); - reader.Conf.ConfirmText(portCountry, pCountry, ExcelReader.ReadState.NONE); + string pName = reader.ReadText(portName); + string pCountry = reader.ReadText(portCountry); + reader.Conf.ConfirmText(portName, pName, ExcelReader.ReadState.NONE); + reader.Conf.ConfirmText(portCountry, pCountry, ExcelReader.ReadState.NONE); - poc30d.PortOfCallLast30DaysDateOfDeparture = reader.ReadDate(depDate); - poc30d.PortOfCallLast30DaysLocode = reader.ReadLoCode(locode); - poc30d.PortOfCallLast30DaysCrewMembersJoined = reader.ReadBoolean(crewJoined); + poc30d.PortOfCallLast30DaysDateOfDeparture = reader.ReadDate(depDate); + poc30d.PortOfCallLast30DaysLocode = reader.ReadLoCode(locode); + poc30d.PortOfCallLast30DaysCrewMembersJoined = reader.ReadBoolean(crewJoined); - if (poc30d.PortOfCallLast30DaysCrewMembersJoined ?? false) - { - string crewNameString = reader.ReadText(crewName); - if (!crewNameString.IsNullOrEmpty()) - { - // try different separators - string[] crew = crewNameString.Split(';'); - if (crew.Length == 1) - crew = crewNameString.Split(','); + if (poc30d.PortOfCallLast30DaysCrewMembersJoined ?? false) + { + string crewNameString = reader.ReadText(crewName); + if (!crewNameString.IsNullOrEmpty()) + { + // try different separators + string[] crew = crewNameString.Split(';'); + if (crew.Length == 1) + crew = crewNameString.Split(','); - for (int j = 0; j < crew.Length; j++) - { - PortOfCallLast30DaysCrewJoinedShip poc30dCrew = poc30d.GetSublistElementWithIdentifier((j + 1).ToString()) as PortOfCallLast30DaysCrewJoinedShip; - if (poc30dCrew == null) - { - poc30dCrew = new PortOfCallLast30DaysCrewJoinedShip(); - poc30dCrew.Identifier = (j + 1).ToString(); - poc30dCrew.PortOfCallLast30Days = poc30d; - poc30d.CrewJoinedShip.Add(poc30dCrew); - } + for (int j = 0; j < crew.Length; j++) + { + PortOfCallLast30DaysCrewJoinedShip poc30dCrew = poc30d.GetSublistElementWithIdentifier((j + 1).ToString()) as PortOfCallLast30DaysCrewJoinedShip; + if (poc30dCrew == null) + { + poc30dCrew = new PortOfCallLast30DaysCrewJoinedShip(); + poc30dCrew.Identifier = (j + 1).ToString(); + poc30dCrew.PortOfCallLast30Days = poc30d; + poc30d.CrewJoinedShip.Add(poc30dCrew); + } - poc30dCrew.PortOfCallLast30DaysCrewJoinedShipName = crew[j]; - } - reader.Conf.ConfirmText(crewName, crewNameString, ExcelReader.ReadState.OK); - } else - { - reader.Conf.ConfirmText(crewName, null, ExcelReader.ReadState.FAIL); - } - - } + poc30dCrew.PortOfCallLast30DaysCrewJoinedShipName = crew[j]; + } + reader.Conf.ConfirmText(crewName, crewNameString, ExcelReader.ReadState.OK); + } else + { + reader.Conf.ConfirmText(crewName, null, ExcelReader.ReadState.FAIL); + } + + } - // Leer/def. Zeilen entfernen - if (!poc30d.PortOfCallLast30DaysDateOfDeparture.HasValue && (poc30d.PortOfCallLast30DaysLocode == null)) - mdh.PortOfCallLast30Days.Remove(poc30d); - } - } + // Leer/def. Zeilen entfernen + if (!poc30d.PortOfCallLast30DaysDateOfDeparture.HasValue && (poc30d.PortOfCallLast30DaysLocode == null)) + mdh.PortOfCallLast30Days.Remove(poc30d); + } + } - #endregion + #endregion - #region SanitaryMeasures + #region SanitaryMeasures - if (mdh.SanitaryMeasuresApplied ?? false) - { - for (int i = 1; i <= 3; i++) - { - string smType = string.Format("MDH.SanitaryMeasuresType_{0}", i); - string smLocation = string.Format("MDH.SanitaryMeasuresLocation_{0}", i); - string smDate = string.Format("MDH.SanitaryMeasuresDate_{0}", i); + if (mdh.SanitaryMeasuresApplied ?? false) + { + for (int i = 1; i <= 3; i++) + { + string smType = string.Format("MDH.SanitaryMeasuresType_{0}", i); + string smLocation = string.Format("MDH.SanitaryMeasuresLocation_{0}", i); + string smDate = string.Format("MDH.SanitaryMeasuresDate_{0}", i); - SanitaryMeasuresDetail smd = mdh.GetSanitaryMeasuresDetailWithIdentifier(i.ToString()); - if(smd == null) - { - smd = new SanitaryMeasuresDetail(); - smd.Identifier = i.ToString(); - mdh.SanitaryMeasuresDetails.Add(smd); - smd.MDH = mdh; - } + SanitaryMeasuresDetail smd = mdh.GetSanitaryMeasuresDetailWithIdentifier(i.ToString()); + if(smd == null) + { + smd = new SanitaryMeasuresDetail(); + smd.Identifier = i.ToString(); + mdh.SanitaryMeasuresDetails.Add(smd); + smd.MDH = mdh; + } - smd.SanitaryMeasuresType = reader.ReadText(smType); - reader.Conf.ConfirmText(smType, smd.SanitaryMeasuresType, smd.SanitaryMeasuresType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - smd.SanitaryMeasuresLocation = reader.ReadText(smLocation); - reader.Conf.ConfirmText(smLocation, smd.SanitaryMeasuresLocation, smd.SanitaryMeasuresLocation.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - smd.SanitaryMeasuresDate = reader.ReadDate(smDate); - // dont save completely empty structs - if (!smd.SanitaryMeasuresDate.HasValue && smd.SanitaryMeasuresLocation.IsNullOrEmpty() && smd.SanitaryMeasuresType.IsNullOrEmpty()) - mdh.SanitaryMeasuresDetails.Remove(smd); - } - } + smd.SanitaryMeasuresType = reader.ReadText(smType); + reader.Conf.ConfirmText(smType, smd.SanitaryMeasuresType, smd.SanitaryMeasuresType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + smd.SanitaryMeasuresLocation = reader.ReadText(smLocation); + reader.Conf.ConfirmText(smLocation, smd.SanitaryMeasuresLocation, smd.SanitaryMeasuresLocation.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + smd.SanitaryMeasuresDate = reader.ReadDate(smDate); + // dont save completely empty structs + if (!smd.SanitaryMeasuresDate.HasValue && smd.SanitaryMeasuresLocation.IsNullOrEmpty() && smd.SanitaryMeasuresType.IsNullOrEmpty()) + mdh.SanitaryMeasuresDetails.Remove(smd); + } + } - #endregion + #endregion - #region InfectedArea + #region InfectedArea - if (mdh.InfectedAreaVisited ?? false) - { - for (int i = 1; i <= 3; i++) - { - string iaPort = string.Format("MDH.InfectedAreaPort_{0}", i); - string iaDate = string.Format("MDH.InfectedAreaDate_{0}", i); - InfectedArea ia = mdh.GetInfectedAreaWithIdentifier(i.ToString()); - if (ia == null) - { - ia = new InfectedArea(); - ia.Identifier = i.ToString(); - mdh.InfectedAreas.Add(ia); - ia.MDH = mdh; - } - ia.InfectedAreaPort = reader.ReadText(iaPort); - reader.Conf.ConfirmText(iaPort, ia.InfectedAreaPort, ia.InfectedAreaPort.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - ia.InfectedAreaDate = reader.ReadDate(iaDate); - // dont save completely empty structs - if (!ia.InfectedAreaDate.HasValue && ia.InfectedAreaPort.IsNullOrEmpty()) - mdh.InfectedAreas.Remove(ia); - } - } + if (mdh.InfectedAreaVisited ?? false) + { + for (int i = 1; i <= 3; i++) + { + string iaPort = string.Format("MDH.InfectedAreaPort_{0}", i); + string iaDate = string.Format("MDH.InfectedAreaDate_{0}", i); + InfectedArea ia = mdh.GetInfectedAreaWithIdentifier(i.ToString()); + if (ia == null) + { + ia = new InfectedArea(); + ia.Identifier = i.ToString(); + mdh.InfectedAreas.Add(ia); + ia.MDH = mdh; + } + ia.InfectedAreaPort = reader.ReadText(iaPort); + reader.Conf.ConfirmText(iaPort, ia.InfectedAreaPort, ia.InfectedAreaPort.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + ia.InfectedAreaDate = reader.ReadDate(iaDate); + // dont save completely empty structs + if (!ia.InfectedAreaDate.HasValue && ia.InfectedAreaPort.IsNullOrEmpty()) + mdh.InfectedAreas.Remove(ia); + } + } - #endregion + #endregion - #region StowawaysJoiningLocation + #region StowawaysJoiningLocation - if(mdh.StowawaysDetected ?? false) - { - for (int i = 1; i <= 3; i++) - { - string sjlLookup = string.Format("MDH.StowawaysJoiningLocation_{0}", i); - StowawaysJoiningLocation sjl = mdh.GetStowawaysJoiningLocationWithIdentifier(i.ToString()); - if (sjl == null) - { - sjl = new StowawaysJoiningLocation(); - sjl.Identifier = i.ToString(); - sjl.MDH = mdh; - mdh.StowawaysJoiningLocations.Add(sjl); - } + if(mdh.StowawaysDetected ?? false) + { + for (int i = 1; i <= 3; i++) + { + string sjlLookup = string.Format("MDH.StowawaysJoiningLocation_{0}", i); + StowawaysJoiningLocation sjl = mdh.GetStowawaysJoiningLocationWithIdentifier(i.ToString()); + if (sjl == null) + { + sjl = new StowawaysJoiningLocation(); + sjl.Identifier = i.ToString(); + sjl.MDH = mdh; + mdh.StowawaysJoiningLocations.Add(sjl); + } - sjl.StowawayJoiningLocation = reader.ReadText(sjlLookup); - if (sjl.StowawayJoiningLocation.IsNullOrEmpty()) - { - reader.Conf.ConfirmText(sjlLookup, null, ExcelReader.ReadState.WARN); - mdh.StowawaysJoiningLocations.Remove(sjl); - } - else - { - reader.Conf.ConfirmText(sjlLookup, sjl.StowawayJoiningLocation, ExcelReader.ReadState.OK); - } - } - } + sjl.StowawayJoiningLocation = reader.ReadText(sjlLookup); + if (sjl.StowawayJoiningLocation.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(sjlLookup, null, ExcelReader.ReadState.WARN); + mdh.StowawaysJoiningLocations.Remove(sjl); + } + else + { + reader.Conf.ConfirmText(sjlLookup, sjl.StowawayJoiningLocation, ExcelReader.ReadState.OK); + } + } + } - #endregion + #endregion - } - catch(Exception ex) - { - _log.ErrorFormat("Crash during reading of MDH message: {0}", ex); - } + } + catch(Exception ex) + { + _log.ErrorFormat("Crash during reading of MDH message: {0}", ex); + } - // wird nicht wieder entfernt falls keine Daten vorliegen - } + // wird nicht wieder entfernt falls keine Daten vorliegen + } - #endregion + #endregion - #region SEC + #region SEC - static void ScanSEC(List messages, MessageCore messageCore, ExcelReader reader) - { - Message secMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SEC); - if (secMessage.Elements.Count == 0) - { - SEC newSEC = new SEC(); - newSEC.MessageHeader = secMessage; - secMessage.Elements.Add(newSEC); - } - SEC sec = secMessage.Elements[0] as SEC; - Util.ScanMessage(sec, reader); + static void ScanSEC(List messages, MessageCore messageCore, ExcelReader reader) + { + Message secMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SEC); + if (secMessage.Elements.Count == 0) + { + SEC newSEC = new SEC(); + newSEC.MessageHeader = secMessage; + secMessage.Elements.Add(newSEC); + } + SEC sec = secMessage.Elements[0] as SEC; + Util.ScanMessage(sec, reader); - reader.ReadBoolean("SEC.AreMatterToReport"); // das berücksichtigen wir derzeit nicht in der DB (implizit) + reader.ReadBoolean("SEC.AreMatterToReport"); // das berücksichtigen wir derzeit nicht in der DB (implizit) - string isscType = reader.ReadText("SEC.ISSCType"); - if(isscType != null) - { - if (isscType.Equals("full", StringComparison.OrdinalIgnoreCase)) - sec.ISSCType = 0; - if (isscType.Equals("interim", StringComparison.OrdinalIgnoreCase)) - sec.ISSCType = 1; - } + string isscType = reader.ReadText("SEC.ISSCType"); + if(isscType != null) + { + if (isscType.Equals("full", StringComparison.OrdinalIgnoreCase)) + sec.ISSCType = 0; + if (isscType.Equals("interim", StringComparison.OrdinalIgnoreCase)) + sec.ISSCType = 1; + } - string shipsecLevel = reader.ReadText("SEC.CurrentShipSecurityLevel"); - if (shipsecLevel.IsNullOrEmpty()) - { - reader.Conf.ConfirmText("SEC.CurrentShipSecurityLevel", null, ExcelReader.ReadState.FAIL); - } - else - { - if (shipsecLevel.Contains('1')) sec.CurrentShipSecurityLevel = 1; - if (shipsecLevel.Contains('2')) sec.CurrentShipSecurityLevel = 2; - if (shipsecLevel.Contains('3')) sec.CurrentShipSecurityLevel = 3; - reader.Conf.ConfirmText("SEC.CurrentShipSecurityLevel", shipsecLevel, sec.CurrentShipSecurityLevel.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); - } + string shipsecLevel = reader.ReadText("SEC.CurrentShipSecurityLevel"); + if (shipsecLevel.IsNullOrEmpty()) + { + reader.Conf.ConfirmText("SEC.CurrentShipSecurityLevel", null, ExcelReader.ReadState.FAIL); + } + else + { + if (shipsecLevel.Contains('1')) sec.CurrentShipSecurityLevel = 1; + if (shipsecLevel.Contains('2')) sec.CurrentShipSecurityLevel = 2; + if (shipsecLevel.Contains('3')) sec.CurrentShipSecurityLevel = 3; + reader.Conf.ConfirmText("SEC.CurrentShipSecurityLevel", shipsecLevel, sec.CurrentShipSecurityLevel.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + } - reader.Conf.ConfirmText("SEC.ISSCType", isscType, sec.ISSCType.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + reader.Conf.ConfirmText("SEC.ISSCType", isscType, sec.ISSCType.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); - string isscIssuerType = reader.ReadText("SEC.ISSCIssuerType"); - if(isscIssuerType != null) - { - if (isscIssuerType.Equals("rso", StringComparison.OrdinalIgnoreCase)) - sec.ISSCIssuerType = 1; - if (isscIssuerType.Contains("admin", StringComparison.OrdinalIgnoreCase)) - sec.ISSCIssuerType = 0; - } + string isscIssuerType = reader.ReadText("SEC.ISSCIssuerType"); + if(isscIssuerType != null) + { + if (isscIssuerType.Equals("rso", StringComparison.OrdinalIgnoreCase)) + sec.ISSCIssuerType = 1; + if (isscIssuerType.Contains("admin", StringComparison.OrdinalIgnoreCase)) + sec.ISSCIssuerType = 0; + } - reader.Conf.ConfirmText("SEC.ISSCIssuerType", isscIssuerType, sec.ISSCIssuerType.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + reader.Conf.ConfirmText("SEC.ISSCIssuerType", isscIssuerType, sec.ISSCIssuerType.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); - string genDescCargo = reader.ReadText("SEC.GeneralDescriptionOfCargo"); - if(genDescCargo != null) - { - if (genDescCargo.Contains("container", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 0; - if (genDescCargo.Contains("vehicles", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 1; - if (genDescCargo.Contains("convent", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 2; - if (genDescCargo.Contains("dry", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 3; - if (genDescCargo.Contains("liquid", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 4; - if (genDescCargo.Contains("empty", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 5; - } + string genDescCargo = reader.ReadText("SEC.GeneralDescriptionOfCargo"); + if(genDescCargo != null) + { + if (genDescCargo.Contains("container", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 0; + if (genDescCargo.Contains("vehicles", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 1; + if (genDescCargo.Contains("convent", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 2; + if (genDescCargo.Contains("dry", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 3; + if (genDescCargo.Contains("liquid", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 4; + if (genDescCargo.Contains("empty", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 5; + } - reader.Conf.ConfirmText("SEC.GeneralDescriptionOfCargo", genDescCargo, sec.GeneralDescriptionOfCargo.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + reader.Conf.ConfirmText("SEC.GeneralDescriptionOfCargo", genDescCargo, sec.GeneralDescriptionOfCargo.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); - bool? secKielArrival = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Arrival"); - bool? secKielDeparture = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Departure"); + bool? secKielArrival = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Arrival"); + bool? secKielDeparture = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Departure"); - sec.KielCanalPassagePlanned = (secKielArrival ?? false) || (secKielDeparture ?? false); - sec.KielCanalPassagePlannedIncomming = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedIncomming", "SEC.ETATimeKielCanalPassagePlannedIncomming", !(secKielArrival ?? false)); - sec.KielCanalPassagePlannedOutgoing = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedOutgoing", "SEC.ETATimeKielCanalPassagePlannedOutgoing", !(secKielDeparture ?? false)); + sec.KielCanalPassagePlanned = (secKielArrival ?? false) || (secKielDeparture ?? false); + sec.KielCanalPassagePlannedIncomming = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedIncomming", "SEC.ETATimeKielCanalPassagePlannedIncomming", !(secKielArrival ?? false)); + sec.KielCanalPassagePlannedOutgoing = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedOutgoing", "SEC.ETATimeKielCanalPassagePlannedOutgoing", !(secKielDeparture ?? false)); - // Last10PortFacilitesCalled - for (int i = 1; i <= 10; i++) - { - string portName = string.Format("SEC.PortFacilityPortName_{0}", i); - string portCountry = string.Format("SEC.PortFacilityPortCountry_{0}", i); - string portLocode = string.Format("SEC.PortFacilityPortLoCode_{0}", i); - string portDateOfArrival = string.Format("SEC.PortFacilityDateOfArrival_{0}", i); - string portDateOfDeparture = string.Format("SEC.PortFacilityDateOfDeparture_{0}", i); - string portShipSecLevel = string.Format("SEC.PortFacilityShipSecurityLevel_{0}", i); - string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i); - string portSecMatters = string.Format("SEC.PortFacilitySecurityMattersToReport_{0}", i); + // Last10PortFacilitesCalled + for (int i = 1; i <= 10; i++) + { + string portName = string.Format("SEC.PortFacilityPortName_{0}", i); + string portCountry = string.Format("SEC.PortFacilityPortCountry_{0}", i); + string portLocode = string.Format("SEC.PortFacilityPortLoCode_{0}", i); + string portDateOfArrival = string.Format("SEC.PortFacilityDateOfArrival_{0}", i); + string portDateOfDeparture = string.Format("SEC.PortFacilityDateOfDeparture_{0}", i); + string portShipSecLevel = string.Format("SEC.PortFacilityShipSecurityLevel_{0}", i); + string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i); + string portSecMatters = string.Format("SEC.PortFacilitySecurityMattersToReport_{0}", i); - LastTenPortFacilitiesCalled l10fc = sec.GetPortFacilityWithIdentifier(i.ToString()) as LastTenPortFacilitiesCalled; - if (l10fc == null) - { - l10fc = new LastTenPortFacilitiesCalled(); - l10fc.Identifier = i.ToString(); - l10fc.SEC = sec; - sec.LastTenPortFacilitesCalled.Add(l10fc); - } + LastTenPortFacilitiesCalled l10fc = sec.GetPortFacilityWithIdentifier(i.ToString()) as LastTenPortFacilitiesCalled; + if (l10fc == null) + { + l10fc = new LastTenPortFacilitiesCalled(); + l10fc.Identifier = i.ToString(); + l10fc.SEC = sec; + sec.LastTenPortFacilitesCalled.Add(l10fc); + } - l10fc.PortFacilityPortName = reader.ReadText(portName); - reader.Conf.ConfirmText(portName, l10fc.PortFacilityPortName, ExcelReader.ReadState.OK); - l10fc.PortFacilityPortCountry = reader.ReadText(portCountry); - reader.Conf.ConfirmText(portCountry, l10fc.PortFacilityPortCountry, ExcelReader.ReadState.OK); - l10fc.PortFacilityPortLoCode = reader.ReadLoCode(portLocode); - l10fc.PortFacilityDateOfArrival = reader.ReadDate(portDateOfArrival); - l10fc.PortFacilityDateOfDeparture = reader.ReadDate(portDateOfDeparture); + l10fc.PortFacilityPortName = reader.ReadText(portName); + reader.Conf.ConfirmText(portName, l10fc.PortFacilityPortName, ExcelReader.ReadState.OK); + l10fc.PortFacilityPortCountry = reader.ReadText(portCountry); + reader.Conf.ConfirmText(portCountry, l10fc.PortFacilityPortCountry, ExcelReader.ReadState.OK); + l10fc.PortFacilityPortLoCode = reader.ReadLoCode(portLocode); + l10fc.PortFacilityDateOfArrival = reader.ReadDate(portDateOfArrival); + l10fc.PortFacilityDateOfDeparture = reader.ReadDate(portDateOfDeparture); - string sLevel = reader.ReadText(portShipSecLevel); - if(sLevel.IsNullOrEmpty()) - { - reader.Conf.ConfirmText(portShipSecLevel, null, ExcelReader.ReadState.FAIL); - } - else - { - if (sLevel.Contains('1')) l10fc.PortFacilityShipSecurityLevel = 1; - if (sLevel.Contains('2')) l10fc.PortFacilityShipSecurityLevel = 2; - if (sLevel.Contains('3')) l10fc.PortFacilityShipSecurityLevel = 3; - reader.Conf.ConfirmText(portShipSecLevel, sLevel, l10fc.PortFacilityShipSecurityLevel.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); - } - - l10fc.PortFacilityGISISCode = reader.ReadTextNoWhitespace(portGISISCode); + string sLevel = reader.ReadText(portShipSecLevel); + if(sLevel.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(portShipSecLevel, null, ExcelReader.ReadState.FAIL); + } + else + { + if (sLevel.Contains('1')) l10fc.PortFacilityShipSecurityLevel = 1; + if (sLevel.Contains('2')) l10fc.PortFacilityShipSecurityLevel = 2; + if (sLevel.Contains('3')) l10fc.PortFacilityShipSecurityLevel = 3; + reader.Conf.ConfirmText(portShipSecLevel, sLevel, l10fc.PortFacilityShipSecurityLevel.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + } + + l10fc.PortFacilityGISISCode = reader.ReadTextNoWhitespace(portGISISCode); - if (l10fc.PortFacilityGISISCode.IsNullOrEmpty() || l10fc.PortFacilityGISISCode == "0") - l10fc.PortFacilityGISISCode = "0000"; - if((l10fc.PortFacilityGISISCode != null) && (l10fc.PortFacilityGISISCode.Length < 4)) - { - while (l10fc.PortFacilityGISISCode.Length < 4) l10fc.PortFacilityGISISCode = "0" + l10fc.PortFacilityGISISCode; - } - reader.Conf.ConfirmText(portGISISCode, l10fc.PortFacilityGISISCode, l10fc.PortFacilityGISISCode.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + if (l10fc.PortFacilityGISISCode.IsNullOrEmpty() || l10fc.PortFacilityGISISCode == "0") + l10fc.PortFacilityGISISCode = "0000"; + if((l10fc.PortFacilityGISISCode != null) && (l10fc.PortFacilityGISISCode.Length < 4)) + { + while (l10fc.PortFacilityGISISCode.Length < 4) l10fc.PortFacilityGISISCode = "0" + l10fc.PortFacilityGISISCode; + } + reader.Conf.ConfirmText(portGISISCode, l10fc.PortFacilityGISISCode, l10fc.PortFacilityGISISCode.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - l10fc.PortFacilitySecurityMattersToReport = reader.ReadText(portSecMatters); - reader.Conf.ConfirmText(portSecMatters, l10fc.PortFacilitySecurityMattersToReport, l10fc.PortFacilitySecurityMattersToReport.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL :ExcelReader.ReadState.OK); + l10fc.PortFacilitySecurityMattersToReport = reader.ReadText(portSecMatters); + reader.Conf.ConfirmText(portSecMatters, l10fc.PortFacilitySecurityMattersToReport, l10fc.PortFacilitySecurityMattersToReport.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL :ExcelReader.ReadState.OK); - } + } - // Ship2ShipActivities - for (int i = 1; i <= 10; i++) - { - string s2sName = string.Format("SEC.ShipToShipActivityLocationName_{0}", i); - string s2sLocode = string.Format("SEC.ShipToShipActivityLocationLoCode_{0}", i); - string s2sLatitude = string.Format("SEC.ShipToShipActivityLocationCoordinatesLatitude_{0}", i); - string s2sLongitude = string.Format("SEC.ShipToShipActivityLocationCoordinatesLongitude_{0}", i); - string s2sFromDate = string.Format("SEC.ShipToShipActivityDateFrom_{0}", i); - string s2sToDate = string.Format("SEC.ShipToShipActivityDateTo_{0}", i); - string s2sSec = string.Format("SEC.ShipToShipActivitySecurityMattersToReport_{0}", i); - string s2sActivityString = string.Format("SEC.ShipToShipActivityType_{0}", i); - + // Ship2ShipActivities + for (int i = 1; i <= 10; i++) + { + string s2sName = string.Format("SEC.ShipToShipActivityLocationName_{0}", i); + string s2sLocode = string.Format("SEC.ShipToShipActivityLocationLoCode_{0}", i); + string s2sLatitude = string.Format("SEC.ShipToShipActivityLocationCoordinatesLatitude_{0}", i); + string s2sLongitude = string.Format("SEC.ShipToShipActivityLocationCoordinatesLongitude_{0}", i); + string s2sFromDate = string.Format("SEC.ShipToShipActivityDateFrom_{0}", i); + string s2sToDate = string.Format("SEC.ShipToShipActivityDateTo_{0}", i); + string s2sSec = string.Format("SEC.ShipToShipActivitySecurityMattersToReport_{0}", i); + string s2sActivityString = string.Format("SEC.ShipToShipActivityType_{0}", i); + - ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2sActivity = sec.GetShipToShipWithIdentifier(i.ToString()) as ShipToShipActivitiesDuringLastTenPortFacilitiesCalled; - if (s2sActivity == null) - { - s2sActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled(); - s2sActivity.Identifier = i.ToString(); - s2sActivity.SEC = sec; - sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Add(s2sActivity); - } + ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2sActivity = sec.GetShipToShipWithIdentifier(i.ToString()) as ShipToShipActivitiesDuringLastTenPortFacilitiesCalled; + if (s2sActivity == null) + { + s2sActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled(); + s2sActivity.Identifier = i.ToString(); + s2sActivity.SEC = sec; + sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Add(s2sActivity); + } - s2sActivity.ShipToShipActivityLocationName = reader.ReadText(s2sName); - if (s2sActivity.ShipToShipActivityLocationName.IsNullOrEmpty()) - { - sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Remove(s2sActivity); - continue; - } - reader.Conf.ConfirmText(s2sName, s2sActivity.ShipToShipActivityLocationName, ExcelReader.ReadState.OK); + s2sActivity.ShipToShipActivityLocationName = reader.ReadText(s2sName); + if (s2sActivity.ShipToShipActivityLocationName.IsNullOrEmpty()) + { + sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Remove(s2sActivity); + continue; + } + reader.Conf.ConfirmText(s2sName, s2sActivity.ShipToShipActivityLocationName, ExcelReader.ReadState.OK); - s2sActivity.ShipToShipActivityLocationLoCode = reader.ReadLoCode(s2sLocode); - s2sActivity.ShipToShipActivityLocationCoordinatesLatitude = (int?)reader.ReadNumber(s2sLatitude); - // keine "0" (d.h. fehlerhafte Koordinaten) ins ANSW übergeben falls im Sheet nichts ist aber der Reader das aus irgendeinem Grund liest - if (s2sActivity.ShipToShipActivityLocationCoordinatesLatitude.HasValue && s2sActivity.ShipToShipActivityLocationCoordinatesLatitude.Value == 0) - s2sActivity.ShipToShipActivityLocationCoordinatesLatitude = null; - s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = (int?)reader.ReadNumber(s2sLongitude); - if (s2sActivity.ShipToShipActivityLocationCoordinatesLongitude.HasValue && s2sActivity.ShipToShipActivityLocationCoordinatesLongitude.Value == 0) - s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = null; - s2sActivity.ShipToShipActivityDateFrom = reader.ReadDate(s2sFromDate); - s2sActivity.ShipToShipActivityDateTo = reader.ReadDate(s2sToDate); - s2sActivity.ShipToShipActivityType = reader.ReadShip2ShipActivityType(s2sActivityString); - s2sActivity.ShipToShipActivitySecurityMattersToReport = reader.ReadText(s2sSec); - reader.Conf.ConfirmText(s2sSec, s2sActivity.ShipToShipActivitySecurityMattersToReport, s2sActivity.ShipToShipActivitySecurityMattersToReport.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); - } + s2sActivity.ShipToShipActivityLocationLoCode = reader.ReadLoCode(s2sLocode); + s2sActivity.ShipToShipActivityLocationCoordinatesLatitude = (int?)reader.ReadNumber(s2sLatitude); + // keine "0" (d.h. fehlerhafte Koordinaten) ins ANSW übergeben falls im Sheet nichts ist aber der Reader das aus irgendeinem Grund liest + if (s2sActivity.ShipToShipActivityLocationCoordinatesLatitude.HasValue && s2sActivity.ShipToShipActivityLocationCoordinatesLatitude.Value == 0) + s2sActivity.ShipToShipActivityLocationCoordinatesLatitude = null; + s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = (int?)reader.ReadNumber(s2sLongitude); + if (s2sActivity.ShipToShipActivityLocationCoordinatesLongitude.HasValue && s2sActivity.ShipToShipActivityLocationCoordinatesLongitude.Value == 0) + s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = null; + s2sActivity.ShipToShipActivityDateFrom = reader.ReadDate(s2sFromDate); + s2sActivity.ShipToShipActivityDateTo = reader.ReadDate(s2sToDate); + s2sActivity.ShipToShipActivityType = reader.ReadShip2ShipActivityType(s2sActivityString); + s2sActivity.ShipToShipActivitySecurityMattersToReport = reader.ReadText(s2sSec); + reader.Conf.ConfirmText(s2sSec, s2sActivity.ShipToShipActivitySecurityMattersToReport, s2sActivity.ShipToShipActivitySecurityMattersToReport.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); + } - } + } - #endregion + #endregion - #region BKRA + #region BKRA - static void ScanBKRA(List messages, MessageCore messageCore, ExcelReader reader) - { - Message bkraMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRA); - for (int i = 1; i <= bkraMessage.NumberOfExcelRows; i++) - { - string lnQuantity = string.Format("BKRA.BunkerFuelQuantity_TNE_{0}", i); - string lnType = string.Format("BKRA.BunkerFuelType_{0}", i); + static void ScanBKRA(List messages, MessageCore messageCore, ExcelReader reader) + { + Message bkraMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRA); + for (int i = 1; i <= bkraMessage.NumberOfExcelRows; i++) + { + string lnQuantity = string.Format("BKRA.BunkerFuelQuantity_TNE_{0}", i); + string lnType = string.Format("BKRA.BunkerFuelType_{0}", i); BRKA bkra = bkraMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKA; - if (bkra == null) - { - bkra = new BRKA(); - bkra.Identifier = (i).ToString(); - bkra.MessageHeader = bkraMessage; - bkraMessage.Elements.Add(bkra); - } + if (bkra == null) + { + bkra = new BRKA(); + bkra.Identifier = (i).ToString(); + bkra.MessageHeader = bkraMessage; + bkraMessage.Elements.Add(bkra); + } - bkra.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity); + bkra.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity); bkra.BunkerFuelType = reader.ReadText(lnType); - reader.Conf.ConfirmText(lnType, bkra.BunkerFuelType, ExcelReader.ReadState.OK); - - // "OK" Quantity falls Type nicht angegeben - if (bkra.BunkerFuelType.IsNullOrEmpty() && !bkra.BunkerFuelQuantity_TNE.HasValue) - reader.Conf.ConfirmNumber(lnQuantity, null, ExcelReader.ReadState.OK); - // "WARN" Quantity falls Menge aber kein Type - if(bkra.BunkerFuelQuantity_TNE.HasValue && bkra.BunkerFuelType.IsNullOrEmpty()) - { - reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL); - reader.Conf.ConfirmNumber(lnQuantity, bkra.BunkerFuelQuantity_TNE, ExcelReader.ReadState.WARN); - } + reader.Conf.ConfirmText(lnType, bkra.BunkerFuelType, ExcelReader.ReadState.OK); + + // "OK" Quantity falls Type nicht angegeben + if (bkra.BunkerFuelType.IsNullOrEmpty() && !bkra.BunkerFuelQuantity_TNE.HasValue) + reader.Conf.ConfirmNumber(lnQuantity, null, ExcelReader.ReadState.OK); + // "WARN" Quantity falls Menge aber kein Type + if(bkra.BunkerFuelQuantity_TNE.HasValue && bkra.BunkerFuelType.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL); + reader.Conf.ConfirmNumber(lnQuantity, bkra.BunkerFuelQuantity_TNE, ExcelReader.ReadState.WARN); + } - // dont save empty element - if(bkra.IsNew && !bkra.BunkerFuelQuantity_TNE.HasValue && bkra.BunkerFuelType.IsNullOrEmpty()) - bkraMessage.Elements.Remove(bkra); - } - } + // dont save empty element + if(bkra.IsNew && !bkra.BunkerFuelQuantity_TNE.HasValue && bkra.BunkerFuelType.IsNullOrEmpty()) + bkraMessage.Elements.Remove(bkra); + } + } - #endregion + #endregion - #region BKRD + #region BKRD - static void ScanBKRD(List messages, MessageCore messageCore, ExcelReader reader) - { - Message bkrdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRD); - for (int i = 1; i <= bkrdMessage.NumberOfExcelRows; i++) - { - string lnQuantity = string.Format("BKRD.BunkerFuelQuantity_TNE_{0}", i); - string lnType = string.Format("BKRD.BunkerFuelType_{0}", i); - BRKD bkrd = bkrdMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKD; - if (bkrd == null) - { - bkrd = new BRKD(); - bkrd.Identifier = (i).ToString(); - bkrd.MessageHeader = bkrdMessage; - bkrdMessage.Elements.Add(bkrd); - } + static void ScanBKRD(List messages, MessageCore messageCore, ExcelReader reader) + { + Message bkrdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRD); + for (int i = 1; i <= bkrdMessage.NumberOfExcelRows; i++) + { + string lnQuantity = string.Format("BKRD.BunkerFuelQuantity_TNE_{0}", i); + string lnType = string.Format("BKRD.BunkerFuelType_{0}", i); + BRKD bkrd = bkrdMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKD; + if (bkrd == null) + { + bkrd = new BRKD(); + bkrd.Identifier = (i).ToString(); + bkrd.MessageHeader = bkrdMessage; + bkrdMessage.Elements.Add(bkrd); + } - bkrd.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity); - bkrd.BunkerFuelType = reader.ReadText(lnType); - reader.Conf.ConfirmText(lnType, bkrd.BunkerFuelType, ExcelReader.ReadState.OK); + bkrd.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity); + bkrd.BunkerFuelType = reader.ReadText(lnType); + reader.Conf.ConfirmText(lnType, bkrd.BunkerFuelType, ExcelReader.ReadState.OK); - // "OK" Quantity falls Type nicht angegeben - if (bkrd.BunkerFuelType.IsNullOrEmpty() && !bkrd.BunkerFuelQuantity_TNE.HasValue) - reader.Conf.ConfirmNumber(lnQuantity, null, ExcelReader.ReadState.OK); - // "WARN" Quantity falls Menge aber kein Type - if (bkrd.BunkerFuelQuantity_TNE.HasValue && bkrd.BunkerFuelType.IsNullOrEmpty()) - { - reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL); - reader.Conf.ConfirmNumber(lnQuantity, bkrd.BunkerFuelQuantity_TNE, ExcelReader.ReadState.WARN); - } + // "OK" Quantity falls Type nicht angegeben + if (bkrd.BunkerFuelType.IsNullOrEmpty() && !bkrd.BunkerFuelQuantity_TNE.HasValue) + reader.Conf.ConfirmNumber(lnQuantity, null, ExcelReader.ReadState.OK); + // "WARN" Quantity falls Menge aber kein Type + if (bkrd.BunkerFuelQuantity_TNE.HasValue && bkrd.BunkerFuelType.IsNullOrEmpty()) + { + reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL); + reader.Conf.ConfirmNumber(lnQuantity, bkrd.BunkerFuelQuantity_TNE, ExcelReader.ReadState.WARN); + } - // dont save empty element - if (bkrd.IsNew && !bkrd.BunkerFuelQuantity_TNE.HasValue && bkrd.BunkerFuelType.IsNullOrEmpty()) - bkrdMessage.Elements.Remove(bkrd); - } - } + // dont save empty element + if (bkrd.IsNew && !bkrd.BunkerFuelQuantity_TNE.HasValue && bkrd.BunkerFuelType.IsNullOrEmpty()) + bkrdMessage.Elements.Remove(bkrd); + } + } - #endregion + #endregion - #region TOWA + #region TOWA - static void ScanTOWA(List messages, MessageCore messageCore, ExcelReader reader) - { - Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA); + static void ScanTOWA(List messages, MessageCore messageCore, ExcelReader reader) + { + Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA); for (int i = 1; i <= towaMessage.NumberOfExcelRows; i++) { string tName = string.Format("TOWA.TowageOnArrivalName_{0}", i); @@ -1902,16 +1902,16 @@ namespace bsmd.ExcelReadService towa.TowageOnArrivalBeam_MTR = reader.ReadNumber(tBeam); towa.TowageOnArrivalOperatorCompanyName = reader.ReadText(tOp); reader.Conf.ConfirmText(tOp, towa.TowageOnArrivalOperatorCompanyName, towa.TowageOnArrivalOperatorCompanyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - } - } + } + } - #endregion + #endregion - #region TOWD + #region TOWD - static void ScanTOWD(List messages, MessageCore messageCore, ExcelReader reader) - { - Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD); + static void ScanTOWD(List messages, MessageCore messageCore, ExcelReader reader) + { + Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD); for (int i = 1; i <= towdMessage.NumberOfExcelRows; i++) { @@ -1944,121 +1944,121 @@ namespace bsmd.ExcelReadService towd.TowageOnDepartureOperatorCompanyName = reader.ReadText(tOp); reader.Conf.ConfirmText(tOp, towd.TowageOnDepartureOperatorCompanyName, towd.TowageOnDepartureOperatorCompanyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - } - } + } + } - #endregion + #endregion - #region PRE72H + #region PRE72H - static void ScanPRE72H(List messages, MessageCore messageCore, ExcelReader reader) - { - Message pre72hMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PRE72H); - if (pre72hMessage.Elements.Count == 0) - { - PRE72H newPRE72H = new PRE72H(); - newPRE72H.MessageHeader = pre72hMessage; - pre72hMessage.Elements.Add(newPRE72H); - } - PRE72H pre72h = pre72hMessage.Elements[0] as PRE72H; - Util.ScanMessage(pre72h, reader); - // diese Nachricht bleibt auch wenn sie leer ist - pre72h.ConditionCargoBallastTanks = reader.ReadConditionTanks("PRE72H.ConditionCargoBallastTanks"); - pre72h.TankerHullConfiguration = reader.ReadHullConfiguration("PRE72H.TankerHullConfiguration"); - pre72h.PlannedWorks = reader.ReadText("PRE72H.PlannedWorks"); - reader.Conf.ConfirmText("PRE72H.PlannedWorks", pre72h.PlannedWorks, pre72h.PlannedWorks.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - } + static void ScanPRE72H(List messages, MessageCore messageCore, ExcelReader reader) + { + Message pre72hMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PRE72H); + if (pre72hMessage.Elements.Count == 0) + { + PRE72H newPRE72H = new PRE72H(); + newPRE72H.MessageHeader = pre72hMessage; + pre72hMessage.Elements.Add(newPRE72H); + } + PRE72H pre72h = pre72hMessage.Elements[0] as PRE72H; + Util.ScanMessage(pre72h, reader); + // diese Nachricht bleibt auch wenn sie leer ist + pre72h.ConditionCargoBallastTanks = reader.ReadConditionTanks("PRE72H.ConditionCargoBallastTanks"); + pre72h.TankerHullConfiguration = reader.ReadHullConfiguration("PRE72H.TankerHullConfiguration"); + pre72h.PlannedWorks = reader.ReadText("PRE72H.PlannedWorks"); + reader.Conf.ConfirmText("PRE72H.PlannedWorks", pre72h.PlannedWorks, pre72h.PlannedWorks.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } - #endregion + #endregion - #region SERV + #region SERV - static void ScanSERV(List messages, MessageCore messageCore, ExcelReader reader) - { - Message servMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SERV); - if(servMessage.Elements.Count == 0) - { - SERV newSERV = new SERV(); - newSERV.MessageHeader = servMessage; - servMessage.Elements.Add(newSERV); - } - SERV serv = servMessage.Elements[0] as SERV; - Util.ScanMessage(serv, reader); - if (serv.ServiceBeneficiary.IsNullOrEmpty() && serv.ServiceInvoiceRecipient.IsNullOrEmpty()) - servMessage.Elements.Remove(serv); + static void ScanSERV(List messages, MessageCore messageCore, ExcelReader reader) + { + Message servMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SERV); + if(servMessage.Elements.Count == 0) + { + SERV newSERV = new SERV(); + newSERV.MessageHeader = servMessage; + servMessage.Elements.Add(newSERV); + } + SERV serv = servMessage.Elements[0] as SERV; + Util.ScanMessage(serv, reader); + if (serv.ServiceBeneficiary.IsNullOrEmpty() && serv.ServiceInvoiceRecipient.IsNullOrEmpty()) + servMessage.Elements.Remove(serv); if (serv.ServiceBeneficiary.IsNullOrEmpty()) reader.Conf.ConfirmText("SERV.ServiceBeneficiary", null, ExcelReader.ReadState.FAIL); if (serv.ServiceInvoiceRecipient.IsNullOrEmpty()) reader.Conf.ConfirmText("SERV.ServiceInvoiceRecipient", null, ExcelReader.ReadState.FAIL); - } + } - #endregion + #endregion - #region STO + #region STO - static void ScanSTO(List messages, MessageCore messageCore, ExcelReader reader) - { - Message stoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STO); - for(int i=0;i messages, MessageCore messageCore, ExcelReader reader) + { + Message stoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STO); + for(int i=0;i messages, MessageCore messageCore, ExcelReader reader) - { - Message ladgMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.LADG); - for (int i = 0; i < ladgMessage.NumberOfExcelRows; i++) - { - string lnCHT = string.Format("LADG.CargoHandlingType_{0}", i + 1); - string lnType = string.Format("LADG.CargoType_{0}", i + 1); - string lnCNOI = string.Format("LADG.CargoNumberOfItems_{0}", i + 1); - string lnCGQ = string.Format("LADG.CargoGrossQuantity_TNE_{0}", i + 1); - string lnLoad = string.Format("LADG.CargoPortOfLoading_{0}", i + 1); - string lnDis = string.Format("LADG.CargoPortOfDischarge_{0}", i + 1); + static void ScanLADG(List messages, MessageCore messageCore, ExcelReader reader) + { + Message ladgMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.LADG); + for (int i = 0; i < ladgMessage.NumberOfExcelRows; i++) + { + string lnCHT = string.Format("LADG.CargoHandlingType_{0}", i + 1); + string lnType = string.Format("LADG.CargoType_{0}", i + 1); + string lnCNOI = string.Format("LADG.CargoNumberOfItems_{0}", i + 1); + string lnCGQ = string.Format("LADG.CargoGrossQuantity_TNE_{0}", i + 1); + string lnLoad = string.Format("LADG.CargoPortOfLoading_{0}", i + 1); + string lnDis = string.Format("LADG.CargoPortOfDischarge_{0}", i + 1); string lnLACode = string.Format("LADG.CargoLACode_{0}", i + 1); string lnZusatz = string.Format("LADG.CargoTypeZusatz_{0}", i + 1); - LADG ladg = ladgMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as LADG; - if (ladg == null) - { - ladg = new LADG(); - ladg.Identifier = (i + 1).ToString(); - ladg.MessageHeader = ladgMessage; - ladgMessage.Elements.Add(ladg); - } + LADG ladg = ladgMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as LADG; + if (ladg == null) + { + ladg = new LADG(); + ladg.Identifier = (i + 1).ToString(); + ladg.MessageHeader = ladgMessage; + ladgMessage.Elements.Add(ladg); + } - ladg.CargoHandlingType = reader.ReadCargoHandlingType(lnCHT); + ladg.CargoHandlingType = reader.ReadCargoHandlingType(lnCHT); // Transit-Ladung für DE nicht übernehmen! if ((reader.Mode == ExcelReader.CountryMode.DE) && ((ladg.CargoHandlingType ?? 0) == 2)) @@ -2068,28 +2068,28 @@ namespace bsmd.ExcelReadService } ladg.CargoCodeNST = reader.ReadText(lnType); - // Cargo Type Freitext in DK - if(reader.Mode == ExcelReader.CountryMode.DK) - { - reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ladg.CargoCodeNST.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - } - if (reader.Mode == ExcelReader.CountryMode.DE) - { - if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length == 1)) - ladg.CargoCodeNST = "0" + ladg.CargoCodeNST; + // Cargo Type Freitext in DK + if(reader.Mode == ExcelReader.CountryMode.DK) + { + reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ladg.CargoCodeNST.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + } + if (reader.Mode == ExcelReader.CountryMode.DE) + { + if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length == 1)) + ladg.CargoCodeNST = "0" + ladg.CargoCodeNST; - if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length != 2)) - { - ladg.CargoCodeNST = null; // stupid validation - reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.WARN); - } - else - { - reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ExcelReader.ReadState.OK); - } + if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length != 2)) + { + ladg.CargoCodeNST = null; // stupid validation + reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.WARN); + } + else + { + reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ExcelReader.ReadState.OK); + } if (ladg.CargoCodeNST.IsNullOrEmpty()) reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL); - } + } ladg.CargoLACode = reader.ReadCargoLACode(lnLACode); @@ -2113,607 +2113,607 @@ namespace bsmd.ExcelReadService } } - ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI); - ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ); + ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI); + ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ); - ladg.PortOfLoading = reader.ReadText(lnLoad); - if (ladg.PortOfLoading.IsNullOrEmpty()) - reader.Conf.ConfirmText(lnLoad, null, ExcelReader.ReadState.FAIL); - else - reader.Conf.ConfirmText(lnLoad, ladg.PortOfLoading, (ladg.PortOfLoading.Length == 5) ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + ladg.PortOfLoading = reader.ReadText(lnLoad); + if (ladg.PortOfLoading.IsNullOrEmpty()) + reader.Conf.ConfirmText(lnLoad, null, ExcelReader.ReadState.FAIL); + else + reader.Conf.ConfirmText(lnLoad, ladg.PortOfLoading, (ladg.PortOfLoading.Length == 5) ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); - ladg.PortOfDischarge = reader.ReadText(lnDis); - if (ladg.PortOfDischarge.IsNullOrEmpty()) - reader.Conf.ConfirmText(lnDis, null, ExcelReader.ReadState.FAIL); - else - reader.Conf.ConfirmText(lnDis, ladg.PortOfDischarge, (ladg.PortOfDischarge.Length == 5) ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + ladg.PortOfDischarge = reader.ReadText(lnDis); + if (ladg.PortOfDischarge.IsNullOrEmpty()) + reader.Conf.ConfirmText(lnDis, null, ExcelReader.ReadState.FAIL); + else + reader.Conf.ConfirmText(lnDis, ladg.PortOfDischarge, (ladg.PortOfDischarge.Length == 5) ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); - // dont save empty element - if (ladg.IsNew && !ladg.CargoHandlingType.HasValue) - ladgMessage.Elements.Remove(ladg); - } - } + // dont save empty element + if (ladg.IsNew && !ladg.CargoHandlingType.HasValue) + ladgMessage.Elements.Remove(ladg); + } + } - #endregion + #endregion - #region CREW + #region CREW - static void ScanCREW(List messages, MessageCore messageCore, ExcelReader reader) - { - Message crewMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREW); - for (int i = 0; i < crewMessage.NumberOfExcelRows; i++) - { - string crewLastName = string.Format("CREW.CrewMemberLastName_{0}", i + 1); - string crewFirstName = string.Format("CREW.CrewMemberFirstName_{0}", i + 1); - string crewGender = string.Format("CREW.CrewMemberGender_{0}", i + 1); - string crewNationality = string.Format("CREW.CrewMemberNationality_{0}", i + 1); - string crewDuty = string.Format("CREW.CrewMemberDuty_{0}", i + 1); - string crewPlaceOfBirth = string.Format("CREW.CrewMemberPlaceOfBirth_{0}", i + 1); - string crewDateOfBirth = string.Format("CREW.CrewMemberDateOfBirth_{0}", i + 1); - 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); + static void ScanCREW(List messages, MessageCore messageCore, ExcelReader reader) + { + Message crewMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREW); + for (int i = 0; i < crewMessage.NumberOfExcelRows; i++) + { + string crewLastName = string.Format("CREW.CrewMemberLastName_{0}", i + 1); + string crewFirstName = string.Format("CREW.CrewMemberFirstName_{0}", i + 1); + string crewGender = string.Format("CREW.CrewMemberGender_{0}", i + 1); + string crewNationality = string.Format("CREW.CrewMemberNationality_{0}", i + 1); + string crewDuty = string.Format("CREW.CrewMemberDuty_{0}", i + 1); + string crewPlaceOfBirth = string.Format("CREW.CrewMemberPlaceOfBirth_{0}", i + 1); + string crewDateOfBirth = string.Format("CREW.CrewMemberDateOfBirth_{0}", i + 1); + 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 lastName = reader.ReadText(crewLastName); + string lastName = reader.ReadText(crewLastName); string firstName = reader.ReadText(crewFirstName); - if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty()) - { - CREW crew = crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as CREW; - if (crew == null) - { - crew = new CREW(); - crew.Identifier = (i + 1).ToString(); - crew.MessageHeader = crewMessage; - crewMessage.Elements.Add(crew); - } + if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty()) + { + CREW crew = crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as CREW; + if (crew == null) + { + crew = new CREW(); + crew.Identifier = (i + 1).ToString(); + crew.MessageHeader = crewMessage; + crewMessage.Elements.Add(crew); + } - crew.CrewMemberLastName = lastName; - reader.Conf.ConfirmText(crewLastName, lastName, crew.CrewMemberLastName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + crew.CrewMemberLastName = lastName; + reader.Conf.ConfirmText(crewLastName, lastName, crew.CrewMemberLastName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); crew.CrewMemberFirstName = firstName; - reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, crew.CrewMemberFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - crew.CrewMemberGender = reader.ReadGender(crewGender); - crew.CrewMemberDuty = reader.ReadText(crewDuty); - reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK); + reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, crew.CrewMemberFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + crew.CrewMemberGender = reader.ReadGender(crewGender); + crew.CrewMemberDuty = reader.ReadText(crewDuty); + reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK); - crew.CrewMemberNationality = reader.ReadNationality(crewNationality); - crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth); - reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK); + crew.CrewMemberNationality = reader.ReadNationality(crewNationality); + crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth); + reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK); - crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth); + crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth); - crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType); - crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId); - reader.Conf.ConfirmText(crewIdentDocId, crew.CrewMemberIdentityDocumentId, ExcelReader.ReadState.OK); + crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType); + crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId); + reader.Conf.ConfirmText(crewIdentDocId, crew.CrewMemberIdentityDocumentId, ExcelReader.ReadState.OK); - crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo); - reader.Conf.ConfirmText(crewVisaNo, crew.CrewMemberVisaNumber, ExcelReader.ReadState.OK); + crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo); + reader.Conf.ConfirmText(crewVisaNo, crew.CrewMemberVisaNumber, ExcelReader.ReadState.OK); - } - } + } + } - // CREW DEPARTURE - crewMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREWD); - for (int i = 0; i < crewMessage.NumberOfExcelRows; i++) - { - string crewLastName = string.Format("CREWD.CrewMemberLastName_{0}", i + 1); - string crewFirstName = string.Format("CREWD.CrewMemberFirstName_{0}", i + 1); - string crewGender = string.Format("CREWD.CrewMemberGender_{0}", i + 1); - string crewNationality = string.Format("CREWD.CrewMemberNationality_{0}", i + 1); - string crewDuty = string.Format("CREWD.CrewMemberDuty_{0}", i + 1); - string crewPlaceOfBirth = string.Format("CREWD.CrewMemberPlaceOfBirth_{0}", i + 1); - string crewDateOfBirth = string.Format("CREWD.CrewMemberDateOfBirth_{0}", i + 1); - 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); + // CREW DEPARTURE + crewMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREWD); + for (int i = 0; i < crewMessage.NumberOfExcelRows; i++) + { + string crewLastName = string.Format("CREWD.CrewMemberLastName_{0}", i + 1); + string crewFirstName = string.Format("CREWD.CrewMemberFirstName_{0}", i + 1); + string crewGender = string.Format("CREWD.CrewMemberGender_{0}", i + 1); + string crewNationality = string.Format("CREWD.CrewMemberNationality_{0}", i + 1); + string crewDuty = string.Format("CREWD.CrewMemberDuty_{0}", i + 1); + string crewPlaceOfBirth = string.Format("CREWD.CrewMemberPlaceOfBirth_{0}", i + 1); + string crewDateOfBirth = string.Format("CREWD.CrewMemberDateOfBirth_{0}", i + 1); + 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 lastName = reader.ReadText(crewLastName); - if (!lastName.IsNullOrEmpty()) - { - CREWD crew = crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as CREWD; - if (crew == null) - { - crew = new CREWD(); - crew.Identifier = (i + 1).ToString(); - crew.MessageHeader = crewMessage; - crewMessage.Elements.Add(crew); - } + string lastName = reader.ReadText(crewLastName); + if (!lastName.IsNullOrEmpty()) + { + CREWD crew = crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as CREWD; + if (crew == null) + { + crew = new CREWD(); + crew.Identifier = (i + 1).ToString(); + crew.MessageHeader = crewMessage; + crewMessage.Elements.Add(crew); + } - crew.IsDeparture = true; - crew.CrewMemberLastName = lastName; - reader.Conf.ConfirmText(crewLastName, lastName, ExcelReader.ReadState.OK); - crew.CrewMemberFirstName = reader.ReadText(crewFirstName); - reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, crew.CrewMemberFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - crew.CrewMemberGender = reader.ReadGender(crewGender); - crew.CrewMemberDuty = reader.ReadText(crewDuty); - reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK); + crew.IsDeparture = true; + crew.CrewMemberLastName = lastName; + reader.Conf.ConfirmText(crewLastName, lastName, ExcelReader.ReadState.OK); + crew.CrewMemberFirstName = reader.ReadText(crewFirstName); + reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, crew.CrewMemberFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + crew.CrewMemberGender = reader.ReadGender(crewGender); + crew.CrewMemberDuty = reader.ReadText(crewDuty); + reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK); - crew.CrewMemberNationality = reader.ReadNationality(crewNationality); - crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth); - reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK); + crew.CrewMemberNationality = reader.ReadNationality(crewNationality); + crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth); + reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK); - crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth); + crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth); - crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType); - crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId); - reader.Conf.ConfirmText(crewIdentDocId, crew.CrewMemberIdentityDocumentId, ExcelReader.ReadState.OK); + crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType); + crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId); + reader.Conf.ConfirmText(crewIdentDocId, crew.CrewMemberIdentityDocumentId, ExcelReader.ReadState.OK); - crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo); - reader.Conf.ConfirmText(crewVisaNo, crew.CrewMemberVisaNumber, ExcelReader.ReadState.OK); + crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo); + reader.Conf.ConfirmText(crewVisaNo, crew.CrewMemberVisaNumber, ExcelReader.ReadState.OK); - } - } - } + } + } + } - #endregion + #endregion - #region PAS + #region PAS - static void ScanPAS(List messages, MessageCore messageCore, ExcelReader reader) - { - Message pasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PAS); - for (int i = 0; i < pasMessage.NumberOfExcelRows; i++) - { - string pasLastName = string.Format("PAS.PassengerLastName_{0}", i + 1); - string pasFirstName = string.Format("PAS.PassengerFirstName_{0}", i + 1); - string pasGender = string.Format("PAS.PassengerGender_{0}", i + 1); - string pasNationality = string.Format("PAS.PassengerNationality_{0}", i + 1); - string pasEmbarkation = string.Format("PAS.PassengerPortOfEmbarkation_{0}", i + 1); - string pasDebarkation = string.Format("PAS.PassengerPortOfDisembarkation_{0}", i + 1); - string pasTransit = string.Format("PAS.PassengerInTransit_{0}", i + 1); - string pasPlaceOfBirth = string.Format("PAS.PassengerPlaceOfBirth_{0}", i + 1); - string pasDateOfBirth = string.Format("PAS.PassengerDateOfBirth_{0}", i + 1); - 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); + static void ScanPAS(List messages, MessageCore messageCore, ExcelReader reader) + { + Message pasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PAS); + for (int i = 0; i < pasMessage.NumberOfExcelRows; i++) + { + string pasLastName = string.Format("PAS.PassengerLastName_{0}", i + 1); + string pasFirstName = string.Format("PAS.PassengerFirstName_{0}", i + 1); + string pasGender = string.Format("PAS.PassengerGender_{0}", i + 1); + string pasNationality = string.Format("PAS.PassengerNationality_{0}", i + 1); + string pasEmbarkation = string.Format("PAS.PassengerPortOfEmbarkation_{0}", i + 1); + string pasDebarkation = string.Format("PAS.PassengerPortOfDisembarkation_{0}", i + 1); + string pasTransit = string.Format("PAS.PassengerInTransit_{0}", i + 1); + string pasPlaceOfBirth = string.Format("PAS.PassengerPlaceOfBirth_{0}", i + 1); + string pasDateOfBirth = string.Format("PAS.PassengerDateOfBirth_{0}", i + 1); + 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 lastName = reader.ReadText(pasLastName); + string lastName = reader.ReadText(pasLastName); string firstName = reader.ReadText(pasFirstName); - if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty()) - { - PAS pas = pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as PAS; - if (pas == null) - { - pas = new PAS(); - pas.Identifier = (i + 1).ToString(); - pas.MessageHeader = pasMessage; - pasMessage.Elements.Add(pas); - } + if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty()) + { + PAS pas = pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as PAS; + if (pas == null) + { + pas = new PAS(); + pas.Identifier = (i + 1).ToString(); + pas.MessageHeader = pasMessage; + pasMessage.Elements.Add(pas); + } - pas.PassengerLastName = lastName; - reader.Conf.ConfirmText(pasLastName, lastName, lastName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + pas.PassengerLastName = lastName; + reader.Conf.ConfirmText(pasLastName, lastName, lastName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); pas.PassengerFirstName = firstName; - reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); - pas.PassengerGender = reader.ReadGender(pasGender); - pas.PassengerNationality = reader.ReadNationality(pasNationality); - // TODO: Nicht klar ob hier LOCODEs kommen oder nicht - pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation); - reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, ExcelReader.ReadState.OK); - pas.PassengerPortOfDisembarkation = reader.ReadTextNoWhitespace(pasDebarkation); - reader.Conf.ConfirmText(pasDebarkation, pas.PassengerPortOfDisembarkation, ExcelReader.ReadState.OK); - pas.PassengerInTransit = reader.ReadBoolean(pasTransit); - pas.PassengerPlaceOfBirth = reader.ReadText(pasPlaceOfBirth); - reader.Conf.ConfirmText(pasPlaceOfBirth, pas.PassengerPlaceOfBirth, ExcelReader.ReadState.OK); - pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth); - pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType); - pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId); - reader.Conf.ConfirmText(pasIdentDocId, pas.PassengerIdentityDocumentId, ExcelReader.ReadState.OK); - pas.PassengerVisaNumber = reader.ReadText(pasVisaNo); - reader.Conf.ConfirmText(pasVisaNo, pas.PassengerVisaNumber, ExcelReader.ReadState.OK); - } - } + reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + pas.PassengerGender = reader.ReadGender(pasGender); + pas.PassengerNationality = reader.ReadNationality(pasNationality); + // TODO: Nicht klar ob hier LOCODEs kommen oder nicht + pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation); + reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, ExcelReader.ReadState.OK); + pas.PassengerPortOfDisembarkation = reader.ReadTextNoWhitespace(pasDebarkation); + reader.Conf.ConfirmText(pasDebarkation, pas.PassengerPortOfDisembarkation, ExcelReader.ReadState.OK); + pas.PassengerInTransit = reader.ReadBoolean(pasTransit); + pas.PassengerPlaceOfBirth = reader.ReadText(pasPlaceOfBirth); + reader.Conf.ConfirmText(pasPlaceOfBirth, pas.PassengerPlaceOfBirth, ExcelReader.ReadState.OK); + pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth); + pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType); + pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId); + reader.Conf.ConfirmText(pasIdentDocId, pas.PassengerIdentityDocumentId, ExcelReader.ReadState.OK); + pas.PassengerVisaNumber = reader.ReadText(pasVisaNo); + reader.Conf.ConfirmText(pasVisaNo, pas.PassengerVisaNumber, ExcelReader.ReadState.OK); + } + } - // PASSENGER DEPARTURE - pasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PASD); - for (int i = 0; i < pasMessage.NumberOfExcelRows; i++) - { - string pasLastName = string.Format("PASD.PassengerLastName_{0}", i + 1); - string pasFirstName = string.Format("PASD.PassengerFirstName_{0}", i + 1); - string pasGender = string.Format("PASD.PassengerGender_{0}", i + 1); - string pasNationality = string.Format("PASD.PassengerNationality_{0}", i + 1); - string pasEmbarkation = string.Format("PASD.PassengerPortOfEmbarkation_{0}", i + 1); - string pasDebarkation = string.Format("PASD.PassengerPortOfDisembarkation_{0}", i + 1); - string pasTransit = string.Format("PASD.PassengerInTransit_{0}", i + 1); - string pasPlaceOfBirth = string.Format("PASD.PassengerPlaceOfBirth_{0}", i + 1); - string pasDateOfBirth = string.Format("PASD.PassengerDateOfBirth_{0}", i + 1); - 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); + // PASSENGER DEPARTURE + pasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PASD); + for (int i = 0; i < pasMessage.NumberOfExcelRows; i++) + { + string pasLastName = string.Format("PASD.PassengerLastName_{0}", i + 1); + string pasFirstName = string.Format("PASD.PassengerFirstName_{0}", i + 1); + string pasGender = string.Format("PASD.PassengerGender_{0}", i + 1); + string pasNationality = string.Format("PASD.PassengerNationality_{0}", i + 1); + string pasEmbarkation = string.Format("PASD.PassengerPortOfEmbarkation_{0}", i + 1); + string pasDebarkation = string.Format("PASD.PassengerPortOfDisembarkation_{0}", i + 1); + string pasTransit = string.Format("PASD.PassengerInTransit_{0}", i + 1); + string pasPlaceOfBirth = string.Format("PASD.PassengerPlaceOfBirth_{0}", i + 1); + string pasDateOfBirth = string.Format("PASD.PassengerDateOfBirth_{0}", i + 1); + 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 lastName = reader.ReadText(pasLastName); - if (!lastName.IsNullOrEmpty()) - { - PASD pas = pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as PASD; - if (pas == null) - { - pas = new PASD(); - pas.Identifier = (i + 1).ToString(); - pas.MessageHeader = pasMessage; - pasMessage.Elements.Add(pas); - } + string lastName = reader.ReadText(pasLastName); + if (!lastName.IsNullOrEmpty()) + { + PASD pas = pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as PASD; + if (pas == null) + { + pas = new PASD(); + pas.Identifier = (i + 1).ToString(); + pas.MessageHeader = pasMessage; + pasMessage.Elements.Add(pas); + } - pas.IsDeparture = true; + pas.IsDeparture = true; - pas.PassengerLastName = lastName; - reader.Conf.ConfirmText(pasLastName, lastName, ExcelReader.ReadState.OK); - pas.PassengerFirstName = reader.ReadText(pasFirstName); - reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - pas.PassengerGender = reader.ReadGender(pasGender); - pas.PassengerNationality = reader.ReadNationality(pasNationality); - // TODO: Nicht klar ob hier LOCODEs kommen oder nicht - pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation); - reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, ExcelReader.ReadState.OK); - pas.PassengerPortOfDisembarkation = reader.ReadTextNoWhitespace(pasDebarkation); - reader.Conf.ConfirmText(pasDebarkation, pas.PassengerPortOfDisembarkation, ExcelReader.ReadState.OK); - pas.PassengerInTransit = reader.ReadBoolean(pasTransit); - pas.PassengerPlaceOfBirth = reader.ReadText(pasPlaceOfBirth); - reader.Conf.ConfirmText(pasPlaceOfBirth, pas.PassengerPlaceOfBirth, ExcelReader.ReadState.OK); - pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth); - pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType); - pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId); - reader.Conf.ConfirmText(pasIdentDocId, pas.PassengerIdentityDocumentId, ExcelReader.ReadState.OK); - pas.PassengerVisaNumber = reader.ReadText(pasVisaNo); - reader.Conf.ConfirmText(pasVisaNo, pas.PassengerVisaNumber, ExcelReader.ReadState.OK); - } - } + pas.PassengerLastName = lastName; + reader.Conf.ConfirmText(pasLastName, lastName, ExcelReader.ReadState.OK); + pas.PassengerFirstName = reader.ReadText(pasFirstName); + reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + pas.PassengerGender = reader.ReadGender(pasGender); + pas.PassengerNationality = reader.ReadNationality(pasNationality); + // TODO: Nicht klar ob hier LOCODEs kommen oder nicht + pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation); + reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, ExcelReader.ReadState.OK); + pas.PassengerPortOfDisembarkation = reader.ReadTextNoWhitespace(pasDebarkation); + reader.Conf.ConfirmText(pasDebarkation, pas.PassengerPortOfDisembarkation, ExcelReader.ReadState.OK); + pas.PassengerInTransit = reader.ReadBoolean(pasTransit); + pas.PassengerPlaceOfBirth = reader.ReadText(pasPlaceOfBirth); + reader.Conf.ConfirmText(pasPlaceOfBirth, pas.PassengerPlaceOfBirth, ExcelReader.ReadState.OK); + pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth); + pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType); + pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId); + reader.Conf.ConfirmText(pasIdentDocId, pas.PassengerIdentityDocumentId, ExcelReader.ReadState.OK); + pas.PassengerVisaNumber = reader.ReadText(pasVisaNo); + reader.Conf.ConfirmText(pasVisaNo, pas.PassengerVisaNumber, ExcelReader.ReadState.OK); + } + } - } + } - #endregion + #endregion - #region ScanMessage (generic) + #region ScanMessage (generic) - private static void ScanMessage(DatabaseEntity dbEntity, ExcelReader reader) - { - Type objType = dbEntity.GetType(); - List props = new List(); + private static void ScanMessage(DatabaseEntity dbEntity, ExcelReader reader) + { + Type objType = dbEntity.GetType(); + List props = new List(); - // add lookup properties to scan list - props.AddRange(objType.GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(LookupNameAttribute)))); + // add lookup properties to scan list + props.AddRange(objType.GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(LookupNameAttribute)))); - foreach (PropertyInfo property in props) - { - object propValue = property.GetValue(dbEntity, null); - string value = (propValue == null) ? string.Empty : propValue.ToString(); - LookupNameAttribute lookupNameAttribute = Attribute.GetCustomAttribute(property, typeof(LookupNameAttribute)) as LookupNameAttribute; - if (property.PropertyType == typeof(DateTime?)) - { - DateTime? sheetValue = reader.ReadDate(lookupNameAttribute.LookupName); - if (sheetValue != null) - { - property.SetValue(dbEntity, sheetValue); - reader.Conf.ConfirmDate(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); - } - else - { - reader.Conf.ConfirmDate(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); - } + foreach (PropertyInfo property in props) + { + object propValue = property.GetValue(dbEntity, null); + string value = (propValue == null) ? string.Empty : propValue.ToString(); + LookupNameAttribute lookupNameAttribute = Attribute.GetCustomAttribute(property, typeof(LookupNameAttribute)) as LookupNameAttribute; + if (property.PropertyType == typeof(DateTime?)) + { + DateTime? sheetValue = reader.ReadDate(lookupNameAttribute.LookupName); + if (sheetValue != null) + { + property.SetValue(dbEntity, sheetValue); + reader.Conf.ConfirmDate(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); + } + else + { + reader.Conf.ConfirmDate(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); + } - } - else if (property.PropertyType == typeof(double?)) - { - double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName); - if (sheetValue != null) - { - property.SetValue(dbEntity, sheetValue); - reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); - } - else - { - reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); - } - } - else if (property.PropertyType == typeof(string)) - { - string sheetValue = reader.ReadText(lookupNameAttribute.LookupName); - if (sheetValue != null) - { - property.SetValue(dbEntity, sheetValue); - reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); - } - else - { - reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); - } - } - else if (property.PropertyType == typeof(int?)) - { - double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName); - if (sheetValue.HasValue) - { - property.SetValue(dbEntity, (int)sheetValue.Value); - reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); - } - else - { - reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); - } - } - else if (property.PropertyType == typeof(byte?)) - { - double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName); - if (sheetValue.HasValue) - { - property.SetValue(dbEntity, (byte)sheetValue.Value); - reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); - } - else - { - reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); - } + } + else if (property.PropertyType == typeof(double?)) + { + double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName); + if (sheetValue != null) + { + property.SetValue(dbEntity, sheetValue); + reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); + } + else + { + reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); + } + } + else if (property.PropertyType == typeof(string)) + { + string sheetValue = reader.ReadText(lookupNameAttribute.LookupName); + if (sheetValue != null) + { + property.SetValue(dbEntity, sheetValue); + reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); + } + else + { + reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); + } + } + else if (property.PropertyType == typeof(int?)) + { + double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName); + if (sheetValue.HasValue) + { + property.SetValue(dbEntity, (int)sheetValue.Value); + reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); + } + else + { + reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); + } + } + else if (property.PropertyType == typeof(byte?)) + { + double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName); + if (sheetValue.HasValue) + { + property.SetValue(dbEntity, (byte)sheetValue.Value); + reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.OK); + } + else + { + reader.Conf.ConfirmNumber(lookupNameAttribute.LookupName, sheetValue, ExcelReader.ReadState.WARN); + } - } - else if (property.PropertyType == typeof(Boolean?)) - { - bool? sheetValue = reader.ReadBoolean(lookupNameAttribute.LookupName); - string boolStringValue = reader.ReadText(lookupNameAttribute.LookupName); - if (sheetValue.HasValue) { - property.SetValue(dbEntity, sheetValue); - reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue.Value ? "Y" : "N", - ExcelReader.ReadState.OK); - } - else - { - reader.Conf.ConfirmText(lookupNameAttribute.LookupName, boolStringValue, ExcelReader.ReadState.WARN); - } - } - else - { - _log.DebugFormat("unhandled property type: {0}", property.PropertyType); - } - - } + } + else if (property.PropertyType == typeof(Boolean?)) + { + bool? sheetValue = reader.ReadBoolean(lookupNameAttribute.LookupName); + string boolStringValue = reader.ReadText(lookupNameAttribute.LookupName); + if (sheetValue.HasValue) { + property.SetValue(dbEntity, sheetValue); + reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue.Value ? "Y" : "N", + ExcelReader.ReadState.OK); + } + else + { + reader.Conf.ConfirmText(lookupNameAttribute.LookupName, boolStringValue, ExcelReader.ReadState.WARN); + } + } + else + { + _log.DebugFormat("unhandled property type: {0}", property.PropertyType); + } + + } - } + } - #endregion + #endregion - #region LookupMessageCore + #region LookupMessageCore - /// - /// Check with cell values if this message core is already in our DB - /// - private static MessageCore LookupMessageCore(ExcelReader reader, out string message) - { - // lookup using field values - MessageCore result = null; - DateTime? eta = null; - string poc = null; - string imo = null; - message = string.Empty; - bool isTransit = false; + /// + /// Check with cell values if this message core is already in our DB + /// + private static MessageCore LookupMessageCore(ExcelReader reader, out string message) + { + // lookup using field values + MessageCore result = null; + DateTime? eta = null; + string poc = null; + string imo = null; + message = string.Empty; + bool isTransit = false; - // first check with visit/transit ID - string visitTransitId = reader.ReadText("ID"); + // first check with visit/transit ID + string visitTransitId = reader.ReadText("ID"); if (visitTransitId != null) - { - if (bsmd.database.Util.IsVisitId(visitTransitId)) - { - result = DBManager.Instance.GetMessageCoreByVisitId(visitTransitId); - } - else if (bsmd.database.Util.IsTransitId(visitTransitId)) - { - result = DBManager.Instance.GetMessageCoreByTransitId(visitTransitId); - } - } + { + if (bsmd.database.Util.IsVisitId(visitTransitId)) + { + result = DBManager.Instance.GetMessageCoreByVisitId(visitTransitId); + } + else if (bsmd.database.Util.IsTransitId(visitTransitId)) + { + result = DBManager.Instance.GetMessageCoreByTransitId(visitTransitId); + } + } - if (result != null) - { - // setup returning confirmation sheets according to PoC - if (result.PoC.Substring(0, 2) == "DK") - reader.SetConfirmation(Properties.Settings.Default.ConfirmationDK); - else - reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); + if (result != null) + { + // setup returning confirmation sheets according to PoC + if (result.PoC.Substring(0, 2) == "DK") + reader.SetConfirmation(Properties.Settings.Default.ConfirmationDK); + else + reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); - // copy poc/imo/eta to return sheet - poc = reader.ReadText("Visit.PortOfCall"); - reader.Conf.ConfirmText("Visit.PortOfCall", poc, ExcelReader.ReadState.OK); - reader.Conf.ConfirmText("Visit.PortOfCall_DK", poc, ExcelReader.ReadState.OK); - imo = reader.ReadText("Visit.IMONumber"); - reader.Conf.ConfirmText("Visit.IMONumber", imo, ExcelReader.ReadState.OK); - eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); - result.HerbergReportType = reader.ReadText("ReferenceNumber"); - reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - } - else - { - // lookup poc, imo, eta - poc = reader.ReadText("Visit.PortOfCall"); + // copy poc/imo/eta to return sheet + poc = reader.ReadText("Visit.PortOfCall"); + reader.Conf.ConfirmText("Visit.PortOfCall", poc, ExcelReader.ReadState.OK); + reader.Conf.ConfirmText("Visit.PortOfCall_DK", poc, ExcelReader.ReadState.OK); + imo = reader.ReadText("Visit.IMONumber"); + reader.Conf.ConfirmText("Visit.IMONumber", imo, ExcelReader.ReadState.OK); + eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); + result.HerbergReportType = reader.ReadText("ReferenceNumber"); + reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } + else + { + // lookup poc, imo, eta + poc = reader.ReadText("Visit.PortOfCall"); - if (poc != null) - { - // Prüfen auf Transit - if (poc.ToUpper().Contains("CANAL") || poc.ToUpper().Equals("ZZNOK")) - { - reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); - poc = "ZZNOK"; - isTransit = true; - } - else - { - // Im Sheet könnte der Name statt des LOCODES stehen! - if (!RuleEngine.IsGermanLocode(poc)) - { - string aGermanPortName = poc; + if (poc != null) + { + // Prüfen auf Transit + if (poc.ToUpper().Contains("CANAL") || poc.ToUpper().Equals("ZZNOK")) + { + reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); + poc = "ZZNOK"; + isTransit = true; + } + else + { + // Im Sheet könnte der Name statt des LOCODES stehen! + if (!RuleEngine.IsGermanLocode(poc)) + { + string aGermanPortName = poc; - if(poc.Contains(',')) // irgendwas wie "Hamburg, Germany" - { - aGermanPortName = poc.Split(',')[0]; - } + if(poc.Contains(',')) // irgendwas wie "Hamburg, Germany" + { + aGermanPortName = poc.Split(',')[0]; + } - if (RuleEngine.IsGermanLocode(aGermanPortName)) - { - poc = aGermanPortName; - } - else - { - // somehow lookup LOCODE from the port's name! - poc = LocodeDB.LocodeGERFromCity(aGermanPortName); - } + if (RuleEngine.IsGermanLocode(aGermanPortName)) + { + poc = aGermanPortName; + } + else + { + // somehow lookup LOCODE from the port's name! + poc = LocodeDB.LocodeGERFromCity(aGermanPortName); + } - // okay, könnte DK Locode etc sein.. - if(poc == null) - { - if((aGermanPortName != null) && (aGermanPortName.Length == 5)) // possible locode? - { - if (LocodeDB.PortNameFromLocode(aGermanPortName) != null) - poc = aGermanPortName; - } - } + // okay, könnte DK Locode etc sein.. + if(poc == null) + { + if((aGermanPortName != null) && (aGermanPortName.Length == 5)) // possible locode? + { + if (LocodeDB.PortNameFromLocode(aGermanPortName) != null) + poc = aGermanPortName; + } + } - if(poc == null) - { - List locodes = LocodeDB.AllLocodesForCityName(aGermanPortName); - if (locodes.Count > 0) - poc = locodes[0]; - } + if(poc == null) + { + List locodes = LocodeDB.AllLocodesForCityName(aGermanPortName); + if (locodes.Count > 0) + poc = locodes[0]; + } - } + } - if (poc != null) - { - // setup returning confirmation sheets according to PoC - if (poc.Substring(0, 2) == "DK") - reader.SetConfirmation(Properties.Settings.Default.ConfirmationDK); - else - reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); - } + if (poc != null) + { + // setup returning confirmation sheets according to PoC + if (poc.Substring(0, 2) == "DK") + reader.SetConfirmation(Properties.Settings.Default.ConfirmationDK); + else + reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); + } else { message = "invalid PoC"; return null; } - } + } - imo = reader.ReadText("Visit.IMONumber"); - reader.Conf.ConfirmText("Visit.IMONumber", imo, imo.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + imo = reader.ReadText("Visit.IMONumber"); + reader.Conf.ConfirmText("Visit.IMONumber", imo, imo.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - // ETA - if(poc != null) - eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); + // ETA + if(poc != null) + eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); - if ((imo != null) && (eta.HasValue) && (poc != null)) - { - result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc); - if(result != null) - { - _log.InfoFormat("Core [{3}] found for IMO {0}, ETA {1}, Poc {2}", imo, eta, poc, result.Id); + if ((imo != null) && (eta.HasValue) && (poc != null)) + { + result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc); + if(result != null) + { + _log.InfoFormat("Core [{3}] found for IMO {0}, ETA {1}, Poc {2}", imo, eta, poc, result.Id); - result.HerbergReportType = reader.ReadText("ReferenceNumber"); - reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - } - } + result.HerbergReportType = reader.ReadText("ReferenceNumber"); + reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + } + } - reader.Conf.ConfirmText("Visit.PortOfCall", poc, ExcelReader.ReadState.OK); - reader.Conf.ConfirmText("Visit.PortOfCall_DK", poc, ExcelReader.ReadState.OK); - } + reader.Conf.ConfirmText("Visit.PortOfCall", poc, ExcelReader.ReadState.OK); + reader.Conf.ConfirmText("Visit.PortOfCall_DK", poc, ExcelReader.ReadState.OK); + } - else - { + else + { message = string.Format("Port of call missing or not found for IMO {0}", imo); return null; } - } + } bool isValidId = bsmd.database.Util.IsVisitId(visitTransitId) ||bsmd.database.Util.IsTransitId(visitTransitId); reader.Conf.ConfirmText("ID", visitTransitId, isValidId ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); if (result == null) - { - if (imo == null) - { - message = "IMO number missing or not found"; - return null; - } + { + if (imo == null) + { + message = "IMO number missing or not found"; + return null; + } - if(poc == null) - { - message = string.Format("Port of call missing or not found for IMO {0}", imo); - return null; - } + if(poc == null) + { + message = string.Format("Port of call missing or not found for IMO {0}", imo); + return null; + } - if(eta == null) - { - message = string.Format("ETA missing or not found for IMO {0}", imo); - return null; - } + if(eta == null) + { + message = string.Format("ETA missing or not found for IMO {0}", imo); + return null; + } - // neuen MessageCore erzeugen - result = new MessageCore(); + // neuen MessageCore erzeugen + result = new MessageCore(); - result.Incoming = true; - result.HerbergFormGuid = Guid.Empty; - result.IMO = imo; - result.IsTransit = isTransit; - result.ReportStatus = MessageCore.ReportStatusEnum.NONE; // Bestätigungs-Sheet reicht als Report, keine separate Generierung - result.BSMDStatusInternal = MessageCore.BSMDStatus.PREPARE; - result.PoC = poc; - result.Portname = LocodeDB.PortNameFromLocode(poc); + result.Incoming = true; + result.HerbergFormGuid = Guid.Empty; + result.IMO = imo; + result.IsTransit = isTransit; + result.ReportStatus = MessageCore.ReportStatusEnum.NONE; // Bestätigungs-Sheet reicht als Report, keine separate Generierung + result.BSMDStatusInternal = MessageCore.BSMDStatus.PREPARE; + result.PoC = poc; + result.Portname = LocodeDB.PortNameFromLocode(poc); - result.HerbergEmailContactReportingVessel = reader.ReadText("ShipMail"); - result.HerbergReportType = reader.ReadText("ReferenceNumber"); - reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + result.HerbergEmailContactReportingVessel = reader.ReadText("ShipMail"); + result.HerbergReportType = reader.ReadText("ReferenceNumber"); + reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); - if (result.IsTransit) - result.ETAKielCanal = eta; - else - result.ETA = eta; + if (result.IsTransit) + result.ETAKielCanal = eta; + else + result.ETA = eta; - if (result.IMO.Length > 7) - { - _log.WarnFormat("IMO {0} is longer than 7 chars, truncating!", result.IMO); - result.IMO = result.IMO.Substring(0, 7); - } + if (result.IMO.Length > 7) + { + _log.WarnFormat("IMO {0} is longer than 7 chars, truncating!", result.IMO); + result.IMO = result.IMO.Substring(0, 7); + } - if(visitTransitId != null) - { - if (bsmd.database.Util.IsTransitId(visitTransitId)) - result.TransitId = visitTransitId; - else - result.VisitId = visitTransitId; - } + if(visitTransitId != null) + { + if (bsmd.database.Util.IsTransitId(visitTransitId)) + result.TransitId = visitTransitId; + else + result.VisitId = visitTransitId; + } - DBManager.Instance.Save(result); - } + DBManager.Instance.Save(result); + } - return result; - } + return result; + } - #endregion + #endregion - /* - private static DateTime ConstructDate(string etaDateString, string etaTime) - { - DateTime result = DateTime.Now; - if (DateTime.TryParse(etaDateString, out result)) - { - TimeSpan sp; - if (TimeSpan.TryParse(etaTime, out sp)) - result += sp; - } - return result; - } - */ + /* + private static DateTime ConstructDate(string etaDateString, string etaTime) + { + DateTime result = DateTime.Now; + if (DateTime.TryParse(etaDateString, out result)) + { + TimeSpan sp; + if (TimeSpan.TryParse(etaTime, out sp)) + result += sp; + } + return result; + } + */ - #region GetMessageWithType + #region GetMessageWithType - private static Message GetMessageWithType(List messages, MessageCore core, Message.NotificationClass type) - { - foreach(Message message in messages) - if (message.MessageNotificationClass == type) return message; + private static Message GetMessageWithType(List messages, MessageCore core, Message.NotificationClass type) + { + foreach(Message message in messages) + if (message.MessageNotificationClass == type) return message; - Message newMessage = new Message(); - newMessage.MessageNotificationClass = type; - messages.Add(newMessage); - newMessage.MessageCore = core; + Message newMessage = new Message(); + newMessage.MessageNotificationClass = type; + messages.Add(newMessage); + newMessage.MessageCore = core; newMessage.MessageCoreId = core.Id; - return newMessage; - } + return newMessage; + } - #endregion + #endregion - } + } } diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index e13c7b95..716614e3 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.5.3")] +[assembly: AssemblyInformationalVersion("3.5.4")] [assembly: AssemblyCopyright("Copyright © 2014-2017 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 3d1fe330..f12b69ba 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.5.3.*")] +[assembly: AssemblyVersion("3.5.4.*")] diff --git a/nsw/Source/bsmd.dbh/Request.cs b/nsw/Source/bsmd.dbh/Request.cs index 66d54539..aa293cee 100644 --- a/nsw/Source/bsmd.dbh/Request.cs +++ b/nsw/Source/bsmd.dbh/Request.cs @@ -924,6 +924,8 @@ namespace bsmd.dbh for (int i = 0; i < was.WasteDisposalServiceProvider.Count; i++) { + if (was.WasteDisposalServiceProvider[i].WasteDisposalServiceProviderName.Trim().IsNullOrEmpty()) continue; + choiceType3s.Add(ItemsChoiceType3.WasteDisposalServiceProviderName); wasteItems.Add(was.WasteDisposalServiceProvider[i].WasteDisposalServiceProviderName);