Example #1
0
        ExecutionContext CalculateCurrentExecutionContext(string executionContextGroup)
        {
            IModelLogic modelLogic             = GetModelLogic();
            var         modelExecutionContexts = modelLogic.ExecutionContextsGroup.Single(context => context.Id == executionContextGroup);

            return(modelExecutionContexts.Aggregate(ExecutionContext.None, (current, modelGroupContext) =>
                                                    current | (ExecutionContext)Enum.Parse(typeof(ExecutionContext), modelGroupContext.Name.ToString(CultureInfo.InvariantCulture))));
        }
Example #2
0
 protected virtual IEnumerable <TLogicRule> CollectRulesFromPermissions(IModelLogic modelLogic, ITypeInfo typeInfo, bool reloadPermissions)
 {
     if (reloadPermissions)
     {
         var permissions = GetPermissions();
         return(permissions.OfType <TLogicRule>().Where(permission => permission.TypeInfo != null && permission.TypeInfo.Type == typeInfo.Type).OrderBy(rule => rule.Index));
     }
     return(new List <TLogicRule>());
 }
Example #3
0
 public virtual void CollectRules(XafApplication xafApplication)
 {
     lock (LogicRuleManager <TLogicRule> .Instance) {
         bool        reloadPermissions = ReloadPermissions();
         IModelLogic modelLogic        = GetModelLogic(xafApplication.Model);
         foreach (ITypeInfo typeInfo in XafTypesInfo.Instance.PersistentTypes)
         {
             LogicRuleManager <TLogicRule> .Instance[typeInfo] = null;
             List <TLogicRule> modelLogicRules       = CollectRulesFromModel(modelLogic, typeInfo).ToList();
             List <TLogicRule> permissionsLogicRules = CollectRulesFromPermissions(modelLogic, typeInfo, reloadPermissions).ToList();
             modelLogicRules.AddRange(permissionsLogicRules);
             LogicRuleManager <TLogicRule> .Instance[typeInfo] = modelLogicRules;
         }
     }
     OnRulesCollected(EventArgs.Empty);
 }
Example #4
0
 IEnumerable <TLogicRule> CollectRulesFromModel(IModelLogic modelLogic, ITypeInfo info)
 {
     return((modelLogic.Rules.Where(
                 ruleDefinition => info == ruleDefinition.ModelClass.TypeInfo).Select(GetRuleObject)).OfType <TLogicRule>());
 }