WasteDisposalDelivery entfernt

This commit is contained in:
Daniel Schick 2023-04-14 07:10:08 +02:00
parent 5694a3bf89
commit 9f6a342c20
6 changed files with 160 additions and 186 deletions

View File

@ -82,10 +82,10 @@ namespace ENI2.Excel
//case Message.NotificationClass.CREWD: // XXX-TODO //case Message.NotificationClass.CREWD: // XXX-TODO
// this.WriteCREW(message, false, isRefSheet); // this.WriteCREW(message, false, isRefSheet);
// break; // break;
case Message.NotificationClass.HAZA: case Message.NotificationClass.HAZA:
this.WriteHAZ(message, true); this.WriteHAZ(message, true);
break; break;
case Message.NotificationClass.HAZD: case Message.NotificationClass.HAZD:
this.WriteHAZ(message, false); this.WriteHAZ(message, false);
break; break;
case Message.NotificationClass.INFO: case Message.NotificationClass.INFO:
@ -141,13 +141,13 @@ namespace ENI2.Excel
if (message.Elements[0] is STAT stat) if (message.Elements[0] is STAT stat)
{ {
this.WriteMessage(stat); this.WriteMessage(stat);
this.WriteSTAT(stat, isRefSheet); this.WriteSTAT(stat, isRefSheet);
} }
break; break;
case Message.NotificationClass.STO: case Message.NotificationClass.STO:
this.WriteSTO(message); this.WriteSTO(message);
break; break;
case Message.NotificationClass.TIEFA: case Message.NotificationClass.TIEFA:
if (message.Elements[0] is TIEFA tiefa) if (message.Elements[0] is TIEFA tiefa)
{ {
// Ref-Sheet: dm, neues Formblatt: m // Ref-Sheet: dm, neues Formblatt: m
@ -180,7 +180,7 @@ namespace ENI2.Excel
_log.InfoFormat("skip writing message class {0}", message.MessageNotificationClassDisplay); _log.InfoFormat("skip writing message class {0}", message.MessageNotificationClassDisplay);
break; break;
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -306,7 +306,7 @@ namespace ENI2.Excel
else else
{ {
if (ReportDocument.cargoCodesNST.TryGetValue(ladg.CargoCodeNST, out string cargoCode)) if (ReportDocument.cargoCodesNST.TryGetValue(ladg.CargoCodeNST, out string cargoCode))
WriteText(lnType, cargoCode.Substring(3)); // description w/o code WriteText(lnType, cargoCode.Substring(3)); // description w/o code
} }
WriteText(lnZusatz, ladg.CargoCodeNST_3); WriteText(lnZusatz, ladg.CargoCodeNST_3);
WriteNumber(lnCNOI, ladg.CargoNumberOfItems); WriteNumber(lnCNOI, ladg.CargoNumberOfItems);
@ -423,10 +423,10 @@ namespace ENI2.Excel
if (isRefSheet) if (isRefSheet)
{ {
WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState); WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState);
} }
else else
{ {
if(!crew.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty() && !crew.CrewMemberIdentityDocumentIssuingState.Equals("XX")) if(!crew.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty() && !crew.CrewMemberIdentityDocumentIssuingState.Equals("XX"))
WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState); WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState);
} }
if(isRefSheet) if(isRefSheet)
@ -438,7 +438,7 @@ namespace ENI2.Excel
if(crew.CrewMemberIdentityDocumentExpiryDate != new DateTime(2100, 12, 31)) if(crew.CrewMemberIdentityDocumentExpiryDate != new DateTime(2100, 12, 31))
WriteDate(crewExpiry, crew.CrewMemberIdentityDocumentExpiryDate); WriteDate(crewExpiry, crew.CrewMemberIdentityDocumentExpiryDate);
} }
WriteText(crewCountry, crew.CrewMemberCountryOfBirth); WriteText(crewCountry, crew.CrewMemberCountryOfBirth);
if (isArrival) if (isArrival)
WriteText(effects, crew.Effects); WriteText(effects, crew.Effects);
@ -564,7 +564,7 @@ namespace ENI2.Excel
WriteNumber(ibc_quantity, ibcPosition.Quantity_KGM.Value); WriteNumber(ibc_quantity, ibcPosition.Quantity_KGM.Value);
WriteText(ibc_stowagePosition, ibcPosition.StowagePosition); WriteText(ibc_stowagePosition, ibcPosition.StowagePosition);
WriteText(ibc_portOfLoading, ibcPosition.PortOfLoading); WriteText(ibc_portOfLoading, ibcPosition.PortOfLoading);
WriteText(ibc_portOfDischarge, ibcPosition.PortOfDischarge); WriteText(ibc_portOfDischarge, ibcPosition.PortOfDischarge);
WriteText(ibc_hazards, ibcPosition.HazardsDisplay); WriteText(ibc_hazards, ibcPosition.HazardsDisplay);
WriteBoolean(ibc_specref, ibcPosition.SpecRef15_19 ?? false); WriteBoolean(ibc_specref, ibcPosition.SpecRef15_19 ?? false);
WriteText(ibc_remarks, ibcPosition.Remarks); WriteText(ibc_remarks, ibcPosition.Remarks);
@ -886,7 +886,7 @@ namespace ENI2.Excel
WriteText("SEC.CurrentShipSecurityLevel", sec.CurrentShipSecurityLevel.Value.ToString()); WriteText("SEC.CurrentShipSecurityLevel", sec.CurrentShipSecurityLevel.Value.ToString());
WriteText("SEC.ISSCIssuerType", sec.ISSCIssuerTypeDisplay); WriteText("SEC.ISSCIssuerType", sec.ISSCIssuerTypeDisplay);
if(sec.GeneralDescriptionOfCargo.HasValue) if(sec.GeneralDescriptionOfCargo.HasValue)
{ {
switch(sec.GeneralDescriptionOfCargo.Value) switch(sec.GeneralDescriptionOfCargo.Value)
@ -1041,7 +1041,7 @@ namespace ENI2.Excel
if(CREW.NationalityDict.TryGetValue(towa.TowageOnArrivalFlag, out string country)) if(CREW.NationalityDict.TryGetValue(towa.TowageOnArrivalFlag, out string country))
WriteText(tFlag, country.Substring(3)); WriteText(tFlag, country.Substring(3));
} }
WriteText(tPoC, towa.TowageOnArrivalPurposeOfCall); WriteText(tPoC, towa.TowageOnArrivalPurposeOfCall);
if (towa.TowageOnArrivalDraught_DMT.HasValue) if (towa.TowageOnArrivalDraught_DMT.HasValue)
WriteNumber(tDraft, towa.TowageOnArrivalDraught_DMT.Value); WriteNumber(tDraft, towa.TowageOnArrivalDraught_DMT.Value);
@ -1091,7 +1091,7 @@ namespace ENI2.Excel
WriteNumber(tBeam, towd.TowageOnDepartureBeam_MTR.Value); WriteNumber(tBeam, towd.TowageOnDepartureBeam_MTR.Value);
WriteText(tOp, towd.TowageOnDepartureOperatorCompanyName); WriteText(tOp, towd.TowageOnDepartureOperatorCompanyName);
// WriteText(tPoc, towd.Tow) // WriteText(tPoc, towd.Tow)
} }
} }
#endregion #endregion
@ -1103,17 +1103,6 @@ namespace ENI2.Excel
if (wasMessage.Elements.Count == 0) return; if (wasMessage.Elements.Count == 0) return;
WAS was = wasMessage.Elements[0] as WAS; WAS was = wasMessage.Elements[0] as WAS;
if (was.WasteDisposalDelivery.HasValue) // TODO: CH schreibt für DK erforderlich -> nachfragen
{
switch (was.WasteDisposalDelivery)
{
case 0: WriteText("WAS.WasteDisposalDelivery", "ALL"); break;
case 1: WriteText("WAS.WasteDisposalDelivery", "SOME"); break;
case 2: WriteText("WAS.WasteDisposalDelivery", "NONE"); break;
default: break;
}
}
WriteText("WAS.LastWasteDisposalPort", isRefSheet ? was.LastWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.LastWasteDisposalPort)); WriteText("WAS.LastWasteDisposalPort", isRefSheet ? was.LastWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.LastWasteDisposalPort));
WriteText("WAS.WasteDisposalServiceProviderName", was.WasteDisposalServiceProviderText); WriteText("WAS.WasteDisposalServiceProviderName", was.WasteDisposalServiceProviderText);
WriteText("WAS.NextWasteDisposalPort", isRefSheet? was.NextWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.NextWasteDisposalPort)); WriteText("WAS.NextWasteDisposalPort", isRefSheet? was.NextWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.NextWasteDisposalPort));
@ -1124,7 +1113,7 @@ namespace ENI2.Excel
{ {
int? wasteType = (int?)ReadNumber(string.Format("WAS.WasteCode_{0}", i + 1)); int? wasteType = (int?)ReadNumber(string.Format("WAS.WasteCode_{0}", i + 1));
if (!wasteType.HasValue) continue; if (!wasteType.HasValue) continue;
string wasteDescription = string.Format("WAS.WasteDescription_{0}", i + 1); string wasteDescription = string.Format("WAS.WasteDescription_{0}", i + 1);
string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i + 1); string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i + 1);
string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i + 1); string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i + 1);
@ -1133,7 +1122,7 @@ namespace ENI2.Excel
string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i + 1); string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i + 1);
Waste waste = was.GetWasteForType(wasteType.Value); Waste waste = was.GetWasteForType(wasteType.Value);
WriteText(wasteDescription, waste.WasteDescription); WriteText(wasteDescription, waste.WasteDescription);
if (waste.WasteDisposalAmount_MTQ.HasValue) if (waste.WasteDisposalAmount_MTQ.HasValue)
WriteNumber(wasteAmount, waste.WasteDisposalAmount_MTQ.Value); WriteNumber(wasteAmount, waste.WasteDisposalAmount_MTQ.Value);
@ -1143,7 +1132,7 @@ namespace ENI2.Excel
WriteNumber(wasteRetained, waste.WasteAmountRetained_MTQ.Value); WriteNumber(wasteRetained, waste.WasteAmountRetained_MTQ.Value);
WriteText(wastePort, isRefSheet ? waste.WasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(waste.WasteDisposalPort)); WriteText(wastePort, isRefSheet ? waste.WasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(waste.WasteDisposalPort));
if (waste.WasteAmountGeneratedTillNextPort_MTQ.HasValue) if (waste.WasteAmountGeneratedTillNextPort_MTQ.HasValue)
WriteNumber(amountGen, waste.WasteAmountGeneratedTillNextPort_MTQ.Value); WriteNumber(amountGen, waste.WasteAmountGeneratedTillNextPort_MTQ.Value);
} }
} }
@ -1216,8 +1205,8 @@ namespace ENI2.Excel
WriteText("INFO.PortArea", info.PortArea); WriteText("INFO.PortArea", info.PortArea);
} }
else else
{ {
WriteText("INFO.PortArea", LocalizedLookup.GetPortAreaFromCode(info.PortArea)); WriteText("INFO.PortArea", LocalizedLookup.GetPortAreaFromCode(info.PortArea));
} }
} }
} }
@ -1244,7 +1233,7 @@ namespace ENI2.Excel
if(isRefSheet) if(isRefSheet)
{ {
WriteText("STAT.ShipType", stat.ShipType); WriteText("STAT.ShipType", stat.ShipType);
} }
else else
{ {
if (LocalizedLookup.getVesselTypes().TryGetValue(stat.ShipType, out string shipType)) if (LocalizedLookup.getVesselTypes().TryGetValue(stat.ShipType, out string shipType))
@ -1345,7 +1334,7 @@ namespace ENI2.Excel
} }
catch(Exception) catch(Exception)
{ {
System.Diagnostics.Trace.WriteLine(string.Format("Error writing {0} to excel, field missing", lookupName)); System.Diagnostics.Trace.WriteLine(string.Format("Error writing {0} to excel, field missing", lookupName));
} }
return result; return result;
@ -1370,10 +1359,10 @@ namespace ENI2.Excel
if (result) if (result)
{ {
if(v != null) if(v != null)
{ {
_nameDict[lookupName].RefersToRange.Value = ((DateTime) v).ToLocalTime().ToOADate(); _nameDict[lookupName].RefersToRange.Value = ((DateTime) v).ToLocalTime().ToOADate();
} }
} }
return result; return result;

