public static List <Task> CreateByPropertyName(IValidatableSchema entity, PropertyInfo[] properties, string propertyName, string[] rules, ValidationResult result) { ValidateRulesAndResultObject(rules, result); var property = properties.FirstOrDefault(p => p.Name.Equals(propertyName)); var tasks = new List <Task>(); ValidateProperty(propertyName, property); var propertyValue = property.GetValue(entity); foreach (var rule in rules) { switch (rule) { case RuleName.REQUIRED: tasks.Add(new Task(() => result.Add(CommonValidations.IsRequired(property, propertyValue)))); break; case string r when r.Contains(RuleName.MIN): tasks.Add(new Task(() => result.Add(CreateValidationForMin(property, propertyValue, rule)))); break; case string r when r.Contains(RuleName.MAX): tasks.Add(new Task(() => result.Add(CreateValidationForMax(property, propertyValue, rule)))); break; case string r when r.Contains(RuleName.GUID): tasks.Add(new Task(() => result.Add(CreateValidationForGuid(property, propertyValue, rule)))); break; case RuleName.EMAIL: tasks.Add(new Task(() => result.Add(EmailValidations.IsEmail(property, propertyValue)))); break; case RuleName.CNPJ: tasks.Add(new Task(() => result.Add(CnpjValidations.IsCnpj(property, propertyValue)))); break; case RuleName.CPF: tasks.Add(new Task(() => result.Add(CpfValidations.IsCpf(property, propertyValue)))); break; default: throw new RuleNotSupportedException(rule); } } return(tasks); }
public bool IsEmailValid(string email) { if (!IsUserNameAvailable(email)) { throw new Exception("Email already registered"); } if (!EmailValidations.IsValid(email)) { throw new Exception("Email is not valid"); } return(true); }