public UserAccessNodeVM(int accessRuleId, int userId, AccessRuleDataService accessRuleDataService, UserAccessRuleDataService userAccessRuleDataService, List<Tuple<int, AccessType>> ruleAccessList, AccessType access) : base(access) { var accessRule = accessRuleDataService.GetSingle(accessRuleId); Title = Common.Properties.Resources.ResourceManager.GetString(accessRule.Name); Id = accessRule.Id; ParentId = accessRule.Parent != null ? accessRule.Parent.Id : -1; foreach (var child in accessRule.Children) { ChildNodes.Add(new UserAccessNodeVM(child.Id, userId, accessRuleDataService, userAccessRuleDataService, ruleAccessList, Access)); } var userAccessRule = userAccessRuleDataService.GetSingle(userId, accessRuleId); if (userAccessRule != null) { if (userAccessRule.Type != null) UserAccess = (AccessType)userAccessRule.Type; } if(!ruleAccessList.Any()) return; foreach (Tuple<int, AccessType> tuple in ruleAccessList.Where(item => item.Item1 == accessRuleId)) { PositionAccess |= tuple.Item2; } }