Example #1
0
        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);
        }
Example #2
0
        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));
        }