public static GetEntityFields ( |
||
entityType | Type of the entity. | |
includeOnlyReportingFields | bool | if set to |
limitToFilterableFields | bool | if set to |
리턴 | List |
/// <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); }
/// <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); }
/// <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()); }
/// <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)); }
/// <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); } }