diff --git a/ENI2/Excel/DakosyUtil.cs b/ENI2/Excel/DakosyUtil.cs index 72706858..596f29fa 100644 --- a/ENI2/Excel/DakosyUtil.cs +++ b/ENI2/Excel/DakosyUtil.cs @@ -501,11 +501,51 @@ namespace ENI2.Excel return true; } - private static bool ScanPRE72H(Message message, ExcelReader reader) + #region PRE72H + + private static bool ScanPRE72H(Message pre72hMessage, ExcelReader reader) { - throw new NotImplementedException(); + if (pre72hMessage.Elements.Count == 0) + { + PRE72H newPRE72H = new PRE72H(); + newPRE72H.MessageHeader = pre72hMessage; + pre72hMessage.Elements.Add(newPRE72H); + } + PRE72H pre72h = pre72hMessage.Elements[0] as PRE72H; + + pre72h.Tanker = reader.ReadCellAsBool("port state control", "C8"); + if(pre72h.Tanker ?? false) + { + string hull = reader.ReadCellAsText("port state control", "C10"); + if (hull.Equals("single_hull", StringComparison.OrdinalIgnoreCase)) + pre72h.TankerHullConfiguration = 0; + if (hull.Equals("single_hull_with_sbt", StringComparison.OrdinalIgnoreCase)) + pre72h.TankerHullConfiguration = 1; + if (hull.Equals("double_hull", StringComparison.OrdinalIgnoreCase)) + pre72h.TankerHullConfiguration = 2; + + string condition = reader.ReadCellAsText("port state control", "C11"); + if (condition.Equals("full", StringComparison.OrdinalIgnoreCase)) + pre72h.ConditionCargoBallastTanks = 0; + if (condition.Equals("empty", StringComparison.OrdinalIgnoreCase)) + pre72h.ConditionCargoBallastTanks = 1; + if (condition.Equals("inerted", StringComparison.OrdinalIgnoreCase)) + pre72h.ConditionCargoBallastTanks = 2; + + pre72h.NatureOfCargo = reader.ReadCellAsText("port state control", "C12"); + pre72h.VolumeOfCargo = reader.ReadCellAsDecimal("port state control", "C13"); + } + + pre72h.PlannedOperations = reader.ReadCellAsText("port state control", "C14"); + pre72h.PlannedWorks = reader.ReadCellAsText("port state control", "C15"); + pre72h.DateOfLastExpandedInspection = reader.ReadCellAsDateTime("port state control", "C16"); + pre72h.PlannedPeriodOfStay_HUR = reader.ReadCellAsDecimal("port state control", "C17"); + + return true; } + #endregion + private static bool ScanPOBD(Message pobdMessage, ExcelReader reader) { if (pobdMessage.Elements.Count == 0) @@ -542,14 +582,104 @@ namespace ENI2.Excel return true; } - private static bool ScanPASD(Message message, ExcelReader reader) + private static bool ScanPASD(Message pasdMessage, ExcelReader reader) { - throw new NotImplementedException(); + bool result = false; + for (int i = 0; i < 1000; i++) + { + string lastName = reader.ReadCellAsText("passenger departure", string.Format("B{0}", i + 16)); + if (lastName.IsNullOrEmpty()) break; + + if (!(pasdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is PAS pas)) + { + pas = new PASD(); + pas.Identifier = (i + 1).ToString(); + pas.MessageHeader = pasdMessage; + pasdMessage.Elements.Add(pas); + } + + pas.NotificationSchengen = reader.ReadCellAsBool("passenger departure", "C10"); + pas.NotificationPAX = reader.ReadCellAsBool("passenger departure", "C11"); + + pas.PassengerLastName = lastName; + pas.PassengerFirstName = reader.ReadCellAsText("passenger departure", string.Format("C{0}", i + 16)); + pas.PassengerPlaceOfBirth = reader.ReadCellAsText("passenger departure", string.Format("D{0}", i + 16)); + pas.PassengerCountryOfBirth = reader.ReadCellAsText("passenger departure", string.Format("E{0}", i + 16)); + pas.PassengerDateOfBirth = reader.ReadCellAsDateTime("passenger departure", string.Format("F{0}", i + 16)); + pas.PassengerGender = ParseGender(reader.ReadCellAsText("passenger departure", string.Format("G{0}", i + 16))); + pas.PassengerNationality = reader.ReadCellAsText("passenger departure", string.Format("H{0}", i + 16)); + pas.PassengerIdentityDocumentIssuingState = reader.ReadCellAsText("passenger departure", string.Format("O{0}", i + 16)); + pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("passenger departure", string.Format("P{0}", i + 16)); + + if (pas.NotificationPAX ?? false) + { + pas.EmergencyCare = reader.ReadCellAsText("passenger departure", string.Format("Q{0}", i + 16)); + pas.EmergencyContactNumber = reader.ReadCellAsText("passenger departure", string.Format("R{0}", i + 16)); + } + + if (pas.NotificationSchengen ?? false) + { + pas.PassengerIdentityDocumentType = ParseDocumentType(reader.ReadCellAsText("passenger departure", string.Format("I{0}", i + 16))); + pas.PassengerIdentityDocumentId = reader.ReadCellAsText("passenger departure", string.Format("J{0}", i + 16)); + pas.PassengerVisaNumber = reader.ReadCellAsText("passenger departure", string.Format("K{0}", i + 16)); + pas.PassengerPortOfEmbarkation = reader.ReadCellAsText("passenger departure", string.Format("L{0}", i + 16)); + pas.PassengerPortOfDisembarkation = reader.ReadCellAsText("passenger departure", string.Format("M{0}", i + 16)); + pas.PassengerInTransit = reader.ReadCellAsBool("passenger departure", string.Format("N{0}", i + 16)); + } + + result = true; + } + return result; } - private static bool ScanPAS(Message message, ExcelReader reader) + private static bool ScanPAS(Message pasMessage, ExcelReader reader) { - throw new NotImplementedException(); + bool result = false; + for (int i = 0; i < 1000; i++) + { + string lastName = reader.ReadCellAsText("passenger arrival", string.Format("B{0}", i + 16)); + if (lastName.IsNullOrEmpty()) break; + + if (!(pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is PAS pas)) + { + pas = new PAS(); + pas.Identifier = (i + 1).ToString(); + pas.MessageHeader = pasMessage; + pasMessage.Elements.Add(pas); + } + + pas.NotificationSchengen = reader.ReadCellAsBool("passenger arrival", "C10"); + pas.NotificationPAX = reader.ReadCellAsBool("passenger arrival", "C11"); + + pas.PassengerLastName = lastName; + pas.PassengerFirstName = reader.ReadCellAsText("passenger arrival", string.Format("C{0}", i + 16)); + pas.PassengerPlaceOfBirth = reader.ReadCellAsText("passenger arrival", string.Format("D{0}", i + 16)); + pas.PassengerCountryOfBirth = reader.ReadCellAsText("passenger arrival", string.Format("E{0}", i + 16)); + pas.PassengerDateOfBirth = reader.ReadCellAsDateTime("passenger arrival", string.Format("F{0}", i + 16)); + pas.PassengerGender = ParseGender(reader.ReadCellAsText("passenger arrival", string.Format("G{0}", i + 16))); + pas.PassengerNationality = reader.ReadCellAsText("passenger arrival", string.Format("H{0}", i + 16)); + pas.PassengerIdentityDocumentIssuingState = reader.ReadCellAsText("passenger arrival", string.Format("O{0}", i + 16)); + pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("passenger arrival", string.Format("P{0}", i + 16)); + + if(pas.NotificationPAX ?? false) + { + pas.EmergencyCare = reader.ReadCellAsText("passenger arrival", string.Format("Q{0}", i + 16)); + pas.EmergencyContactNumber = reader.ReadCellAsText("passenger arrival", string.Format("R{0}", i + 16)); + } + + if(pas.NotificationSchengen ?? false) + { + pas.PassengerIdentityDocumentType = ParseDocumentType(reader.ReadCellAsText("passenger arrival", string.Format("I{0}", i + 16))); + pas.PassengerIdentityDocumentId = reader.ReadCellAsText("passenger arrival", string.Format("J{0}", i + 16)); + pas.PassengerVisaNumber = reader.ReadCellAsText("passenger arrival", string.Format("K{0}", i + 16)); + pas.PassengerPortOfEmbarkation = reader.ReadCellAsText("passenger arrival", string.Format("L{0}", i + 16)); + pas.PassengerPortOfDisembarkation = reader.ReadCellAsText("passenger arrival", string.Format("M{0}", i + 16)); + pas.PassengerInTransit = reader.ReadCellAsBool("passenger arrival", string.Format("N{0}", i + 16)); + } + + result = true; + } + return result; } private static bool ScanNOA_NOD(Message noa_nodMessage, ExcelReader reader) @@ -865,16 +995,133 @@ namespace ENI2.Excel throw new NotImplementedException(); } - private static bool ScanCREWD(Message message, ExcelReader reader) + #region CREWD + + private static bool ScanCREWD(Message crewMessage, ExcelReader reader) { - throw new NotImplementedException(); + bool result = false; + for (int i = 0; i < 1000; i++) + { + string lastName = reader.ReadCellAsText("crew departure", string.Format("B{0}", i + 15)); + if (lastName.IsNullOrEmpty()) break; + + if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREW crew)) + { + crew = new CREWD(); + crew.Identifier = (i + 1).ToString(); + crew.MessageHeader = crewMessage; + crewMessage.Elements.Add(crew); + } + + crew.NotificationSchengen = reader.ReadCellAsBool("crew departure", "C10"); + crew.NotificationPAX = reader.ReadCellAsBool("crew departure", "C11"); + + crew.CrewMemberLastName = lastName; + crew.CrewMemberFirstName = reader.ReadCellAsText("crew departure", string.Format("C{0}", i + 15)); + crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText("crew departure", string.Format("D{0}", i + 15)); + crew.CrewMemberCountryOfBirth = reader.ReadCellAsText("crew departure", string.Format("E{0}", i + 15)); + crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime("crew departure", string.Format("F{0}", i + 15)); + string gender = reader.ReadCellAsText("crew departure", string.Format("G{0}", i + 15)); + crew.CrewMemberGender = ParseGender(gender); + crew.CrewMemberNationality = reader.ReadCellAsText("crew departure", string.Format("H{0}", i + 15)); + + if (crew.NotificationSchengen ?? false) + { + string idDocType = reader.ReadCellAsText("crew departure", string.Format("I{0}", i + 15)); + crew.CrewMemberIdentityDocumentType = ParseDocumentType(idDocType); + crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText("crew departure", string.Format("J{0}", i + 15)); + crew.CrewMemberVisaNumber = reader.ReadCellAsText("crew departure", string.Format("K{0}", i + 15)); + crew.CrewMemberIdentityDocumentIssuingState = reader.ReadCellAsText("crew departure", string.Format("M{0}", i + 15)); + crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("crew departure", string.Format("N{0}", i + 15)); + } + + crew.CrewMemberDuty = reader.ReadCellAsText("crew departure", string.Format("L{0}", i + 15)); + + result = true; + } + return result; } - private static bool ScanCREW(Message message, ExcelReader reader) + #endregion + + #region CREW + + private static bool ScanCREW(Message crewMessage, ExcelReader reader) { - throw new NotImplementedException(); + bool result = false; + for (int i = 0; i < 1000; i++) + { + string lastName = reader.ReadCellAsText("crew arrival", string.Format("B{0}", i + 15)); + if (lastName.IsNullOrEmpty()) break; + + if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREW crew)) + { + crew = new CREW(); + crew.Identifier = (i + 1).ToString(); + crew.MessageHeader = crewMessage; + crewMessage.Elements.Add(crew); + } + + crew.NotificationSchengen = reader.ReadCellAsBool("crew arrival", "C10"); + crew.NotificationPAX = reader.ReadCellAsBool("crew arrival", "C11"); + + crew.CrewMemberLastName = lastName; + crew.CrewMemberFirstName = reader.ReadCellAsText("crew arrival", string.Format("C{0}", i + 15)); + crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText("crew arrival", string.Format("D{0}", i + 15)); + crew.CrewMemberCountryOfBirth = reader.ReadCellAsText("crew arrival", string.Format("E{0}", i + 15)); + crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime("crew arrival", string.Format("F{0}", i + 15)); + string gender = reader.ReadCellAsText("crew arrival", string.Format("G{0}", i + 15)); + crew.CrewMemberGender = ParseGender(gender); + crew.CrewMemberNationality = reader.ReadCellAsText("crew arrival", string.Format("H{0}", i + 15)); + + if(crew.NotificationSchengen ?? false) + { + string idDocType = reader.ReadCellAsText("crew arrival", string.Format("I{0}", i + 15)); + crew.CrewMemberIdentityDocumentType = ParseDocumentType(idDocType); + crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText("crew arrival", string.Format("J{0}", i + 15)); + crew.CrewMemberVisaNumber = reader.ReadCellAsText("crew arrival", string.Format("K{0}", i + 15)); + crew.CrewMemberIdentityDocumentIssuingState = reader.ReadCellAsText("crew arrival", string.Format("M{0}", i + 15)); + crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("crew arrival", string.Format("N{0}", i + 15)); + } + + crew.CrewMemberDuty = reader.ReadCellAsText("crew arrival", string.Format("L{0}", i + 15)); + + result = true; + } + return result; } + private static byte? ParseGender(string gender) + { + byte? result = null; + if(!gender.IsNullOrEmpty()) + { + if (gender.Equals("male", StringComparison.OrdinalIgnoreCase)) result = 1; + if (gender.Equals("female", StringComparison.OrdinalIgnoreCase)) result = 2; + if (gender.Equals("not_applicable", StringComparison.OrdinalIgnoreCase)) result = 9; + if (gender.Equals("not_known", StringComparison.OrdinalIgnoreCase)) result = 0; + if (gender.Equals("other", StringComparison.OrdinalIgnoreCase)) result = 9; + } + return result; + } + + private static byte? ParseDocumentType(string docType) + { + byte? result = null; + if(!docType.IsNullOrEmpty()) + { + if (docType.Equals("identity_card", StringComparison.OrdinalIgnoreCase)) result = 0; + if (docType.Equals("passport", StringComparison.OrdinalIgnoreCase)) result = 1; + if (docType.Equals("muster_book", StringComparison.OrdinalIgnoreCase)) result = 2; + if (docType.Equals("picture_id", StringComparison.OrdinalIgnoreCase)) result = 3; + if (docType.Equals("residental_permit", StringComparison.OrdinalIgnoreCase)) result = 4; + if (docType.Equals("other_legal_identity_document", StringComparison.OrdinalIgnoreCase)) result = 5; + } + return result; + } + + #endregion + private static bool ScanBPOL(Message message, List messages, MessageCore messageCore, ExcelReader reader) { throw new NotImplementedException();