private void AddPageTypePropertyDefinitions(IEnumerable<PropertyInfo> properties, ICollection<AuthorizedPropertyDefinition> definitions,
            TabDefinitionCollection tabDefinitions, string hierarchy, AuthorizeAttribute propertyGroupAuthorizeAttribute)
        {
            var pageTypeProperties = properties.Where(AttributedTypesUtility.PropertyHasAttribute<PageTypePropertyAttribute>).ToList();

            foreach (PropertyInfo property in pageTypeProperties)
            {
                AuthorizeAttribute attribute = AttributedTypesUtility
                                                    .GetAttributesFromProperty<AuthorizeAttribute>(property)
                                                    .FirstOrDefault();

                // if property has an authorize attribute
                if (attribute != null)
                {
                    definitions.Add(AuthorizedPropertyDefinitionFactory.Create(string.Concat(hierarchy, property.Name), attribute.GetAuthorizedPrincipals()));
                    continue;
                }

                // Add any tab authorization rules
                if (AddTabAuthorizationRules(tabDefinitions, property, definitions, hierarchy))
                    continue;

                // if property group authorize attribute has been defined then apply to property
                if (propertyGroupAuthorizeAttribute != null)
                {
                    definitions.Add(AuthorizedPropertyDefinitionFactory.Create(string.Concat(hierarchy, property.Name), propertyGroupAuthorizeAttribute.GetAuthorizedPrincipals()));
                    continue;
                }

                // if the page type class has an authorize attribute
                if (HasClassLevelAttribute)
                    definitions.Add(AuthorizedPropertyDefinitionFactory.Create(string.Concat(hierarchy, property.Name), ClassAttribute.GetAuthorizedPrincipals()));
            }
        }
        public TabDefinitionCollection List()
        {
            var tabCollection = new TabDefinitionCollection();
            foreach (var tab in MapRecordsToExposedObjects(tabs))
            {
                tabCollection.Add(tab);
            }

            return tabCollection;
        }
        public TabDefinitionCollection List()
        {
            var tabCollection = new TabDefinitionCollection();

            foreach (var tab in MapRecordsToExposedObjects(tabs))
            {
                tabCollection.Add(tab);
            }

            return(tabCollection);
        }
 public TabDefinitionCollection List()
 {
     TabDefinitionCollection tabDefinitionCollection = new TabDefinitionCollection
                                                           {
                                                               new TabDefinition
                                                                   {
                                                                       ID = 100,
                                                                       IsSystemTab = false,
                                                                       Name = "MetaData"
                                                                   },
                                                                   new TabDefinition
                                                                   {
                                                                       ID = 101,
                                                                       IsSystemTab = true,
                                                                       Name = "Information"
                                                                   }
                                                           };
     return tabDefinitionCollection;
 }
        private void AddPageTypePropertyGroupDefinitions(TabDefinitionCollection tabDefinitions, ICollection<AuthorizedPropertyDefinition> definitions)
        {
            foreach (PropertyInfo property in Properties.Where(AttributedTypesUtility.PropertyHasAttribute<PageTypePropertyGroupAttribute>))
            {
                if (!property.PropertyType.IsSubclassOf(typeof(PageTypePropertyGroup)))
                    continue;

                IEnumerable<PropertyInfo> propertyGroupProperties = AttributedTypesUtility.GetPublicOrPrivateProperties(property.PropertyType)
                    .Where(AttributedTypesUtility.PropertyHasAttribute<PageTypePropertyAttribute>)
                    .ToList();

                AuthorizeAttribute authorizeAttribute = AttributedTypesUtility.GetAttributesFromProperty<AuthorizeAttribute>(property)
                    .FirstOrDefault();

                AddPageTypePropertyDefinitions(propertyGroupProperties, definitions, tabDefinitions, string.Concat(property.Name, "-"), authorizeAttribute);
            }
        }