public ValidationRule LoadSetupFile(string containFolder, string filename) { containFolder = containFolder ?? Path.Combine(GetContainFolder(), "Validation\\Rules"); filename = filename ?? $"{typeof(T).Name}ValidationRules.json"; return(RuleService.GetSetupRules <T>(containFolder, filename)); }
public void LoadCommonFile() { string containFolder = Path.Combine(GetContainFolder(), "Common"); string filename = "commonSettings.json"; RuleService.GetCommonSettings(containFolder, filename); }
public ElectrixValidationBase(string containFolder, string filename) { LoadCommonFile(); var setupRules = LoadSetupFile(containFolder, filename); if (setupRules.ValidationRules == null || !setupRules.ValidationRules.Any()) { return; } var errorMessages = setupRules.ErrorMessages; foreach (var ruleFor in setupRules.ValidationRules) { var parameter = Expression.Parameter(typeof(T)); var memberExpression = Expression.Property(parameter, typeof(T), ruleFor.PropertyName); var propertyInfo = typeof(T).GetProperty(ruleFor.PropertyName); var propertyType = propertyInfo.PropertyType; switch (Type.GetTypeCode(propertyType)) { case TypeCode.String: var func = Expression.Lambda <Func <T, string> >(memberExpression, parameter); var appliedRule = RuleFor(func); if (ruleFor.IsRequired) { appliedRule.NotNull().WithMessage(string.Format(RuleService.GetCommonSetting(CommonSettings.IsRequiredErrorMessage), ruleFor.PropertyName)); } appliedRule.SetValidator(new StringValidator(ruleFor.Rules, errorMessages)); break; default: _logger?.Error($"Custom Fluent Validation From File - Mising define Property Data Type {propertyType.Name} to build Rule"); break; } } }