private ProfileValidationRuleMetadata GetFieldValidator(Type validatorType, MemberInfo memberInfo) { if (!(memberInfo.GetCustomAttributes(validatorType).FirstOrDefault() is ValidationAttribute validationAttribute)) { return(null); } var validatorDescription = DataAnnotationAttrsMap[validatorType]; var validator = new ProfileValidationRuleMetadata(validationAttribute) { Type = validatorDescription.ClientSideTypeNaming, NeedsInternalLocalization = string.IsNullOrEmpty(validationAttribute.ErrorMessageResourceName) || validationAttribute.ErrorMessageResourceType == null }; if (validator.NeedsInternalLocalization) { validationAttribute.ErrorMessage = validatorDescription.DefaultErrorMessage; } validator.ErrorKey = validationAttribute.ErrorMessage; foreach (var prop in validatorType.GetProperties()) { if (BaseValidationAttributeProperties.Contains(prop.Name)) { continue; } var propValue = prop.GetValue(validationAttribute, null); if (propValue != null) { validator.Parameters.Add(prop.Name.ToCamelCase(), propValue.ToString()); } } return(validator); }
private ProfileFieldMetadata GetField(MemberInfo memberInfo) { var displayAttr = memberInfo.GetCustomAttributes <OwnIdFieldAttribute>().FirstOrDefault(); var typeAttr = memberInfo.GetCustomAttributes <OwnIdFieldTypeAttribute>().FirstOrDefault(); var fieldData = new ProfileFieldMetadata { Label = displayAttr?.Label ?? memberInfo.Name, Placeholder = displayAttr?.Placeholder ?? string.Empty, Key = memberInfo.Name, Type = (typeAttr?.FieldType ?? ProfileFieldType.Text).ToString().ToLowerInvariant(), Validators = new List <ProfileValidationRuleMetadata>() }; foreach (var type in DataAnnotationAttrsMap.Keys) { var validator = GetFieldValidator(type, memberInfo); if (validator != null) { fieldData.Validators.Add(validator); } } if (typeAttr != null && typeAttr.FieldType != ProfileFieldType.Text) { var validator = new ProfileValidationRuleMetadata(typeAttr) { Type = fieldData.Type, ErrorKey = Constants.DefaultInvalidFormatErrorMessage, NeedsInternalLocalization = string.IsNullOrEmpty(typeAttr.ErrorMessageResourceName) || typeAttr.ErrorMessageResourceType == null }; fieldData.Validators.Add(validator); } return(fieldData); }