diff --git a/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml b/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml index 90ba24a2..fe9d1837 100644 --- a/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml +++ b/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml @@ -70,7 +70,7 @@ - + diff --git a/bsmd.database/CREW.cs b/bsmd.database/CREW.cs index 78041839..bbc1f5de 100644 --- a/bsmd.database/CREW.cs +++ b/bsmd.database/CREW.cs @@ -121,7 +121,7 @@ namespace bsmd.database [ShowReport] [ReportDisplayName("Expiry date")] - [Validation(ValidationCode.NOT_NULL)] + [Validation(ValidationCode.PAST_DATE)] [ENI2Validation] public DateTime? CrewMemberIdentityDocumentExpiryDate { get; set; } diff --git a/bsmd.database/Extensions.cs b/bsmd.database/Extensions.cs index c66e68a0..0e745fd5 100644 --- a/bsmd.database/Extensions.cs +++ b/bsmd.database/Extensions.cs @@ -83,7 +83,7 @@ namespace bsmd.database StringBuilder sb = new StringBuilder(); foreach (char c in str) { - if ((c > '\u0020' && c < '\u007E') || c == ' ' || c == '\t' || c == '\n') + if (!char.IsControl(c) || c == ' ' || c == '\t' || c == '\n') sb.Append(c); } return sb.ToString(); diff --git a/bsmd.database/PAS.cs b/bsmd.database/PAS.cs index f367423b..aeaaa61c 100644 --- a/bsmd.database/PAS.cs +++ b/bsmd.database/PAS.cs @@ -125,7 +125,7 @@ namespace bsmd.database [ShowReport] [ReportDisplayName("Expiry date")] - [Validation(ValidationCode.NOT_NULL)] + [Validation(ValidationCode.PAST_DATE)] [ENI2Validation] public DateTime? PassengerIdentityDocumentExpiryDate { get; set; } diff --git a/bsmd.database/RuleEngine.cs b/bsmd.database/RuleEngine.cs index 7cdea26d..d22adbf5 100644 --- a/bsmd.database/RuleEngine.cs +++ b/bsmd.database/RuleEngine.cs @@ -354,6 +354,16 @@ namespace bsmd.database } } break; + case ValidationCode.PAST_DATE: + { + if (value.Length == 0) errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, property.Name, value, entity.Title, identifier, entity.Tablename)); + if (DateTime.TryParse(value, out DateTime aTime)) + { + if (aTime < DateTime.UtcNow) + errors.Add(RuleEngine.CreateError(validationCode, property.Name, value, entity.Title, identifier, entity.Tablename)); + } + } + break; case ValidationCode.DOT_NO_COMMA: { if(!value.IsNullOrEmpty() && (value.Contains(","))) diff --git a/bsmd.database/ValidationAttribute.cs b/bsmd.database/ValidationAttribute.cs index dabe029e..0e531cf2 100644 --- a/bsmd.database/ValidationAttribute.cs +++ b/bsmd.database/ValidationAttribute.cs @@ -50,8 +50,9 @@ namespace bsmd.database OPTIONAL_FLAG_CODE, WORDOVERFLOW, VALUE_TOO_LARGE, + PAST_DATE, V181 = 181, - V182, + V182, E121 = 121, E122 = 122, E123 = 123,