/// <summary> /// Validates a property and adds errors to the list if the property is invalid /// </summary> private void PerformValidation(IPropertyValidation validation) { if (validation.IsInvalid()) { AddErrorMessageForProperty(validation.PropertyName, validation.ErrorMessage); } }
private static IEnumerable <Exception> ValidateDataModel(IPropertyValidation dataModel) { var list = new List <Exception>(); var required = ValidateDataModelRequired(dataModel); if (required != null) { list.Add(required); } var maxLength = ValidateDataModelMaxLength(dataModel); if (maxLength != null) { list.Add(maxLength); } var minLength = ValidateDataModelMinLength(dataModel); if (maxLength != null) { list.Add(minLength); } return(list); }
private static void HandleValidations(IPropertyValidation propertyValidationModel) { if (propertyValidationModel.Value != null && propertyValidationModel.MaxLength != null) { if (propertyValidationModel.Value.ToString().Length > propertyValidationModel.MaxLength) { propertyValidationModel.Value = propertyValidationModel.Value.ToString().Substring(0, (int)propertyValidationModel.MaxLength); } } }
private static void UpdateStringPropertyValue(object instance, IPropertyValidation propertyValidationModel) { object value = null; if (propertyValidationModel.PropertyInfo.PropertyType.IsValueType) { value = Activator.CreateInstance(propertyValidationModel.PropertyInfo.PropertyType); } propertyValidationModel.PropertyInfo.SetValue(instance, Convert.ChangeType( value, propertyValidationModel.PropertyInfo.PropertyType), null); }
private static void UpdateSimpleTypePropertyValue(object instance, IPropertyValidation propertyValidationModel) { if (string.IsNullOrEmpty(propertyValidationModel.Value.ToString())) { UpdateStringPropertyValue(instance, propertyValidationModel); } else { UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, propertyValidationModel.Value); } }
private static void UpdateInterfacePropertyValue(object instance, IPropertyValidation propertyValidationModel) { if (!propertyValidationModel.PropertyInfo.PropertyType.IsInterface) { return; } var anyClassImplementingInterface = ConversionMethods.GetConcreteClassFromInterface(propertyValidationModel.PropertyInfo); var anyClassAsElement = anyClassImplementingInterface as BaseElement; if (anyClassAsElement == null) { return; } UpdateReferences(anyClassAsElement, propertyValidationModel.GenericReferenceElement); propertyValidationModel.PropertyInfo.SetValue(instance, anyClassImplementingInterface); }
private static void UpdateCollectionPropertyValues(object instance, IPropertyValidation propertyValidationModel) { try { var collectionItem = propertyValidationModel.PropertyInfo.PropertyType.GetGenericArguments(); var collectionType = collectionItem[0]; var subtype = collectionType.UnderlyingSystemType; var listType = typeof(List <>); var constructedListType = listType.MakeGenericType(subtype); //var constructedType = ConversionMethods.GetConcreteClassFromInterface(Subtype); var instanceChild = (IList)Activator.CreateInstance(constructedListType); var data = propertyValidationModel.Value; // data is the list of Generic item (Field, Component, Subcomponenet, etc) // need too loop through each item, set each class, then assign the List<T> to the element/instance if (data is IList) { var dataList = data as IList <IGenericRootItem>; if (dataList != null) { foreach (var genericRootItem in dataList) { UpdateRepeatedItemList(instanceChild, subtype, genericRootItem); } } } else { //This is a list of items, but only 1 item if (ReflectionHelpers.HasInterface(propertyValidationModel.GenericReferenceElement, typeof(IHasChildren <>))) { UpdateRepeatedItemList(instanceChild, subtype, propertyValidationModel.GenericReferenceElement); } } UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, instanceChild); } catch (Exception e) { Console.WriteLine(e); throw; } }
private static void UpdatePropertyValues(object instance, IPropertyValidation propertyValidationModel) { Ensure.ArgumentNotNull(nameof(instance), instance); Ensure.ArgumentNotNull(nameof(propertyValidationModel), propertyValidationModel); // Check for collection first if (propertyValidationModel.IsCollection) { UpdateCollectionPropertyValues(instance, propertyValidationModel); return; } if (typeof(bool) == propertyValidationModel.PropertyInfo.PropertyType) { UpdateBoolPropertyValue(instance, propertyValidationModel); return; } if (propertyValidationModel.PropertyInfo.PropertyType.IsSimpleType()) { UpdateSimpleTypePropertyValue(instance, propertyValidationModel); return; } if (typeof(Guid) == propertyValidationModel.PropertyInfo.PropertyType) { UpdateGuidPropertyValue(instance, propertyValidationModel); return; } if (typeof(DateTime) == propertyValidationModel.PropertyInfo.PropertyType) { UpdateDateTimePropertyValue(instance, propertyValidationModel); return; } // Property is probably interface. UpdateInterfacePropertyValue(instance, propertyValidationModel); }
private static ApplicationExceptions.MinimumLengthNotReachedException ValidateDataModelMinLength(IPropertyValidation dataModel) { return(dataModel.MinLength != null && dataModel.Value?.ToString().Length < dataModel.MinLength ? new ApplicationExceptions.MinimumLengthNotReachedException($"{dataModel.Name}:{dataModel.MinLength}({dataModel.Value?.ToString().Length})") : null); }
private static ApplicationExceptions.RequiredFieldIsNullException ValidateDataModelRequired(IPropertyValidation dataModel) { return(dataModel.IsRequired && dataModel.Value == null ? new ApplicationExceptions.RequiredFieldIsNullException(dataModel.Name) : null); }
private static void UpdateGuidPropertyValue(object instance, IPropertyValidation propertyValidationModel) { var convertedValue = new Guid(propertyValidationModel.GenericReferenceElement.Source); UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, convertedValue); }
private static void UpdateDateTimePropertyValue(object instance, IPropertyValidation propertyValidationModel) { var convertedValue = propertyValidationModel.GenericReferenceElement.Source.ToDateTimeFromFormat(); UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, convertedValue); }
private static void UpdateBoolPropertyValue(object instance, IPropertyValidation propertyValidationModel) { UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, propertyValidationModel.Value.ToString().ToBoolean()); }