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)); }
public static string ParseSQLCommand(IAppContext ctx, string sqlcmd, GetDataRuleFilter datarule) { return(ParseSQLCommand(ctx, sqlcmd, null, datarule, null)); }