public string GetMessage(object controller, Dictionary <string, Parameter> parameters, View view, Dictionary <string, object> values, DataRow prevRow, LogicalParser parser, out bool hasErrors, string pk, int currentUserId, string currentUserRole) { string message = string.Empty; string prefix = string.Empty; string postfix = string.Empty; List <string> expressions = parameters.Keys.ToList(); Dictionary <string, string> displayNames = new Dictionary <string, string>(); if (values != null) { foreach (Field field in view.Fields.Values) { displayNames.Add(field.Name, field.DisplayName); } } if (parameters.ContainsKey("prefix")) { prefix = parameters["prefix"].Value; expressions.Remove("prefix"); } if (parameters.ContainsKey("postfix")) { postfix = parameters["postfix"].Value; expressions.Remove("postfix"); } hasErrors = false; if (controller is Durados.Workflow.INotifier) { foreach (string expression in expressions) { string template = expression.ReplaceAllTokens(view, values, pk, currentUserId.ToString(), view.Database.GetCurrentUsername(), currentUserRole, prevRow); template = template.Replace(Engine.AsToken(values), ((Durados.Workflow.INotifier)controller).GetTableViewer(), view); if (!parser.Check(template.ReplaceWithoutPrefix(view, values, prevRow))) { hasErrors = true; message += parameters[expression].Value.Replace(displayNames); } } } message = prefix + message + postfix; return(message); }
public virtual bool Check(View view, Durados.Rule rule, Durados.TriggerDataAction dataAction, Dictionary <string, object> values, string pk, DataRow prevRow, bool useSqlPareser, string connectionString, int currentUserId, string currentUserRole) { if (rule.WhereCondition.Equals("true")) { return(true); } if (useSqlPareser && view != view.Database.GetUserView()) { return(CheckUsingSql(view, rule, dataAction, values, pk, prevRow, connectionString, currentUserId, currentUserRole)); } else if (string.IsNullOrEmpty(rule.WhereCondition)) { return(true); } return(parser.Check(rule.WhereCondition.Replace(currentUserId) .Replace(Database.SysUsernamePlaceHolder.AsToken(), GetCurrentUsername(view)) .Replace(Database.SysRolePlaceHolder.AsToken(), currentUserRole) .Replace(GetPrevRowAsToken(view, prevRow)).Replace(GetValuesAsToken(values)).Replace(values) .ReplaceConfig(view))); //.ReplaceGlobals(view)); }