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,