From e7714754d8f59bb8dc29aeb6340380e93310175b Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Wed, 21 Aug 2019 23:55:42 +0800 Subject: Add validators. --- Timeline/Models/Validation/UserDetailValidator.cs | 113 +++++++++++++++++++++- 1 file changed, 109 insertions(+), 4 deletions(-) (limited to 'Timeline/Models/Validation/UserDetailValidator.cs') diff --git a/Timeline/Models/Validation/UserDetailValidator.cs b/Timeline/Models/Validation/UserDetailValidator.cs index 5fdaec00..19c82edb 100644 --- a/Timeline/Models/Validation/UserDetailValidator.cs +++ b/Timeline/Models/Validation/UserDetailValidator.cs @@ -1,11 +1,116 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using System.Net.Mail; namespace Timeline.Models.Validation { - public class UserDetailValidator + public abstract class OptionalStringValidator : IValidator { + public bool Validate(object value, out string message) + { + if (value == null) + { + message = ValidationConstants.SuccessMessage; + return true; + } + + if (value is string s) + { + if (s.Length == 0) + { + message = ValidationConstants.SuccessMessage; + return true; + } + return DoValidate(s, out message); + } + else + { + message = "Value is not of type string."; + return false; + } + } + + protected abstract bool DoValidate(string value, out string message); + } + + public static class UserDetailValidators + { + + public class QQValidator : OptionalStringValidator + { + protected override bool DoValidate(string value, out string message) + { + if (value.Length < 5) + { + message = "QQ is too short."; + return false; + } + + if (value.Length > 11) + { + message = "QQ is too long."; + return false; + } + + foreach (var c in value) + { + if (!char.IsDigit(c)) + { + message = "QQ must only contain digit."; + return false; + } + } + + message = ValidationConstants.SuccessMessage; + return true; + } + } + + public class EMailValidator : OptionalStringValidator + { + protected override bool DoValidate(string value, out string message) + { + if (value.Length > 50) + { + message = "E-Mail is too long."; + return false; + } + + try + { + var _ = new MailAddress(value); + } + catch (FormatException) + { + message = "The format of E-Mail is bad."; + return false; + } + message = ValidationConstants.SuccessMessage; + return true; + } + } + + public class PhoneNumberValidator : OptionalStringValidator + { + protected override bool DoValidate(string value, out string message) + { + if (value.Length > 14) + { + message = "Phone number is too long."; + return false; + } + + foreach (var c in value) + { + if (!char.IsDigit(c)) + { + message = "Phone number can only contain digit."; + return false; + } + } + + message = ValidationConstants.SuccessMessage; + return true; + } + } } } -- cgit v1.2.3