Beispiel #1
0
        public static string ParseSQLCommand(IAppContext ctx, string sqlcmd, Dictionary <string, string> dict, GetDataRuleFilter datarule, string dataruleString)
        {
            if (datarule != null)
            {
                var dataruleRegex = new Regex("\\{@security:(\\w)+\\}",
                                              RegexOptions.IgnoreCase
                                              | RegexOptions.CultureInvariant
                                              | RegexOptions.IgnorePatternWhitespace
                                              | RegexOptions.Compiled);
                var             drpregex  = new Regex("(\\{@security:)|(\\})");
                MatchCollection drmatches = dataruleRegex.Matches(sqlcmd);
                foreach (Match m in drmatches)
                {
                    string mv          = m.Value;
                    string datarulesql = datarule(drpregex.Replace(mv, ""));
                    if (!string.IsNullOrEmpty(datarulesql))
                    {
                        sqlcmd = sqlcmd.Replace(m.Value, " AND " + datarulesql);
                    }
                    else
                    {
                        sqlcmd = sqlcmd.Replace(m.Value, "");
                    }
                }
            }
            else if (!string.IsNullOrEmpty(dataruleString))
            {
                var sdataruleRegex = new Regex("\\{@security\\}",
                                               RegexOptions.IgnoreCase
                                               | RegexOptions.CultureInvariant
                                               | RegexOptions.IgnorePatternWhitespace
                                               | RegexOptions.Compiled);
                if (sdataruleRegex.IsMatch(sqlcmd))
                {
                    sqlcmd = sdataruleRegex.Replace(sqlcmd, string.IsNullOrEmpty(dataruleString) ? "" : (" AND " + dataruleString));
                }
                else if (!string.IsNullOrEmpty(dataruleString))
                {
                    sqlcmd = sqlcmd + " AND " + dataruleString;
                }
            }

            return(ParseSQLCommand(ctx, sqlcmd, dict));
        }
Beispiel #2
0
 public static string ParseSQLCommand(IAppContext ctx, string sqlcmd, GetDataRuleFilter datarule)
 {
     return(ParseSQLCommand(ctx, sqlcmd, null, datarule, null));
 }