Exemple #1
0
        /// <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));
                            }
                        }
                    } //);
                }
            }         //);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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());
        }