private IQueryable <Category> GetUnorderedCategories(RockContext rockContext = null) { rockContext = rockContext ?? new RockContext(); string selectedValue = rFilter.GetUserPreference("EntityType"); var attributeEntityTypeId = EntityTypeCache.Read(typeof(Rock.Model.Attribute)).Id; var queryable = new CategoryService(rockContext).Queryable() .Where(c => c.EntityTypeId == attributeEntityTypeId && c.EntityTypeQualifierColumn == "EntityTypeId"); if (!string.IsNullOrWhiteSpace(selectedValue)) { if (selectedValue == "0") { queryable = queryable.Where(c => c.EntityTypeQualifierValue == null); } else { queryable = queryable.Where(c => c.EntityTypeQualifierValue == selectedValue); } } else { // Exclude the categories for block and service job attributes, since they are controlled through code attribute decorations var exclusions = new List <Guid>(); exclusions.Add(Rock.SystemGuid.EntityType.BLOCK.AsGuid()); exclusions.Add(Rock.SystemGuid.EntityType.SERVICE_JOB.AsGuid()); var entities = new EntityTypeService(rockContext).GetEntities() .Where(t => !exclusions.Contains(t.Guid)) .Select(e => e.Id) .ToList() .Select(e => e.ToString()) .ToList(); queryable = queryable.Where(c => entities.Contains(c.EntityTypeQualifierValue)); } return(queryable); }
private IQueryable <Category> GetUnorderedCategories(int?entityTypeId, RockContext rockContext = null) { rockContext = rockContext ?? new RockContext(); var attributeEntityTypeId = EntityTypeCache.Read(typeof(Rock.Model.Attribute)).Id; var queryable = new CategoryService(rockContext).Queryable() .Where(c => c.EntityTypeId == attributeEntityTypeId && c.EntityTypeQualifierColumn == "EntityTypeId"); if (entityTypeId.HasValue) { var stringValue = entityTypeId.Value.ToString(); queryable = queryable.Where(c => (entityTypeId.Value == 0 && c.EntityTypeQualifierValue == null) || (entityTypeId.Value != 0 && c.EntityTypeQualifierValue != null && c.EntityTypeQualifierValue == stringValue)); } else { // Exclude the categories for block and service job attributes, since they are controlled through code attribute decorations var exclusions = new List <Guid>(); exclusions.Add(Rock.SystemGuid.EntityType.BLOCK.AsGuid()); exclusions.Add(Rock.SystemGuid.EntityType.SERVICE_JOB.AsGuid()); var entities = new EntityTypeService(rockContext).GetEntities() .Where(t => !exclusions.Contains(t.Guid)) .Select(e => e.Id) .ToList() .Select(e => e.ToString()) .ToList(); queryable = queryable.Where(c => c.EntityTypeQualifierValue == null || entities.Contains(c.EntityTypeQualifierValue)); } return(queryable); }