GetEntityFields() public static method

Gets the entity fields.
public static GetEntityFields ( Type entityType, bool includeOnlyReportingFields = true, bool limitToFilterableFields = true ) : List
entityType System.Type Type of the entity.
includeOnlyReportingFields bool if set to true [include only reporting fields].
limitToFilterableFields bool if set to true [limit to filterable fields].
return List
示例#1
0
        /// <summary>
        /// Gets the entity attribute field.
        /// </summary>
        /// <param name="entityType">Type of the entity.</param>
        /// <param name="attributeGuid">The attribute unique identifier.</param>
        /// <param name="includeOnlyReportingFields">if set to <c>true</c> [include only reporting fields].</param>
        /// <param name="limitToFilterableFields">if set to <c>true</c> [limit to filterable fields].</param>
        /// <returns></returns>
        public static EntityField GetEntityAttributeField(Type entityType, Guid attributeGuid, bool includeOnlyReportingFields = true, bool limitToFilterableFields = true)
        {
            var entityFields = EntityHelper.GetEntityFields(entityType, includeOnlyReportingFields, limitToFilterableFields);
            var entityField  = entityFields.FirstOrDefault(f => f.FieldKind == FieldKind.Attribute && f.AttributeGuid == attributeGuid);

            return(entityField);
        }
示例#2
0
        /// <summary>
        /// Gets the entity field indentified by it's uniqueFieldName ( the consistently unique name of the field in the form of "Property: {{ Name }}" for properties and "Attribute:{{ Name }} (Guid:{{ Guid }})" for attribute )
        /// </summary>
        /// <param name="entityType">Type of the entity.</param>
        /// <param name="uniqueFieldName">Name of the unique field.</param>
        /// <param name="includeOnlyReportingFields">if set to <c>true</c> [include only reporting fields].</param>
        /// <param name="limitToFilterableFields">if set to <c>true</c> [limit to filterable fields].</param>
        /// <returns></returns>
        public static EntityField GetEntityField(Type entityType, string uniqueFieldName, bool includeOnlyReportingFields = true, bool limitToFilterableFields = true)
        {
            var entityFields = EntityHelper.GetEntityFields(entityType, includeOnlyReportingFields, limitToFilterableFields);
            var entityField  = entityFields.FirstOrDefault(f => f.UniqueName == uniqueFieldName);

            return(entityField);
        }
示例#3
0
        /// <summary>
        /// NOTE: Only use this in case where we don't know if this is a property name, attribute key, or EntityField.UniqueName (for example, it is specified in a Query parameter or entity command).
        /// Returns all the possible EntityFields that have the specified PropertyName or AttributeKey
        /// </summary>
        /// <param name="entityType">Type of the entity.</param>
        /// <param name="fieldNameOrAttributeKey">The field name or attribute key.</param>
        /// <returns></returns>
        public static List <EntityField> FindFromFieldName(Type entityType, string fieldNameOrAttributeKey)
        {
            var entityFields = EntityHelper.GetEntityFields(entityType, true, true)
                               .Where(a =>
                                      a.UniqueName == fieldNameOrAttributeKey
                                      ||
                                      (a.FieldKind == FieldKind.Property && a.Name == fieldNameOrAttributeKey)
                                      ||
                                      (a.FieldKind == FieldKind.Attribute &&
                                       a.AttributeGuid.HasValue &&
                                       AttributeCache.Get(a.AttributeGuid.Value)?.Key == fieldNameOrAttributeKey)
                                      );

            return(entityFields.ToList());
        }
示例#4
0
        /// <summary>
        /// Finds from field selection in a way that is backwards compatible with filters saved using pre-v1.7 and pre-v1.1 versions of Rock
        /// </summary>
        /// <param name="entityType">Type of the entity.</param>
        /// <param name="fieldSelection">The field selection.</param>
        /// <param name="includeOnlyReportingFields">if set to <c>true</c> [include only reporting fields].</param>
        /// <param name="limitToFilterableFields">if set to <c>true</c> [limit to filterable fields].</param>
        /// <returns></returns>
        public static EntityField FindFromFilterSelection(Type entityType, string fieldSelection, bool includeOnlyReportingFields = true, bool limitToFilterableFields = true)
        {
            var entityFields = EntityHelper.GetEntityFields(entityType, includeOnlyReportingFields, limitToFilterableFields);

            return(entityFields.FindFromFilterSelection(fieldSelection));
        }
示例#5
0
        /// <summary>
        /// Gets the filter list recursive.
        /// </summary>
        /// <param name="filterList">The filter list.</param>
        /// <param name="filter">The filter.</param>
        /// <param name="reportEntityType">Type of the report entity.</param>
        private static void GetFilterListRecursive(List <FilterInfo> filterList, DataViewFilter filter, EntityType reportEntityType)
        {
            var result = new Dictionary <Guid, string>();

            var entityType            = EntityTypeCache.Get(filter.EntityTypeId ?? 0);
            var reportEntityTypeCache = EntityTypeCache.Get(reportEntityType);
            var reportEntityTypeModel = reportEntityTypeCache.GetEntityType();

            var filterInfo = new FilterInfo(filter);

            filterInfo.FilterList = filterList;

            if (entityType != null)
            {
                var component = Rock.Reporting.DataFilterContainer.GetComponent(entityType.Name);
                filterInfo.Component             = component;
                filterInfo.ReportEntityTypeModel = reportEntityTypeModel;

                if (component != null)
                {
                    if (component is Rock.Reporting.DataFilter.EntityFieldFilter)
                    {
                        var entityFieldFilter = component as Rock.Reporting.DataFilter.EntityFieldFilter;
                        var fieldName         = entityFieldFilter.GetSelectedFieldName(filter.Selection);
                        if (!string.IsNullOrWhiteSpace(fieldName))
                        {
                            var entityFields = EntityHelper.GetEntityFields(reportEntityTypeModel);
                            var entityField  = entityFields.Where(a => a.Name == fieldName).FirstOrDefault();
                            if (entityField != null)
                            {
                                filterInfo.Title = entityField.Title;
                            }
                            else
                            {
                                filterInfo.Title = fieldName;
                            }
                        }
                    }
                    else
                    {
                        filterInfo.Title = component.GetTitle(reportEntityType.GetType());
                    }
                }
            }

            filterList.Add(filterInfo);

            if (filterInfo.Component is Rock.Reporting.DataFilter.OtherDataViewFilter)
            {
                Rock.Reporting.DataFilter.OtherDataViewFilter otherDataViewFilter = filterInfo.Component as Rock.Reporting.DataFilter.OtherDataViewFilter;
                var otherDataView = otherDataViewFilter.GetSelectedDataView(filterInfo.Selection);
                if (otherDataView != null)
                {
                    var otherDataViewFilterList = new List <FilterInfo>();
                    GetFilterListRecursive(otherDataViewFilterList, otherDataView.DataViewFilter, reportEntityType);
                    foreach (var otherFilter in otherDataViewFilterList)
                    {
                        if (otherFilter.FromOtherDataView == null)
                        {
                            otherFilter.FromOtherDataView = otherDataView.Name;
                        }
                    }

                    filterList.AddRange(otherDataViewFilterList);
                }
            }

            foreach (var childFilter in filter.ChildFilters)
            {
                GetFilterListRecursive(filterList, childFilter, reportEntityType);
            }
        }