public SiteAuditableProperties AllPropertiesForDocType(string DocTypeAlias)
        {
            var allProps = new SiteAuditableProperties();

            allProps.PropsForDoctype = DocTypeAlias;
            List <AuditableProperty> propertiesList = new List <AuditableProperty>();

            var ct        = _services.ContentTypeService.GetContentType(DocTypeAlias);
            var propsDone = new List <int>();

            //First, compositions
            foreach (var comp in ct.ContentTypeComposition)
            {
                foreach (var group in comp.CompositionPropertyGroups)
                {
                    foreach (var prop in group.PropertyTypes)
                    {
                        AuditableProperty auditProp = PropertyTypeToAuditableProperty(prop);

                        auditProp.InComposition = comp.Name;
                        auditProp.GroupName     = group.Name;

                        propertiesList.Add(auditProp);
                        propsDone.Add(prop.Id);
                    }
                }
            }

            //Next, non-comp properties
            foreach (var group in ct.CompositionPropertyGroups)
            {
                foreach (var prop in group.PropertyTypes)
                {
                    //check if already added...
                    if (!propsDone.Contains(prop.Id))
                    {
                        AuditableProperty auditProp = PropertyTypeToAuditableProperty(prop);
                        auditProp.GroupName     = group.Name;
                        auditProp.InComposition = "~NONE";
                        propertiesList.Add(auditProp);
                    }
                }
            }

            allProps.AllProperties = propertiesList;
            return(allProps);
        }
        public SiteAuditableProperties AllProperties()
        {
            var allProps = new SiteAuditableProperties();

            allProps.PropsForDoctype = "[All]";
            List <AuditableProperty> propertiesList = new List <AuditableProperty>();

            var allDocTypes = _services.ContentTypeService.GetAllContentTypes();

            foreach (var docType in allDocTypes)
            {
                //var ct = _services.ContentTypeService.Get(docTypeAlias);

                foreach (var prop in docType.PropertyTypes)
                {
                    //test for the same property already in list
                    if (propertiesList.Exists(i => i.UmbPropertyType.Alias == prop.Alias & i.UmbPropertyType.Name == prop.Name & i.UmbPropertyType.DataTypeId == prop.DataTypeId))
                    {
                        //Add current DocType to existing property
                        var info = new PropertyDoctypeInfo();
                        info.Id           = docType.Id;
                        info.DocTypeAlias = docType.Alias;
                        info.GroupName    = "";
                        propertiesList.Find(i => i.UmbPropertyType.Alias == prop.Alias).AllDocTypes.Add(info);
                    }
                    else
                    {
                        //Add new property
                        AuditableProperty auditProp = PropertyTypeToAuditableProperty(prop);

                        var info = new PropertyDoctypeInfo();
                        info.DocTypeAlias = docType.Alias;
                        info.GroupName    = "";

                        auditProp.AllDocTypes.Add(info);
                        propertiesList.Add(auditProp);
                    }
                }
            }

            allProps.AllProperties = propertiesList;
            return(allProps);
        }