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)))); }
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>()); }
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); }
IEnumerable <TLogicRule> CollectRulesFromModel(IModelLogic modelLogic, ITypeInfo info) { return((modelLogic.Rules.Where( ruleDefinition => info == ruleDefinition.ModelClass.TypeInfo).Select(GetRuleObject)).OfType <TLogicRule>()); }