/// <summary> /// Executes the specified table. /// </summary> /// <param name="table">The table.</param> /// <param name="fields">The fields.</param> public void Execute(DataTable table, List <FieldSchemaModel> fields) { ValidatorRepository validator = new ValidatorRepository(); var cols = fields.Where(w => string.IsNullOrEmpty(w.ValidationMacros) == false).ToList(); validator.LoadLists(string.Join("; ", cols.Select(s => s.ValidationMacros).ToList())); string[] keyFields = { "DOC_DOCUMENT_NO", "DOC_DOCUMENT_REV" }; //Parallel.ForEach(table.AsEnumerable(), row => foreach (DataRow row in table.Rows) { foreach (var col in cols) { string value = row[col.Name]?.ToString(); //Parallel.ForEach(ParseFunctions(col.ValidationMacros), method => { foreach (var method in ParseFunctions(col.ValidationMacros)) { List <bool> results = new List <bool>(); var groups = ParseFunctionGroups(method); bool result = false; foreach (var group in groups) { var items = ParseParameters(group); result = validator[items.First()](value, group); results.Add(result); } if (method.Contains(" OR ")) { result = results.Any(a => a == true); } else if (method.Contains(" AND ")) { result = results.All(a => a == true); } if (ShouldReturn(method, result)) { OnValidate(this, new ValidationEventArgs(col.Name, method, result, row, row["PRIMARY_KEY"].ToString(), table.Rows.Count, value)); } } } //); } } //); }
/// <summary> /// Creates the matrix. /// </summary> /// <returns>DataTable.</returns> public static DataTable CreateFunctionMatrix() { ValidatorRepository repo = new ValidatorRepository(); DataTable table = new DataTable("Matrix"); table.Columns.Add("Attribute Name"); foreach (var item in repo) { table.Columns.Add(item.Key); } return(table); }
/// <summary> /// Gets the function list. /// </summary> /// <returns>System.String[].</returns> public static string[] GetFunctionList() { ValidatorRepository repo = new ValidatorRepository(); return(repo.Where(w => w.Key.First() != '+' && w.Key.First() != '-').Select(s => s.Key).ToArray()); }