Beispiel #1
0
        public void NotifyEvent(string eventName, object dataObject, int terminalId, int departmentId, int userRoleId, Action <ActionData> dataAction)
        {
            var rules = _cacheService.GetAppRules(eventName, terminalId, departmentId, userRoleId);

            foreach (var rule in rules.Where(x => string.IsNullOrEmpty(x.EventConstraints) || SatisfiesConditions(x, dataObject)))
            {
                if (!CanExecuteRule(rule, dataObject))
                {
                    continue;
                }
                foreach (var actionContainer in rule.Actions.Where(x => CanExecuteAction(x, dataObject)))
                {
                    var container                = actionContainer;
                    var action                   = _cacheService.GetActions().Single(x => x.Id == container.AppActionId);
                    var clonedAction             = ObjectCloner.Clone(action);
                    var containerParameterValues = container.ParameterValues ?? "";
                    _settingService.ClearSettingCache();
                    clonedAction.Parameter   = _settingService.ReplaceSettingValues(clonedAction.Parameter);
                    containerParameterValues = _settingService.ReplaceSettingValues(containerParameterValues);
                    containerParameterValues = ReplaceParameterValues(containerParameterValues, dataObject);
                    clonedAction.Parameter   = _expressionService.ReplaceExpressionValues(clonedAction.Parameter, dataObject);
                    containerParameterValues = _expressionService.ReplaceExpressionValues(containerParameterValues, dataObject);
                    var data = new ActionData {
                        Action = clonedAction, DataObject = dataObject, ParameterValues = containerParameterValues
                    };
                    dataAction.Invoke(data);
                    dataObject = data.DataObject;
                }
            }
        }
Beispiel #2
0
        public string Process(string input, object dataObject)
        {
            _settingService.ClearSettingCache();
            var result = _settingService.ReplaceSettingValues(input);

            if (dataObject != null)
            {
                result = ReplaceParameterValues(result, dataObject);
                result = ReplaceModelData(result, dataObject);
                result = _expressionService.ReplaceExpressionValues(result, dataObject);
            }
            return(result);
        }
 private string UpdateExpressions(string data)
 {
     data = _expressionService.ReplaceExpressionValues(data);
     data = _settingService.ReplaceSettingValues(data);
     return(data);
 }
 private string UpdateExpressions(string data, object dataObject)
 {
     data = _expressionService.ReplaceExpressionValues(data, dataObject.ToDynamic());
     data = _settingService.ReplaceSettingValues(data);
     return(data);
 }