View File

@ -24,7 +24,7 @@ namespace bsmd.ExcelReadService
{ {
messageCore = Util.LookupMessageCore(reader, out readMessage); 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 // load messages if already present
List<Message> messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.ALL); List<Message> messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.ALL);
@ -113,7 +113,7 @@ namespace bsmd.ExcelReadService
ScanCREW(messages, messageCore, reader); ScanCREW(messages, messageCore, reader);
ScanPAS(messages, messageCore, reader); ScanPAS(messages, messageCore, reader);
ScanBPOL(messages, messageCore, reader); ScanBPOL(messages, messageCore, reader);
ScanTOWA(messages, messageCore, reader); ScanTOWA(messages, messageCore, reader);
@ -139,7 +139,7 @@ namespace bsmd.ExcelReadService
if ((message.MessageNotificationClass == Message.NotificationClass.CREWD) || (message.MessageNotificationClass == Message.NotificationClass.CREWD) || if ((message.MessageNotificationClass == Message.NotificationClass.CREWD) || (message.MessageNotificationClass == Message.NotificationClass.CREWD) ||
(message.MessageNotificationClass == Message.NotificationClass.STO)) (message.MessageNotificationClass == Message.NotificationClass.STO))
message.InternalStatus = Message.BSMDStatus.PREPARE; message.InternalStatus = Message.BSMDStatus.PREPARE;
else else
message.InternalStatus = Message.BSMDStatus.EXCEL; message.InternalStatus = Message.BSMDStatus.EXCEL;
message.UnsentMessageWarningShown = false; message.UnsentMessageWarningShown = false;
DBManager.Instance.Save(message); DBManager.Instance.Save(message);
@ -147,7 +147,7 @@ namespace bsmd.ExcelReadService
} }
return true; return true;
} }
#region ATA #region ATA
@ -170,7 +170,7 @@ namespace bsmd.ExcelReadService
if (!ata.ATAPortOfCall.HasValue && ataMessage.IsNew) if (!ata.ATAPortOfCall.HasValue && ataMessage.IsNew)
messages.Remove(ataMessage); messages.Remove(ataMessage);
} }
#endregion #endregion
@ -266,7 +266,7 @@ namespace bsmd.ExcelReadService
private static void ScanBPOL(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanBPOL(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
// Die Verarbeitung dieser Nachricht aktuell nur für // Die Verarbeitung dieser Nachricht aktuell nur für
Message bpolMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BPOL); Message bpolMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BPOL);
if (bpolMessage.Elements.Count == 0) if (bpolMessage.Elements.Count == 0)
{ {
@ -311,8 +311,8 @@ namespace bsmd.ExcelReadService
poi.PortOfItineraryName = bpolNameValue; poi.PortOfItineraryName = bpolNameValue;
reader.Conf.ConfirmText(bpolName, bpolNameValue, ExcelReader.ReadState.OK); reader.Conf.ConfirmText(bpolName, bpolNameValue, ExcelReader.ReadState.OK);
poi.PortOfItineraryLocode = bpolLocodeValue; poi.PortOfItineraryLocode = bpolLocodeValue;
// falls nur Locode angegeben wurde, Portname aus Locode ermitteln // falls nur Locode angegeben wurde, Portname aus Locode ermitteln
if(poi.PortOfItineraryName.IsNullOrEmpty() && !poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length == 5)) if(poi.PortOfItineraryName.IsNullOrEmpty() && !poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length == 5))
{ {
poi.PortOfItineraryName = LocodeDB.PortNameFromLocode(poi.PortOfItineraryLocode); poi.PortOfItineraryName = LocodeDB.PortNameFromLocode(poi.PortOfItineraryLocode);
@ -342,8 +342,8 @@ namespace bsmd.ExcelReadService
if (((poba.TotalPersonsOnBoardUponArrival ?? 0) == 0) && poba.IsNew) if (((poba.TotalPersonsOnBoardUponArrival ?? 0) == 0) && poba.IsNew)
messages.Remove(pobaMessage); messages.Remove(pobaMessage);
reader.Conf.ConfirmNumber("POBA.TotalCrewMembersOnBoardUponArrival_DK", poba.TotalCrewMembersOnBoardUponArrival, reader.Conf.ConfirmNumber("POBA.TotalCrewMembersOnBoardUponArrival_DK", poba.TotalCrewMembersOnBoardUponArrival,
(poba.TotalCrewMembersOnBoardUponArrival.HasValue && poba.TotalCrewMembersOnBoardUponArrival > 0) ? (poba.TotalCrewMembersOnBoardUponArrival.HasValue && poba.TotalCrewMembersOnBoardUponArrival > 0) ?
ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
reader.Conf.ConfirmNumber("POBA.TotalPassengersOnBoardUponArrival_DK", poba.TotalPassengersOnBoardUponArrival, reader.Conf.ConfirmNumber("POBA.TotalPassengersOnBoardUponArrival_DK", poba.TotalPassengersOnBoardUponArrival,
@ -406,7 +406,7 @@ namespace bsmd.ExcelReadService
if(shipClass.IsNullOrEmpty()) if(shipClass.IsNullOrEmpty())
{ {
reader.Conf.ConfirmText("HAZA.INFShipClass", null, ExcelReader.ReadState.FAIL); reader.Conf.ConfirmText("HAZA.INFShipClass", null, ExcelReader.ReadState.FAIL);
} }
else else
{ {
if (shipClass.Contains('1')) haza.INFShipClass = 0; if (shipClass.Contains('1')) haza.INFShipClass = 0;
@ -416,7 +416,7 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText("HAZA.INFShipClass", shipClass, haza.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); reader.Conf.ConfirmText("HAZA.INFShipClass", shipClass, haza.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
} }
// IMDG // IMDG
#region IMDG #region IMDG
for (int i = 1; i <= 10; i++) for (int i = 1; i <= 10; i++)
@ -707,13 +707,13 @@ namespace bsmd.ExcelReadService
} }
#endregion #endregion
if(haza.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen if(haza.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen
{ {
haza.NoDPGOnBoardOnArrival = false; haza.NoDPGOnBoardOnArrival = false;
// haza.DPGManifestOnBoardOnArrival = true; // haza.DPGManifestOnBoardOnArrival = true;
} }
} }
@ -755,7 +755,7 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText("HAZD.INFShipClass", shipClass, hazd.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); reader.Conf.ConfirmText("HAZD.INFShipClass", shipClass, hazd.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
} }
// IMDG // IMDG
#region IMDG #region IMDG
for (int i = 1; i <= 10; i++) for (int i = 1; i <= 10; i++)
@ -1045,7 +1045,7 @@ namespace bsmd.ExcelReadService
} }
#endregion #endregion
if (hazd.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen if (hazd.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen
{ {
@ -1053,7 +1053,7 @@ namespace bsmd.ExcelReadService
// hazd.DPGManifestOnBoardOnArrival = true; // hazd.DPGManifestOnBoardOnArrival = true;
} }
} }
@ -1099,7 +1099,7 @@ namespace bsmd.ExcelReadService
stat.PortOfRegistry = reader.ReadLoCode("STAT.PortOfRegistry"); stat.PortOfRegistry = reader.ReadLoCode("STAT.PortOfRegistry");
stat.Flag = reader.ReadNationality("STAT.Flag"); stat.Flag = reader.ReadNationality("STAT.Flag");
stat.MMSINumber = reader.ReadTextNoWhitespace("STAT.MMSINumber"); 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.CallSign = reader.ReadTextNoWhitespace("STAT.CallSign"); stat.CallSign = reader.ReadTextNoWhitespace("STAT.CallSign");
@ -1134,7 +1134,7 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText("ShipMail", messageCore.HerbergEmailContactReportingVessel, messageCore.HerbergEmailContactReportingVessel.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); 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
@ -1195,7 +1195,7 @@ namespace bsmd.ExcelReadService
callPurpose.CallPurposeDescription = callPurposeDescription; callPurpose.CallPurposeDescription = callPurposeDescription;
ExcelReader.ReadState aReadState = ExcelReader.ReadState.OK; ExcelReader.ReadState aReadState = ExcelReader.ReadState.OK;
if (callPurposeDescription.IsNullOrEmpty()) aReadState = ExcelReader.ReadState.WARN; if (callPurposeDescription.IsNullOrEmpty()) aReadState = ExcelReader.ReadState.WARN;
else if (callPurposeDescription.Length > 90) aReadState = ExcelReader.ReadState.FAIL; else if (callPurposeDescription.Length > 90) aReadState = ExcelReader.ReadState.FAIL;
reader.Conf.ConfirmText(callPurposeDescriptionKey, callPurposeDescription, aReadState); reader.Conf.ConfirmText(callPurposeDescriptionKey, callPurposeDescription, aReadState);
if (i == 1) if (i == 1)
reader.Conf.ConfirmText("NOA_NOD.CallPuposeDescription_1_DK", callPurposeDescription, callPurposeDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); reader.Conf.ConfirmText("NOA_NOD.CallPuposeDescription_1_DK", callPurposeDescription, callPurposeDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
@ -1203,7 +1203,7 @@ namespace bsmd.ExcelReadService
} }
} }
string lastPort = reader.ReadText("NOA_NOD.LastPort")?.Trim().ToUpper(); string lastPort = reader.ReadText("NOA_NOD.LastPort")?.Trim().ToUpper();
if (lastPort != null) if (lastPort != null)
{ {
@ -1226,7 +1226,7 @@ namespace bsmd.ExcelReadService
string nextPort = reader.ReadText("NOA_NOD.NextPort")?.Trim().ToUpper(); string nextPort = reader.ReadText("NOA_NOD.NextPort")?.Trim().ToUpper();
bool isValidSSNPort = false; bool isValidSSNPort = false;
if (!nextPort.IsNullOrEmpty()) if (!nextPort.IsNullOrEmpty())
{ {
if (nextPort.Length > 5) if (nextPort.Length > 5)
nextPort = nextPort.Substring(0, 5); //trunc nextPort = nextPort.Substring(0, 5); //trunc
else else
@ -1255,7 +1255,7 @@ namespace bsmd.ExcelReadService
else else
reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL); reader.Conf.ConfirmDate("NOA_NOD.ETDFromPortOfCall", null, ExcelReader.ReadState.FAIL);
} }
noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort"); noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort");
noa_nod.ETAToNextPort = reader.ReadDateTime("NOA_NOD.ETADateToNextPort", "NOA_NOD.ETATimeToNextPort"); noa_nod.ETAToNextPort = reader.ReadDateTime("NOA_NOD.ETADateToNextPort", "NOA_NOD.ETATimeToNextPort");
// DK // DK
@ -1303,7 +1303,7 @@ namespace bsmd.ExcelReadService
Util.ScanMessage(was, reader); Util.ScanMessage(was, reader);
was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery"); was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery");
was.LastWasteDisposalPort = reader.ReadLoCode("WAS.LastWasteDisposalPort"); was.LastWasteDisposalPort = reader.ReadLoCode("WAS.LastWasteDisposalPort");
string wastedispServProvName = reader.ReadText("WAS.WasteDisposalServiceProviderName"); string wastedispServProvName = reader.ReadText("WAS.WasteDisposalServiceProviderName");
if (wastedispServProvName != null) if (wastedispServProvName != null)
@ -1324,7 +1324,7 @@ namespace bsmd.ExcelReadService
if (wastedispServProvName.Length > 90) readState = ExcelReader.ReadState.FAIL; if (wastedispServProvName.Length > 90) readState = ExcelReader.ReadState.FAIL;
else readState = ExcelReader.ReadState.OK; else readState = ExcelReader.ReadState.OK;
} }
reader.Conf.ConfirmText("WAS.WasteDisposalServiceProviderName", wastedispServProvName, readState); reader.Conf.ConfirmText("WAS.WasteDisposalServiceProviderName", wastedispServProvName, readState);
// Waste 1 - 15 // Waste 1 - 15
@ -1332,7 +1332,7 @@ namespace bsmd.ExcelReadService
{ {
string wastetype = string.Format("WAS.WasteType_{0}", i); string wastetype = string.Format("WAS.WasteType_{0}", i);
string wasteCode = string.Format("WAS.WasteCode_{0}", i); string wasteCode = string.Format("WAS.WasteCode_{0}", i);
string wasteDescription = string.Format("WAS.WasteDescription_{0}", i); string wasteDescription = string.Format("WAS.WasteDescription_{0}", i);
string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i); string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i);
string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i); string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i);
string wasteRetained = string.Format("WAS.WasteAmountRetained_MTQ_{0}", i); string wasteRetained = string.Format("WAS.WasteAmountRetained_MTQ_{0}", i);
@ -1348,13 +1348,13 @@ namespace bsmd.ExcelReadService
was.Waste.Add(waste); was.Waste.Add(waste);
} }
waste.WasteType = (int?) reader.ReadNumber(wasteCode); waste.WasteType = (int?) reader.ReadNumber(wasteCode);
if (waste.WasteType.HasValue && (waste.WasteType == 2313)) if (waste.WasteType.HasValue && (waste.WasteType == 2313))
waste.WasteType = 2600; waste.WasteType = 2600;
if (reader.Mode == ExcelReader.CountryMode.DE) if (reader.Mode == ExcelReader.CountryMode.DE)
{ {
reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplay, ExcelReader.ReadState.OK); reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplay, ExcelReader.ReadState.OK);
reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK); reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK);
} }
@ -1364,7 +1364,7 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmNumber(wasteCode, WAS.DKWasteCodes[i - 1], ExcelReader.ReadState.OK); reader.Conf.ConfirmNumber(wasteCode, WAS.DKWasteCodes[i - 1], ExcelReader.ReadState.OK);
} }
// Waste description Spezialfälle für DK // Waste description Spezialfälle für DK
waste.WasteDescription = reader.ReadText(wasteDescription); waste.WasteDescription = reader.ReadText(wasteDescription);
if (waste.WasteDescription.IsNullOrEmpty()) if (waste.WasteDescription.IsNullOrEmpty())
{ {
@ -1394,14 +1394,14 @@ namespace bsmd.ExcelReadService
if((reader.Mode == ExcelReader.CountryMode.DK) && (i==9)) if((reader.Mode == ExcelReader.CountryMode.DK) && (i==9))
{ {
_log.DebugFormat("DK: Changing Waste code {0} to 2300 for line {1}", waste.WasteType, i); _log.DebugFormat("DK: Changing Waste code {0} to 2300 for line {1}", waste.WasteType, i);
waste.WasteType = 2300; waste.WasteType = 2300;
} }
reader.Conf.ConfirmText(wasteDescription, waste.WasteDescription, waste.WasteDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(wasteDescription, waste.WasteDescription, waste.WasteDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
waste.WasteDisposalAmount_MTQ = reader.ReadNumberDefaultZero(wasteAmount); waste.WasteDisposalAmount_MTQ = reader.ReadNumberDefaultZero(wasteAmount);
waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity); waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity);
waste.WasteAmountRetained_MTQ = reader.ReadNumberDefaultZero(wasteRetained); waste.WasteAmountRetained_MTQ = reader.ReadNumberDefaultZero(wasteRetained);
waste.WasteDisposalPort = reader.ReadLoCode(wastePort); waste.WasteDisposalPort = reader.ReadLoCode(wastePort);
bool isLocode; bool isLocode;
ExcelReader.ReadState rs; ExcelReader.ReadState rs;
@ -1414,11 +1414,11 @@ namespace bsmd.ExcelReadService
{ {
isLocode = (LocodeDB.PortNameFromLocode(waste.WasteDisposalPort) != null); isLocode = (LocodeDB.PortNameFromLocode(waste.WasteDisposalPort) != null);
rs = isLocode ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL; 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.WasteAmountGeneratedTillNextPort_MTQ = reader.ReadNumberDefaultZero(amountGen);
waste.WasteDisposedAtLastPort_MTQ = reader.ReadNumberDefaultZero(wasteDis); // waste.WasteDisposedAtLastPort_MTQ = reader.ReadNumberDefaultZero(wasteDis);
/* /*
if ((reader.Mode == ExcelReader.CountryMode.DE) && if ((reader.Mode == ExcelReader.CountryMode.DE) &&
@ -1447,7 +1447,7 @@ namespace bsmd.ExcelReadService
highlightRow15 &= (waste.WasteAmountRetained_MTQ > 0); highlightRow15 &= (waste.WasteAmountRetained_MTQ > 0);
highlightRow15 &= (waste.WasteDisposalPort != "ZZUKN"); highlightRow15 &= (waste.WasteDisposalPort != "ZZUKN");
highlightRow15 &= (waste.WasteAmountGeneratedTillNextPort_MTQ > 0); highlightRow15 &= (waste.WasteAmountGeneratedTillNextPort_MTQ > 0);
highlightRow15 &= (waste.WasteDisposedAtLastPort_MTQ > 0); // highlightRow15 &= (waste.WasteDisposedAtLastPort_MTQ > 0);
if(highlightRow15) if(highlightRow15)
{ {
@ -1465,7 +1465,7 @@ namespace bsmd.ExcelReadService
if (!waste.WasteType.HasValue) if (!waste.WasteType.HasValue)
{ {
was.Waste.Remove(waste); was.Waste.Remove(waste);
} }
} }
@ -1493,7 +1493,7 @@ namespace bsmd.ExcelReadService
mdh.MDHSimplification = false; mdh.MDHSimplification = false;
mdh.PortOfCallWhereCompleteMDHNotified = ""; mdh.PortOfCallWhereCompleteMDHNotified = "";
string kuerzelErsteZelle = reader.ReadText("MDH.PortOfCallLast30DaysLocode_1"); string kuerzelErsteZelle = reader.ReadText("MDH.PortOfCallLast30DaysLocode_1");
try try
@ -1565,7 +1565,7 @@ namespace bsmd.ExcelReadService
poc30d.PortOfCallLast30DaysCrewMembersJoined = false; poc30d.PortOfCallLast30DaysCrewMembersJoined = false;
if (poc30d.PortOfCallLast30DaysCrewMembersJoined ?? false) if (poc30d.PortOfCallLast30DaysCrewMembersJoined ?? false)
{ {
// try different separators // try different separators
string[] crew = crewNameString.Split(';'); string[] crew = crewNameString.Split(';');
if (crew.Length == 1) if (crew.Length == 1)
@ -1585,7 +1585,7 @@ namespace bsmd.ExcelReadService
if (crew[j].Length > 90) if (crew[j].Length > 90)
readState = ExcelReader.ReadState.FAIL; readState = ExcelReader.ReadState.FAIL;
} }
reader.Conf.ConfirmText(crewName, crewNameString, readState); reader.Conf.ConfirmText(crewName, crewNameString, readState);
} }
// falls Häkchen gesetzt aber Namensfeld leer: Fehler markieren // falls Häkchen gesetzt aber Namensfeld leer: Fehler markieren
@ -1729,7 +1729,7 @@ namespace bsmd.ExcelReadService
newSEC.MessageHeader = secMessage; newSEC.MessageHeader = secMessage;
secMessage.Elements.Add(newSEC); secMessage.Elements.Add(newSEC);
} }
SEC sec = secMessage.Elements[0] as SEC; SEC sec = secMessage.Elements[0] as SEC;
Util.ScanMessage(sec, reader); 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)
@ -1756,7 +1756,7 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText("SEC.CurrentShipSecurityLevel", shipsecLevel, sec.CurrentShipSecurityLevel.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); 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"); string isscIssuerType = reader.ReadText("SEC.ISSCIssuerType");
if(isscIssuerType != null) if(isscIssuerType != null)
@ -1768,8 +1768,8 @@ namespace bsmd.ExcelReadService
} }
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);
sec.GeneralDescriptionOfCargo = reader.ReadGeneralDescriptionOfCargo("SEC.GeneralDescriptionOfCargo"); sec.GeneralDescriptionOfCargo = reader.ReadGeneralDescriptionOfCargo("SEC.GeneralDescriptionOfCargo");
bool? secKielArrival = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Arrival"); bool? secKielArrival = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Arrival");
bool? secKielDeparture = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Departure"); bool? secKielDeparture = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Departure");
@ -1800,7 +1800,7 @@ namespace bsmd.ExcelReadService
string portDateOfArrival = string.Format("SEC.PortFacilityDateOfArrival_{0}", i); string portDateOfArrival = string.Format("SEC.PortFacilityDateOfArrival_{0}", i);
string portDateOfDeparture = string.Format("SEC.PortFacilityDateOfDeparture_{0}", i); string portDateOfDeparture = string.Format("SEC.PortFacilityDateOfDeparture_{0}", i);
string portShipSecLevel = string.Format("SEC.PortFacilityShipSecurityLevel_{0}", i); string portShipSecLevel = string.Format("SEC.PortFacilityShipSecurityLevel_{0}", i);
string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i); string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i);
string portSecMatters = string.Format("SEC.PortFacilitySecurityMattersToReport_{0}", i); string portSecMatters = string.Format("SEC.PortFacilitySecurityMattersToReport_{0}", i);
if (!(sec.GetPortFacilityWithIdentifier(i.ToString()) is LastTenPortFacilitiesCalled l10fc)) if (!(sec.GetPortFacilityWithIdentifier(i.ToString()) is LastTenPortFacilitiesCalled l10fc))
@ -1831,7 +1831,7 @@ namespace bsmd.ExcelReadService
if (sLevel.Contains('3')) l10fc.PortFacilityShipSecurityLevel = 3; if (sLevel.Contains('3')) l10fc.PortFacilityShipSecurityLevel = 3;
reader.Conf.ConfirmText(portShipSecLevel, sLevel, l10fc.PortFacilityShipSecurityLevel.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); reader.Conf.ConfirmText(portShipSecLevel, sLevel, l10fc.PortFacilityShipSecurityLevel.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
} }
l10fc.PortFacilityGISISCode = reader.ReadTextNoWhitespace(portGISISCode); l10fc.PortFacilityGISISCode = reader.ReadTextNoWhitespace(portGISISCode);
if (l10fc.PortFacilityGISISCode.IsNullOrEmpty() || l10fc.PortFacilityGISISCode == "0") if (l10fc.PortFacilityGISISCode.IsNullOrEmpty() || l10fc.PortFacilityGISISCode == "0")
@ -1929,7 +1929,7 @@ namespace bsmd.ExcelReadService
bkra.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity); bkra.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity);
bkra.BunkerFuelType = reader.ReadText(lnType); bkra.BunkerFuelType = reader.ReadText(lnType);
reader.Conf.ConfirmText(lnType, bkra.BunkerFuelType, ExcelReader.ReadState.OK); reader.Conf.ConfirmText(lnType, bkra.BunkerFuelType, ExcelReader.ReadState.OK);
// "OK" Quantity falls Type nicht angegeben // "OK" Quantity falls Type nicht angegeben
if (bkra.BunkerFuelType.IsNullOrEmpty() && !bkra.BunkerFuelQuantity_TNE.HasValue) if (bkra.BunkerFuelType.IsNullOrEmpty() && !bkra.BunkerFuelQuantity_TNE.HasValue)
reader.Conf.ConfirmNumber(lnQuantity, null, ExcelReader.ReadState.OK); reader.Conf.ConfirmNumber(lnQuantity, null, ExcelReader.ReadState.OK);
@ -1938,11 +1938,11 @@ namespace bsmd.ExcelReadService
{ {
reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL); reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL);
reader.Conf.ConfirmNumber(lnQuantity, bkra.BunkerFuelQuantity_TNE, ExcelReader.ReadState.WARN); reader.Conf.ConfirmNumber(lnQuantity, bkra.BunkerFuelQuantity_TNE, ExcelReader.ReadState.WARN);
} }
// dont save empty element // dont save empty element
if(bkra.IsNew && !bkra.BunkerFuelQuantity_TNE.HasValue && bkra.BunkerFuelType.IsNullOrEmpty()) if(bkra.IsNew && !bkra.BunkerFuelQuantity_TNE.HasValue && bkra.BunkerFuelType.IsNullOrEmpty())
bkraMessage.Elements.Remove(bkra); bkraMessage.Elements.Remove(bkra);
} }
} }
@ -1982,7 +1982,7 @@ namespace bsmd.ExcelReadService
// dont save empty element // dont save empty element
if (bkrd.IsNew && !bkrd.BunkerFuelQuantity_TNE.HasValue && bkrd.BunkerFuelType.IsNullOrEmpty()) if (bkrd.IsNew && !bkrd.BunkerFuelQuantity_TNE.HasValue && bkrd.BunkerFuelType.IsNullOrEmpty())
bkrdMessage.Elements.Remove(bkrd); bkrdMessage.Elements.Remove(bkrd);
} }
} }
@ -1991,7 +1991,7 @@ namespace bsmd.ExcelReadService
#region TOWA #region TOWA
private static void ScanTOWA(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanTOWA(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA); Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA);
// 24.4.21: TOWA beim Excel import // 24.4.21: TOWA beim Excel import
@ -2051,7 +2051,7 @@ namespace bsmd.ExcelReadService
#region TOWD #region TOWD
private static void ScanTOWD(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanTOWD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD); Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD);
// 24.4.21: TOWD beim Excel import // 24.4.21: TOWD beim Excel import
@ -2099,7 +2099,7 @@ namespace bsmd.ExcelReadService
towd.TowageOnDepartureBeam_MTR = reader.ReadNumber(tBeam); towd.TowageOnDepartureBeam_MTR = reader.ReadNumber(tBeam);
towd.TowageOnDepartureOperatorCompanyName = reader.ReadText(tOp); towd.TowageOnDepartureOperatorCompanyName = reader.ReadText(tOp);
reader.Conf.ConfirmText(tOp, towd.TowageOnDepartureOperatorCompanyName, towd.TowageOnDepartureOperatorCompanyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(tOp, towd.TowageOnDepartureOperatorCompanyName, towd.TowageOnDepartureOperatorCompanyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
} }
} }
@ -2131,7 +2131,7 @@ namespace bsmd.ExcelReadService
private static void ScanSERV(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanSERV(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message servMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SERV); Message servMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SERV);
if(servMessage.Elements.Count == 0) if(servMessage.Elements.Count == 0)
{ {
SERV newSERV = new SERV(); SERV newSERV = new SERV();
@ -2218,7 +2218,7 @@ namespace bsmd.ExcelReadService
ladgMessage.Elements.Add(ladg); ladgMessage.Elements.Add(ladg);
} }
ladg.CargoHandlingType = reader.ReadCargoHandlingType(lnCHT); ladg.CargoHandlingType = reader.ReadCargoHandlingType(lnCHT);
// Transit-Ladung für DE nicht übernehmen! // Transit-Ladung für DE nicht übernehmen!
if ((reader.Mode == ExcelReader.CountryMode.DE) && ((ladg.CargoHandlingType ?? 0) == 2)) if ((reader.Mode == ExcelReader.CountryMode.DE) && ((ladg.CargoHandlingType ?? 0) == 2))
@ -2257,18 +2257,18 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.WARN); reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.WARN);
ladg.CargoCodeNST = null; ladg.CargoCodeNST = null;
} }
} }
else else
{ {
ladg.CargoCodeNST = null; ladg.CargoCodeNST = null;
reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL); reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL);
} }
} }
} }
ladg.CargoLACode = reader.ReadCargoLACode(lnLACode); ladg.CargoLACode = reader.ReadCargoLACode(lnLACode);
ladg.CargoCodeNST_3 = reader.ReadText(lnZusatz); ladg.CargoCodeNST_3 = reader.ReadText(lnZusatz);
if (!ladg.CargoCodeNST_3.IsNullOrEmpty()) if (!ladg.CargoCodeNST_3.IsNullOrEmpty())
{ {
if (ladg.CargoCodeNST_3.Length == 1) if (ladg.CargoCodeNST_3.Length == 1)
@ -2290,8 +2290,8 @@ namespace bsmd.ExcelReadService
ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI); ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI);
ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ); ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ);
ladg.PortOfLoading = reader.ReadLoCode(lnLoad); ladg.PortOfLoading = reader.ReadLoCode(lnLoad);
ladg.PortOfDischarge = reader.ReadLoCode(lnDis); ladg.PortOfDischarge = reader.ReadLoCode(lnDis);
// dont save empty element // dont save empty element
if (ladg.IsNew && !ladg.CargoHandlingType.HasValue) if (ladg.IsNew && !ladg.CargoHandlingType.HasValue)
@ -2342,11 +2342,11 @@ namespace bsmd.ExcelReadService
crew.CrewMemberDuty = reader.ReadText(crewDuty); crew.CrewMemberDuty = reader.ReadText(crewDuty);
reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, crew.CrewMemberDuty.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, crew.CrewMemberDuty.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
crew.CrewMemberNationality = reader.ReadNationality(crewNationality); crew.CrewMemberNationality = reader.ReadNationality(crewNationality);
crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth); crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth);
reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, crew.CrewMemberPlaceOfBirth.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, crew.CrewMemberPlaceOfBirth.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth); crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth);
crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType); crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType);
crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId); crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId);
@ -2393,7 +2393,7 @@ namespace bsmd.ExcelReadService
crew.CrewMemberDuty = reader.ReadText(crewDuty); crew.CrewMemberDuty = reader.ReadText(crewDuty);
reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, crew.CrewMemberDuty.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, crew.CrewMemberDuty.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
crew.CrewMemberNationality = reader.ReadNationality(crewNationality); crew.CrewMemberNationality = reader.ReadNationality(crewNationality);
crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth); crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth);
reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, crew.CrewMemberPlaceOfBirth.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, crew.CrewMemberPlaceOfBirth.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
@ -2452,7 +2452,7 @@ namespace bsmd.ExcelReadService
pas.PassengerFirstName = firstName; pas.PassengerFirstName = firstName;
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
pas.PassengerGender = reader.ReadGender(pasGender); pas.PassengerGender = reader.ReadGender(pasGender);
pas.PassengerNationality = reader.ReadNationality(pasNationality); pas.PassengerNationality = reader.ReadNationality(pasNationality);
// TODO: Nicht klar ob hier LOCODEs kommen oder nicht // TODO: Nicht klar ob hier LOCODEs kommen oder nicht
pas.PassengerPortOfEmbarkation = reader.ReadLoCode(pasEmbarkation); pas.PassengerPortOfEmbarkation = reader.ReadLoCode(pasEmbarkation);
reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, pas.PassengerPortOfEmbarkation.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, pas.PassengerPortOfEmbarkation.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
@ -2505,7 +2505,7 @@ namespace bsmd.ExcelReadService
pas.PassengerFirstName = reader.ReadText(pasFirstName); pas.PassengerFirstName = reader.ReadText(pasFirstName);
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
pas.PassengerGender = reader.ReadGender(pasGender); pas.PassengerGender = reader.ReadGender(pasGender);
pas.PassengerNationality = reader.ReadNationality(pasNationality); pas.PassengerNationality = reader.ReadNationality(pasNationality);
// TODO: Nicht klar ob hier LOCODEs kommen oder nicht // TODO: Nicht klar ob hier LOCODEs kommen oder nicht
pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation); pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation);
reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, pas.PassengerPortOfEmbarkation.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(pasEmbarkation, pas.PassengerPortOfEmbarkation, pas.PassengerPortOfEmbarkation.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
@ -2541,7 +2541,7 @@ namespace bsmd.ExcelReadService
{ {
object propValue = property.GetValue(dbEntity, null); object propValue = property.GetValue(dbEntity, null);
string value = (propValue == null) ? string.Empty : propValue.ToString(); string value = (propValue == null) ? string.Empty : propValue.ToString();
LookupNameAttribute lookupNameAttribute = Attribute.GetCustomAttribute(property, typeof(LookupNameAttribute)) as LookupNameAttribute; LookupNameAttribute lookupNameAttribute = Attribute.GetCustomAttribute(property, typeof(LookupNameAttribute)) as LookupNameAttribute;
if (property.PropertyType == typeof(DateTime?)) if (property.PropertyType == typeof(DateTime?))
{ {
@ -2587,7 +2587,7 @@ namespace bsmd.ExcelReadService
readState = ExcelReader.ReadState.FAIL; readState = ExcelReader.ReadState.FAIL;
} }
} }
reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue, readState); reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue, readState);
} }
else else
@ -2626,9 +2626,9 @@ namespace bsmd.ExcelReadService
{ {
bool? sheetValue = reader.ReadBoolean(lookupNameAttribute.LookupName); bool? sheetValue = reader.ReadBoolean(lookupNameAttribute.LookupName);
string boolStringValue = reader.ReadText(lookupNameAttribute.LookupName); string boolStringValue = reader.ReadText(lookupNameAttribute.LookupName);
if (sheetValue.HasValue) { if (sheetValue.HasValue) {
property.SetValue(dbEntity, sheetValue); property.SetValue(dbEntity, sheetValue);
reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue.Value ? "Y" : "N", reader.Conf.ConfirmText(lookupNameAttribute.LookupName, sheetValue.Value ? "Y" : "N",
ExcelReader.ReadState.OK); ExcelReader.ReadState.OK);
} }
else else
@ -2640,7 +2640,7 @@ namespace bsmd.ExcelReadService
{ {
_log.DebugFormat("unhandled property type: {0}", property.PropertyType); _log.DebugFormat("unhandled property type: {0}", property.PropertyType);
} }
} }
} }
@ -2651,10 +2651,10 @@ namespace bsmd.ExcelReadService
/// <summary> /// <summary>
/// Check with cell values if this message core is already in our DB /// Check with cell values if this message core is already in our DB
/// </summary> /// </summary>
private static MessageCore LookupMessageCore(ExcelReader reader, out string message) private static MessageCore LookupMessageCore(ExcelReader reader, out string message)
{ {
// lookup using field values // lookup using field values
MessageCore result = null; MessageCore result = null;
DateTime? eta = null; DateTime? eta = null;
string poc; string poc;
@ -2670,7 +2670,7 @@ namespace bsmd.ExcelReadService
if (bsmd.database.Util.IsVisitId(visitTransitId)) if (bsmd.database.Util.IsVisitId(visitTransitId))
{ {
result = DBManager.Instance.GetMessageCoreByVisitId(visitTransitId); result = DBManager.Instance.GetMessageCoreByVisitId(visitTransitId);
} }
else if (bsmd.database.Util.IsTransitId(visitTransitId)) else if (bsmd.database.Util.IsTransitId(visitTransitId))
{ {
result = DBManager.Instance.GetMessageCoreByTransitId(visitTransitId); result = DBManager.Instance.GetMessageCoreByTransitId(visitTransitId);
@ -2688,7 +2688,7 @@ namespace bsmd.ExcelReadService
if (result.PoC.Substring(0, 2) == "DK") if (result.PoC.Substring(0, 2) == "DK")
reader.SetConfirmation(Properties.Settings.Default.ConfirmationDK); reader.SetConfirmation(Properties.Settings.Default.ConfirmationDK);
else else
reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE);
// copy poc/imo/eta to return sheet // copy poc/imo/eta to return sheet
poc = reader.ReadText("Visit.PortOfCall"); poc = reader.ReadText("Visit.PortOfCall");
@ -2701,12 +2701,12 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
} }
else else
{ {
// lookup poc, imo, eta // lookup poc, imo, eta
poc = reader.ReadText("Visit.PortOfCall"); poc = reader.ReadText("Visit.PortOfCall");
if (poc != null) if (poc != null)
{ {
// Prüfen auf Transit // Prüfen auf Transit
if (poc.IndexOf("CANAL", StringComparison.OrdinalIgnoreCase) >= 0 || poc.Equals("ZZNOK", StringComparison.OrdinalIgnoreCase)) if (poc.IndexOf("CANAL", StringComparison.OrdinalIgnoreCase) >= 0 || poc.Equals("ZZNOK", StringComparison.OrdinalIgnoreCase))
@ -2771,7 +2771,7 @@ namespace bsmd.ExcelReadService
message = "invalid PoC"; message = "invalid PoC";
return null; return null;
} }
} }
imo = reader.ReadText("Visit.IMONumber"); imo = reader.ReadText("Visit.IMONumber");
reader.Conf.ConfirmText("Visit.IMONumber", imo, imo.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); reader.Conf.ConfirmText("Visit.IMONumber", imo, imo.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
@ -2784,7 +2784,7 @@ namespace bsmd.ExcelReadService
if ((imo != null) && (eta.HasValue) && (poc != null)) if ((imo != null) && (eta.HasValue) && (poc != null))
{ {
result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc); result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc);
if(result != null) if(result != null)
{ {
_log.InfoFormat("Core [{3}] found for IMO {0}, ETA {1}, Poc {2}", imo, eta, poc, result.Id); _log.InfoFormat("Core [{3}] found for IMO {0}, ETA {1}, Poc {2}", imo, eta, poc, result.Id);
@ -2856,7 +2856,7 @@ namespace bsmd.ExcelReadService
if (result.IsTransit) if (result.IsTransit)
result.ETAKielCanal = eta; result.ETAKielCanal = eta;
else else
result.ETA = eta; result.ETA = eta;
if (result.IMO.Length > 7) if (result.IMO.Length > 7)
{ {
@ -2886,15 +2886,15 @@ namespace bsmd.ExcelReadService
return result; return result;
} }
#endregion #endregion
#region GetMessageWithType #region GetMessageWithType
private static Message GetMessageWithType(List<Message> messages, MessageCore core, Message.NotificationClass type) private static Message GetMessageWithType(List<Message> messages, MessageCore core, Message.NotificationClass type)
{ {
foreach(Message message in messages) foreach(Message message in messages)
if (message.MessageNotificationClass == type) return message; if (message.MessageNotificationClass == type) return message;
Message newMessage = DBManager.Instance.GetMessage(core, type); Message newMessage = DBManager.Instance.GetMessage(core, type);
if (newMessage == null) if (newMessage == null)
{ {

View File

@ -739,9 +739,7 @@ namespace bsmd.dakosy
vList.Visit[0].WAS.WasteDisposalServiceProviderName[i].ServiceProviderName = ((WasteDisposalServiceProvider) was.WasteDisposalServiceProvider[i]).WasteDisposalServiceProviderName; vList.Visit[0].WAS.WasteDisposalServiceProviderName[i].ServiceProviderName = ((WasteDisposalServiceProvider) was.WasteDisposalServiceProvider[i]).WasteDisposalServiceProviderName;
} }
} }
vList.Visit[0].WAS.WasteDisposalDeliverySpecified = was.WasteDisposalDelivery.HasValue;
byte wdd = was.WasteDisposalDelivery ?? 0;
vList.Visit[0].WAS.WasteDisposalDelivery = WDDTypeFromNSWEnumeration(wdd);
if (was.Waste.Count > 0) if (was.Waste.Count > 0)
{ {
vList.Visit[0].WAS.Waste = new Waste[was.Waste.Count]; vList.Visit[0].WAS.Waste = new Waste[was.Waste.Count];

View File

@ -129,12 +129,7 @@ namespace bsmd.database
[LookupName("WAS.LastWasteDisposalDate")] [LookupName("WAS.LastWasteDisposalDate")]
[ENI2Validation] [ENI2Validation]
[DateOnly] [DateOnly]
public DateTime? LastWasteDisposalDate { get; set; } public DateTime? LastWasteDisposalDate { get; set; }
[Obsolete]
[ShowReport]
[ENI2Validation]
public byte? WasteDisposalDelivery { get; set; }
[LookupName("WAS.ConfirmationOfSufficiency")] [LookupName("WAS.ConfirmationOfSufficiency")]
[ENI2Validation] [ENI2Validation]
@ -232,8 +227,7 @@ namespace bsmd.database
scmd.Parameters.AddWithNullableValue("@P2", this.WasteDisposalValidExemption); scmd.Parameters.AddWithNullableValue("@P2", this.WasteDisposalValidExemption);
scmd.Parameters.AddWithNullableValue("@P3", this.LastWasteDisposalPort); scmd.Parameters.AddWithNullableValue("@P3", this.LastWasteDisposalPort);
scmd.Parameters.AddWithNullableValue("@P4", this.ConfirmationOfCorrectness); scmd.Parameters.AddWithNullableValue("@P4", this.ConfirmationOfCorrectness);
scmd.Parameters.AddWithNullableValue("@P5", this.LastWasteDisposalDate); scmd.Parameters.AddWithNullableValue("@P5", this.LastWasteDisposalDate);
scmd.Parameters.AddWithNullableValue("@P6", this.WasteDisposalDelivery);
scmd.Parameters.AddWithNullableValue("@P7", this.ConfirmationOfSufficiency); scmd.Parameters.AddWithNullableValue("@P7", this.ConfirmationOfSufficiency);
scmd.Parameters.AddWithNullableValue("@P8", this.NextWasteDisposalPort); scmd.Parameters.AddWithNullableValue("@P8", this.NextWasteDisposalPort);
@ -242,14 +236,14 @@ namespace bsmd.database
this.CreateId(); this.CreateId();
scmd.Parameters.AddWithValue("@ID", this.Id); scmd.Parameters.AddWithValue("@ID", this.Id);
scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, WasteDisposalValidExemption, " + scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, WasteDisposalValidExemption, " +
"LastWasteDisposalPort, ConfirmationOfCorrectness, LastWasteDisposalDate, WasteDisposalDelivery, " + "LastWasteDisposalPort, ConfirmationOfCorrectness, LastWasteDisposalDate, " +
"ConfirmationOfSufficiency, NextWasteDisposalPort) VALUES ( @ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8 )", this.Tablename); "ConfirmationOfSufficiency, NextWasteDisposalPort) VALUES ( @ID, @P1, @P2, @P3, @P4, @P5, @P7, @P8 )", this.Tablename);
} }
else else
{ {
scmd.Parameters.AddWithValue("ID", this.Id); scmd.Parameters.AddWithValue("ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET WasteDisposalValidExemption = @P2, LastWasteDisposalPort = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET WasteDisposalValidExemption = @P2, LastWasteDisposalPort = @P3, " +
"ConfirmationOfCorrectness = @P4, LastWasteDisposalDate = @P5, WasteDisposalDelivery = @P6, ConfirmationOfSufficiency = @P7, " + "ConfirmationOfCorrectness = @P4, LastWasteDisposalDate = @P5, ConfirmationOfSufficiency = @P7, " +
"NextWasteDisposalPort = @P8 WHERE Id = @ID", this.Tablename); "NextWasteDisposalPort = @P8 WHERE Id = @ID", this.Tablename);
} }
} }
@ -257,7 +251,7 @@ namespace bsmd.database
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
{ {
string query = string.Format("SELECT Id, WasteDisposalValidExemption, LastWasteDisposalPort, ConfirmationOfCorrectness, " + string query = string.Format("SELECT Id, WasteDisposalValidExemption, LastWasteDisposalPort, ConfirmationOfCorrectness, " +
"LastWasteDisposalDate, WasteDisposalDelivery, ConfirmationOfSufficiency, NextWasteDisposalPort " + "LastWasteDisposalDate, ConfirmationOfSufficiency, NextWasteDisposalPort " +
"FROM {0} ", this.Tablename); "FROM {0} ", this.Tablename);
switch (filter) switch (filter)
@ -289,10 +283,9 @@ namespace bsmd.database
if (!reader.IsDBNull(1)) was.WasteDisposalValidExemption = reader.GetBoolean(1); if (!reader.IsDBNull(1)) was.WasteDisposalValidExemption = reader.GetBoolean(1);
if (!reader.IsDBNull(2)) was.LastWasteDisposalPort = reader.GetString(2); if (!reader.IsDBNull(2)) was.LastWasteDisposalPort = reader.GetString(2);
if (!reader.IsDBNull(3)) was.ConfirmationOfCorrectness = reader.GetBoolean(3); if (!reader.IsDBNull(3)) was.ConfirmationOfCorrectness = reader.GetBoolean(3);
if (!reader.IsDBNull(4)) was.LastWasteDisposalDate = reader.GetDateTime(4); if (!reader.IsDBNull(4)) was.LastWasteDisposalDate = reader.GetDateTime(4);
if (!reader.IsDBNull(5)) was.WasteDisposalDelivery = reader.GetByte(5); if (!reader.IsDBNull(5)) was.ConfirmationOfSufficiency = reader.GetBoolean(5);
if (!reader.IsDBNull(6)) was.ConfirmationOfSufficiency = reader.GetBoolean(6); if (!reader.IsDBNull(6)) was.NextWasteDisposalPort = reader.GetString(6);
if (!reader.IsDBNull(7)) was.NextWasteDisposalPort = reader.GetString(7);
result.Add(was); result.Add(was);
} }
reader.Close(); reader.Close();

View File

@ -32,11 +32,7 @@ namespace bsmd.database
[MaxLength(99)] [MaxLength(99)]
[ENI2Validation] [ENI2Validation]
[Validation(ValidationCode.STRING_MAXLEN, 99)] [Validation(ValidationCode.STRING_MAXLEN, 99)]
public string WasteDisposalServiceProviderName { get; set; } public string WasteDisposalServiceProviderName { get; set; }
[Obsolete]
[JsonIgnore]
public byte? WasteDisposalDelivery { get; set; }
public string Identifier { get; set; } public string Identifier { get; set; }
@ -53,28 +49,27 @@ namespace bsmd.database
SqlCommand scmd = cmd as SqlCommand; SqlCommand scmd = cmd as SqlCommand;
scmd.Parameters.AddWithValue("@P1", this.WAS.Id); scmd.Parameters.AddWithValue("@P1", this.WAS.Id);
scmd.Parameters.AddWithNullableValue("@P2", this.WasteDisposalServiceProviderName); scmd.Parameters.AddWithNullableValue("@P2", this.WasteDisposalServiceProviderName);
scmd.Parameters.AddWithNullableValue("@P3", this.WasteDisposalDelivery);
scmd.Parameters.AddWithNullableValue("@P4", this.Identifier); scmd.Parameters.AddWithNullableValue("@P4", this.Identifier);
if (this.IsNew) if (this.IsNew)
{ {
this.CreateId(); this.CreateId();
scmd.Parameters.AddWithValue("@ID", this.Id); scmd.Parameters.AddWithValue("@ID", this.Id);
scmd.CommandText = string.Format("INSERT INTO {0} (Id, WASId, WasteDisposalServiceProviderName, WasteDisposalDelivery, Identifier) " + scmd.CommandText = string.Format("INSERT INTO {0} (Id, WASId, WasteDisposalServiceProviderName, Identifier) " +
"VALUES ( @ID, @P1, @P2, @P3, @P4 )", this.Tablename); "VALUES ( @ID, @P1, @P2, @P4 )", this.Tablename);
} }
else else
{ {
scmd.Parameters.AddWithValue("ID", this.Id); scmd.Parameters.AddWithValue("ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET WasteDisposalServiceProviderName = @P2, WasteDisposalDelivery = @P3 " + scmd.CommandText = string.Format("UPDATE {0} SET WasteDisposalServiceProviderName = @P2 " +
"WHERE Id = @ID", this.Tablename); "WHERE Id = @ID", this.Tablename);
} }
} }
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
{ {
string query = string.Format("SELECT Id, WasteDisposalServiceProviderName, WasteDisposalDelivery, Identifier FROM {0}", this.Tablename); string query = string.Format("SELECT Id, WasteDisposalServiceProviderName, Identifier FROM {0}", this.Tablename);
switch (filter) switch (filter)
{ {
@ -100,9 +95,8 @@ namespace bsmd.database
WasteDisposalServiceProvider wdsp = new WasteDisposalServiceProvider(); WasteDisposalServiceProvider wdsp = new WasteDisposalServiceProvider();
wdsp.id = reader.GetGuid(0); wdsp.id = reader.GetGuid(0);
if (!reader.IsDBNull(1)) wdsp.WasteDisposalServiceProviderName = reader.GetString(1); if (!reader.IsDBNull(1)) wdsp.WasteDisposalServiceProviderName = reader.GetString(1);
if (!reader.IsDBNull(2)) wdsp.WasteDisposalDelivery = reader.GetByte(2); if (!reader.IsDBNull(3)) wdsp.Identifier = reader.GetString(2);
if (!reader.IsDBNull(3)) wdsp.Identifier = reader.GetString(3);
result.Add(wdsp); result.Add(wdsp);
} }
reader.Close(); reader.Close();

View File

@ -15,7 +15,7 @@ using bsmd.database;
using bsmd.dbh.DBHWebReference; using bsmd.dbh.DBHWebReference;
namespace bsmd.dbh namespace bsmd.dbh
{ {
/// <summary> /// <summary>
/// This class implements the "oldschool" approach of sending classes via the SOAP interface. /// This class implements the "oldschool" approach of sending classes via the SOAP interface.
@ -118,7 +118,7 @@ namespace bsmd.dbh
{ {
if (message == null) return false; if (message == null) return false;
RootType rootType = message.Reset ? RootType.RESET : RootType.DATA; RootType rootType = message.Reset ? RootType.RESET : RootType.DATA;
if (message.ReportingParty == null) if (message.ReportingParty == null)
{ {
@ -190,7 +190,7 @@ namespace bsmd.dbh
rootVisit.ETAPortOfCall = message.MessageCore.ETA.Value.ToDBHDateString(); rootVisit.ETAPortOfCall = message.MessageCore.ETA.Value.ToDBHDateString();
else else
rootVisit.ETAPortOfCall = null; rootVisit.ETAPortOfCall = null;
item = rootVisit; item = rootVisit;
break; break;
@ -353,7 +353,7 @@ namespace bsmd.dbh
SEC sec = message.Elements[0] as SEC; SEC sec = message.Elements[0] as SEC;
List<object> secItems = new List<object>(); List<object> secItems = new List<object>();
List<ItemsChoiceType1> choiceType1s = new List<ItemsChoiceType1>(); List<ItemsChoiceType1> choiceType1s = new List<ItemsChoiceType1>();
if(!message.MessageCore.IsTransit) if(!message.MessageCore.IsTransit)
{ {
@ -417,7 +417,7 @@ namespace bsmd.dbh
choiceType1s.Add(ItemsChoiceType1.GeneralDescriptionOfCargo); choiceType1s.Add(ItemsChoiceType1.GeneralDescriptionOfCargo);
secItems.Add((CargoDescription)sec.GeneralDescriptionOfCargo.Value); secItems.Add((CargoDescription)sec.GeneralDescriptionOfCargo.Value);
} }
for (int i=0; i < sec.LastTenPortFacilitesCalled.Count; i++) for (int i=0; i < sec.LastTenPortFacilitesCalled.Count; i++)
{ {
choiceType1s.Add(ItemsChoiceType1.LastTenPortFacilitiesCalled); choiceType1s.Add(ItemsChoiceType1.LastTenPortFacilitiesCalled);
@ -458,7 +458,7 @@ namespace bsmd.dbh
if (shipToShip.ShipToShipActivityDateTo.HasValue) if (shipToShip.ShipToShipActivityDateTo.HasValue)
s2s.ShipToShipActivityDateTo = shipToShip.ShipToShipActivityDateTo.Value; s2s.ShipToShipActivityDateTo = shipToShip.ShipToShipActivityDateTo.Value;
//int activityType; //int activityType;
//if (!Int32.TryParse(shipToShip.ShipToShipActivityType, out activityType)) //if (!Int32.TryParse(shipToShip.ShipToShipActivityType, out activityType))
//activityType = NOA_NOD.getCallPurposeCodeFromDescription(shipToShip.ShipToShipActivityType) ?? 0; //activityType = NOA_NOD.getCallPurposeCodeFromDescription(shipToShip.ShipToShipActivityType) ?? 0;
//s2s.ShipToShipActivityType = activityType; //s2s.ShipToShipActivityType = activityType;
@ -537,8 +537,8 @@ namespace bsmd.dbh
if(crew.CrewMemberIdentityDocumentIssuingState.Trim().Length == 2) if(crew.CrewMemberIdentityDocumentIssuingState.Trim().Length == 2)
rootCREW.CrewMember[i].CrewMemberIdentityDocumentIssuingState = crew.CrewMemberIdentityDocumentIssuingState; rootCREW.CrewMember[i].CrewMemberIdentityDocumentIssuingState = crew.CrewMemberIdentityDocumentIssuingState;
rootCREW.CrewMember[i].CrewMemberIdentityDocumentExpiryDateSpecified = crew.CrewMemberIdentityDocumentExpiryDate.HasValue; rootCREW.CrewMember[i].CrewMemberIdentityDocumentExpiryDateSpecified = crew.CrewMemberIdentityDocumentExpiryDate.HasValue;
if (crew.CrewMemberIdentityDocumentExpiryDate.HasValue) if (crew.CrewMemberIdentityDocumentExpiryDate.HasValue)
rootCREW.CrewMember[i].CrewMemberIdentityDocumentExpiryDate = crew.CrewMemberIdentityDocumentExpiryDate.Value; rootCREW.CrewMember[i].CrewMemberIdentityDocumentExpiryDate = crew.CrewMemberIdentityDocumentExpiryDate.Value;
} }
item = rootCREW; item = rootCREW;
@ -706,7 +706,7 @@ namespace bsmd.dbh
rootStat.TransportMode = RootSTATTransportMode.Item1; // default is maritime transport! rootStat.TransportMode = RootSTATTransportMode.Item1; // default is maritime transport!
if (!stat.TransportMode.IsNullOrEmpty() && stat.TransportMode.Equals("8")) if (!stat.TransportMode.IsNullOrEmpty() && stat.TransportMode.Equals("8"))
rootStat.TransportMode = RootSTATTransportMode.Item8; rootStat.TransportMode = RootSTATTransportMode.Item8;
if (!stat.ISMCompanyName.IsNullOrEmpty()) if (!stat.ISMCompanyName.IsNullOrEmpty())
{ {
rootStat.ISMCompany = new RootSTATISMCompany(); rootStat.ISMCompany = new RootSTATISMCompany();
@ -726,7 +726,7 @@ namespace bsmd.dbh
case Message.NotificationClass.LADG: case Message.NotificationClass.LADG:
{ {
RootLADG rootLADG = new RootLADG(); RootLADG rootLADG = new RootLADG();
List<RootLADGCargo> cargoList = new List<RootLADGCargo>(); List<RootLADGCargo> cargoList = new List<RootLADGCargo>();
for (int i = 0; i < message.Elements.Count; i++ ) for (int i = 0; i < message.Elements.Count; i++ )
{ {
LADG ladg = message.Elements[i] as LADG; LADG ladg = message.Elements[i] as LADG;
@ -764,7 +764,7 @@ namespace bsmd.dbh
if (ladg.PortOfLoading.IsNullOrEmpty()) if (ladg.PortOfLoading.IsNullOrEmpty())
cargo.CargoPortOfLoading = "ZZUKN"; cargo.CargoPortOfLoading = "ZZUKN";
else else
cargo.CargoPortOfLoading = ladg.PortOfLoading; cargo.CargoPortOfLoading = ladg.PortOfLoading;
if (ladg.PortOfDischarge.IsNullOrEmpty()) if (ladg.PortOfDischarge.IsNullOrEmpty())
cargo.CargoPortOfDischarge = "ZZUKN"; cargo.CargoPortOfDischarge = "ZZUKN";
@ -850,7 +850,7 @@ namespace bsmd.dbh
if (sendVolume) if (sendVolume)
rootPre.TankerDetails.VolumeOfCargo_TNE = Decimal.Round((decimal)(pre72h.VolumeOfCargo.Value), 3); rootPre.TankerDetails.VolumeOfCargo_TNE = Decimal.Round((decimal)(pre72h.VolumeOfCargo.Value), 3);
} }
rootPre.PlannedOperations = pre72h.PlannedOperations; rootPre.PlannedOperations = pre72h.PlannedOperations;
rootPre.PlannedWorks = pre72h.PlannedWorks; rootPre.PlannedWorks = pre72h.PlannedWorks;
rootPre.DateOfLastExpandedInspectionSpecified = pre72h.DateOfLastExpandedInspection.HasValue; rootPre.DateOfLastExpandedInspectionSpecified = pre72h.DateOfLastExpandedInspection.HasValue;
@ -924,7 +924,7 @@ namespace bsmd.dbh
choiceTypes2.Add(ItemsChoiceType2.SanitaryMeasuresApplied); choiceTypes2.Add(ItemsChoiceType2.SanitaryMeasuresApplied);
mdhItems.Add(mdh.SanitaryMeasuresApplied ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N); mdhItems.Add(mdh.SanitaryMeasuresApplied ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N);
if (mdh.SanitaryMeasuresApplied ?? false) if (mdh.SanitaryMeasuresApplied ?? false)
{ {
foreach (SanitaryMeasuresDetail smd in mdh.SanitaryMeasuresDetails) foreach (SanitaryMeasuresDetail smd in mdh.SanitaryMeasuresDetails)
@ -938,7 +938,7 @@ namespace bsmd.dbh
mdhItems.Add(smDet); mdhItems.Add(smDet);
} }
} }
choiceTypes2.Add(ItemsChoiceType2.StowawaysDetected); choiceTypes2.Add(ItemsChoiceType2.StowawaysDetected);
mdhItems.Add(mdh.StowawaysDetected ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N); mdhItems.Add(mdh.StowawaysDetected ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N);
@ -947,7 +947,7 @@ namespace bsmd.dbh
foreach (StowawaysJoiningLocation sjl in mdh.StowawaysJoiningLocations) foreach (StowawaysJoiningLocation sjl in mdh.StowawaysJoiningLocations)
{ {
if(!sjl.StowawayJoiningLocation.IsNullOrEmpty()) if(!sjl.StowawayJoiningLocation.IsNullOrEmpty())
concatLocations = string.Format("{0} {1}", concatLocations, sjl.StowawayJoiningLocation); concatLocations = string.Format("{0} {1}", concatLocations, sjl.StowawayJoiningLocation);
} }
mdhItems.Add(concatLocations); mdhItems.Add(concatLocations);
@ -983,7 +983,7 @@ namespace bsmd.dbh
infected.InfectedAreaDate = ia.InfectedAreaDate.Value; infected.InfectedAreaDate = ia.InfectedAreaDate.Value;
} }
} }
if (mdh.PortOfCallLast30Days.Count > 0) if (mdh.PortOfCallLast30Days.Count > 0)
{ {
choiceTypes2.Add(ItemsChoiceType2.PortsOfCallLast30Days); choiceTypes2.Add(ItemsChoiceType2.PortsOfCallLast30Days);
@ -1063,27 +1063,27 @@ namespace bsmd.dbh
{ {
choiceType3s.Add(ItemsChoiceType3.WasteDisposalDelivery); choiceType3s.Add(ItemsChoiceType3.WasteDisposalDelivery);
wasteItems.Add((DisposalType)was.WasteDisposalDelivery.Value); wasteItems.Add((DisposalType)was.WasteDisposalDelivery.Value);
} }
/* /*
{"Wert von 'ItemsElementName' stimmt nicht mit dem Typ von 'bsmd.dbh.DBHWebReference.RootWASWaste' überein. {"Wert von 'ItemsElementName' stimmt nicht mit dem Typ von 'bsmd.dbh.DBHWebReference.RootWASWaste' überein.
* Sie müssen ihn auf 'bsmd.dbh.DBHWebReference.ItemsChoiceType3.@Waste' festlegen."} * Sie müssen ihn auf 'bsmd.dbh.DBHWebReference.ItemsChoiceType3.@Waste' festlegen."}
*/ */
for (int j = 0; j < was.Waste.Count; j++) for (int j = 0; j < was.Waste.Count; j++)
{ {
choiceType3s.Add(ItemsChoiceType3.Waste); choiceType3s.Add(ItemsChoiceType3.Waste);
RootWASWaste rww = new RootWASWaste(); RootWASWaste rww = new RootWASWaste();
Waste waste = was.Waste[j] as Waste; Waste waste = was.Waste[j] as Waste;
if ((waste.WasteType ?? 0) == 0) continue; // not a valid waste type if ((waste.WasteType ?? 0) == 0) continue; // not a valid waste type
rww.WasteType = new RootWASWasteWasteType(); rww.WasteType = new RootWASWasteWasteType();
rww.WasteType.WasteCode = waste.WasteType ?? 0; rww.WasteType.WasteCode = waste.WasteType ?? 0;
if (rww.WasteType.WasteCode == 2313) rww.WasteType.WasteCode = 2600; // Christin, 22.3.17 if (rww.WasteType.WasteCode == 2313) rww.WasteType.WasteCode = 2600; // Christin, 22.3.17
rww.WasteType.WasteDescription = waste.WasteDescription; rww.WasteType.WasteDescription = waste.WasteDescription;
rww.WasteDisposedAtLastPort_MTQ = decimal.Round((decimal) (waste.WasteDisposedAtLastPort_MTQ ?? 0), 3); // rww.WasteDisposedAtLastPort_MTQ = decimal.Round((decimal) (waste.WasteDisposedAtLastPort_MTQ ?? 0), 3);
rww.WasteDisposalAmount_MTQ = decimal.Round((decimal)(waste.WasteDisposalAmount_MTQ ?? 0), 3); rww.WasteDisposalAmount_MTQ = decimal.Round((decimal)(waste.WasteDisposalAmount_MTQ ?? 0), 3);
rww.WasteDetails = new RootWASWasteWasteDetails(); rww.WasteDetails = new RootWASWasteWasteDetails();
rww.WasteDetails.WasteCapacity_MTQ = decimal.Round((decimal)(waste.WasteCapacity_MTQ ?? 0), 3); rww.WasteDetails.WasteCapacity_MTQ = decimal.Round((decimal)(waste.WasteCapacity_MTQ ?? 0), 3);
rww.WasteDetails.WasteAmountRetained_MTQ = decimal.Round((decimal)(waste.WasteAmountRetained_MTQ ?? 0), 3); rww.WasteDetails.WasteAmountRetained_MTQ = decimal.Round((decimal)(waste.WasteAmountRetained_MTQ ?? 0), 3);
@ -1137,7 +1137,7 @@ namespace bsmd.dbh
rootTowa.TowageOnArrival[i].TowageOnArrivalRemarks = towa.TowageOnArrivalRemarks; rootTowa.TowageOnArrival[i].TowageOnArrivalRemarks = towa.TowageOnArrivalRemarks;
} }
item = rootTowa; item = rootTowa;
} }
break; break;
#endregion #endregion
@ -1176,7 +1176,7 @@ namespace bsmd.dbh
#region HAZA #region HAZA
//Felderreihenfolge wegen einfacher Test/Impl. entspricht genau dem XLS Sheet //Felderreihenfolge wegen einfacher Test/Impl. entspricht genau dem XLS Sheet
case Message.NotificationClass.HAZA: case Message.NotificationClass.HAZA:
{ {
RootHAZA rootHAZA = new RootHAZA(); RootHAZA rootHAZA = new RootHAZA();
HAZ haz = message.Elements[0] as HAZ; HAZ haz = message.Elements[0] as HAZ;
@ -1284,7 +1284,7 @@ namespace bsmd.dbh
rootIMDG.ContainerNumber = imdgPos.ContainerNumber; rootIMDG.ContainerNumber = imdgPos.ContainerNumber;
if(!imdgPos.VehicleLicenseNumber.IsNullOrEmpty()) if(!imdgPos.VehicleLicenseNumber.IsNullOrEmpty())
rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber; rootIMDG.VehicleLicenseNumber = imdgPos.VehicleLicenseNumber;
if (imdgPos.StowagePosition.IsNullOrEmpty()) if (imdgPos.StowagePosition.IsNullOrEmpty())
{ {
rootIMDG.Items = new string[3]; rootIMDG.Items = new string[3];
@ -1304,7 +1304,7 @@ namespace bsmd.dbh
rootIMDG.Items = new string[1] { imdgPos.StowagePosition }; rootIMDG.Items = new string[1] { imdgPos.StowagePosition };
rootIMDG.ItemsElementName = new ItemsChoiceType4[1] { ItemsChoiceType4.StowagePosition }; rootIMDG.ItemsElementName = new ItemsChoiceType4[1] { ItemsChoiceType4.StowagePosition };
} }
rootIMDG.PortOfLoading = imdgPos.PortOfLoading; rootIMDG.PortOfLoading = imdgPos.PortOfLoading;
rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge; rootIMDG.PortOfDischarge = imdgPos.PortOfDischarge;
if(!imdgPos.Remarks.IsNullOrEmpty()) if(!imdgPos.Remarks.IsNullOrEmpty())
@ -1434,9 +1434,9 @@ namespace bsmd.dbh
rootHAZA.Items[3] = dpgOnArrival; rootHAZA.Items[3] = dpgOnArrival;
#endregion #endregion
} }
item = rootHAZA; item = rootHAZA;
} }
break; break;
@ -1448,7 +1448,7 @@ namespace bsmd.dbh
{ {
RootHAZD rootHAZD = new RootHAZD(); RootHAZD rootHAZD = new RootHAZD();
HAZ haz = message.Elements[0] as HAZ; HAZ haz = message.Elements[0] as HAZ;
if (haz.NoDPGOnBoardOnArrival ?? false) if (haz.NoDPGOnBoardOnArrival ?? false)
{ {
rootHAZD.ItemsElementName = new ItemsChoiceType6[1]; rootHAZD.ItemsElementName = new ItemsChoiceType6[1];
@ -1702,9 +1702,9 @@ namespace bsmd.dbh
rootHAZD.Items[3] = dpgOnDeparture; rootHAZD.Items[3] = dpgOnDeparture;
#endregion #endregion
} }
item = rootHAZD; item = rootHAZD;
} }
@ -1721,7 +1721,7 @@ namespace bsmd.dbh
#endregion #endregion
} }
// send object // send object
bool returnval = true; bool returnval = true;
try try
@ -1766,9 +1766,9 @@ namespace bsmd.dbh
catch (Exception ex) catch (Exception ex)
{ {
_log.ErrorFormat("Exception on dbh message send: {0}", ex.Message); _log.ErrorFormat("Exception on dbh message send: {0}", ex.Message);
if (ex.InnerException != null) if (ex.InnerException != null)
_log.ErrorFormat("Inner exception: {0}", ex.InnerException.Message); _log.ErrorFormat("Inner exception: {0}", ex.InnerException.Message);
returnval = false; returnval = false;
} }
finally finally