diff --git a/bsmd.database/HAZ.cs b/bsmd.database/HAZ.cs index e73ce1e2..a0755f50 100644 --- a/bsmd.database/HAZ.cs +++ b/bsmd.database/HAZ.cs @@ -380,7 +380,10 @@ namespace bsmd.database public void SaveElements() { foreach (IMDGPosition imdg in this.IMDGPositions) + { DBManager.Instance.Save(imdg); + ((ISublistContainer)imdg).SaveElements(); + } foreach (IMSBCPosition imsbc in this.IMSBCPositions) DBManager.Instance.Save(imsbc); foreach (IBCPosition ibc in this.IBCPositions) @@ -388,7 +391,7 @@ namespace bsmd.database foreach (IGCPosition igc in this.IGCPositions) DBManager.Instance.Save(igc); foreach (MARPOL_Annex_I_Position marpol in this.MARPOLPositions) - DBManager.Instance.Save(marpol); + DBManager.Instance.Save(marpol); } diff --git a/bsmd.database/IMDGPosition.cs b/bsmd.database/IMDGPosition.cs index e14a782d..6f78d97a 100644 --- a/bsmd.database/IMDGPosition.cs +++ b/bsmd.database/IMDGPosition.cs @@ -21,7 +21,7 @@ namespace bsmd.database [TypeConverter(typeof(MessageClassConverter))] [JsonConverter(typeof(NoTypeConverterJsonConverter))] - public class IMDGPosition : DatabaseEntity, ISublistElement + public class IMDGPosition : DatabaseEntity, ISublistElement, ISublistContainer { public IMDGPosition() { @@ -229,7 +229,7 @@ namespace bsmd.database else { string[] risks = value.Split(','); - List foundList = new List(); + List foundList = new List(); for (int i = 0; i < risks.Length; i++) { @@ -441,6 +441,42 @@ namespace bsmd.database #endregion + #region ISublistContainer implementation + + public ISublistElement GetSublistElementWithIdentifier(string identifier) + { + foreach (ISublistElement sElem in this.SubsidiaryRiskList) + if (sElem.Identifier.Equals(identifier)) + return sElem; + return null; + } + + [Browsable(false)] + [JsonIgnore] + public int NumberOfExcelRows + { + get { return 1; } + } + + public void SaveElements() + { + foreach (SubsidiaryRisks sr in this.SubsidiaryRiskList) + { + DBManager.Instance.Save(sr); + } + } + + public void DeleteElements() + { + foreach (SubsidiaryRisks sr in this.SubsidiaryRiskList) + { + DBManager.GetSingleCon(DBManager.Instance.ConnectionString).Delete(sr); + } + this.SubsidiaryRiskList.Clear(); + } + + #endregion + #region Validation public override void Validate(List errors, List violations) diff --git a/bsmd.database/Util.cs b/bsmd.database/Util.cs index 34b9c511..00793a32 100644 --- a/bsmd.database/Util.cs +++ b/bsmd.database/Util.cs @@ -187,7 +187,7 @@ namespace bsmd.database // abgesehen von "Listen" für die Nachrichtenklassen auch untergeordnete Elemente erzeugen, falls nicht vorhanden! DatabaseEntity classElement; if (!Message.IsListClass(notificationClass) && (message.Elements.Count == 0)) - { + { classElement = DBManager.CreateMessage(notificationClass); // CH: 6.10.17: Für die manuelle Eingabe (wird leider nicht ganz auszuschließen sein) wäre es hilfreich, wenn alle Checkboxen nicht leer sind, sondern False beinhalten. diff --git a/bsmd.database/WAS_RCPT.cs b/bsmd.database/WAS_RCPT.cs index 527a3927..12829d87 100644 --- a/bsmd.database/WAS_RCPT.cs +++ b/bsmd.database/WAS_RCPT.cs @@ -345,12 +345,7 @@ namespace bsmd.database { RuleEngine.ValidateProperties(wasteReceived, errors, violations); wasteReceived.Validate(errors, violations); - } - - if(TreatmentFacilityProviderText.IsNullOrEmpty()) - { - errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "TreatmentFacilityProviderName empty", null, this.Title, this.IdentificationNumber, this.Tablename)); - } + } bool entryMissing = false; string missingType = ""; diff --git a/bsmd.dbh/RequestUtil.cs b/bsmd.dbh/RequestUtil.cs index 2aedd467..cc5c6c5e 100644 --- a/bsmd.dbh/RequestUtil.cs +++ b/bsmd.dbh/RequestUtil.cs @@ -477,7 +477,7 @@ namespace bsmd.dbh rootCREW.CrewMember[i].CrewMemberFirstName = crew.CrewMemberFirstName; rootCREW.CrewMember[i].CrewMemberGenderSpecified = crew.CrewMemberGender.HasValue; if (crew.CrewMemberGender.HasValue) - rootCREW.CrewMember[i].CrewMemberGender = (Gender)crew.CrewMemberGender.Value; + rootCREW.CrewMember[i].CrewMemberGender = SetGender(crew.CrewMemberGender.Value); rootCREW.CrewMember[i].CrewMemberIdentityDocumentId = crew.CrewMemberIdentityDocumentId; if (crew.CrewMemberIdentityDocumentType.HasValue) rootCREW.CrewMember[i].CrewMemberIdentityDocumentType = (IdDocType)crew.CrewMemberIdentityDocumentType.Value; @@ -515,7 +515,7 @@ namespace bsmd.dbh rootPAS.Passenger[i].PassengerDateOfBirth = pas.PassengerDateOfBirth.Value; rootPAS.Passenger[i].PassengerGenderSpecified = pas.PassengerGender.HasValue; if (pas.PassengerGender.HasValue) - rootPAS.Passenger[i].PassengerGender = (Gender)pas.PassengerGender.Value; + rootPAS.Passenger[i].PassengerGender = SetGender(pas.PassengerGender.Value); rootPAS.Passenger[i].PassengerNationality = pas.PassengerNationality; if (pas.PassengerIdentityDocumentType.HasValue) rootPAS.Passenger[i].PassengerIdentityDocumentType = (IdDocType)pas.PassengerIdentityDocumentType.Value; @@ -1711,5 +1711,27 @@ namespace bsmd.dbh return null; } } + + #region helper + + private static Gender SetGender(byte genderVal) + { + switch (genderVal) + { + case 0: + return Gender.NOT_KNOWN; + case 1: + return Gender.MALE; + case 2: + return Gender.FEMALE; + case 9: + return Gender.NOT_APPLICABLE; + default: + return Gender.NOT_KNOWN; + } + } + + #endregion + } }