public static IEnumerable <FilterOptionGroupDrop> Metafilters(EntityListDrop entityList, string query = null, EntityViewDrop entityView = null) { if (entityList == null || String.IsNullOrWhiteSpace(entityList.FilterDefinition)) { return(Enumerable.Empty <FilterOptionGroupDrop>()); } Fetch fetch; try { fetch = Fetch.FromJson(entityList.FilterDefinition); } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format("Error parsing entity list filter definition: {0}", e.ToString())); return(Enumerable.Empty <FilterOptionGroupDrop>()); } if (fetch == null) { return(Enumerable.Empty <FilterOptionGroupDrop>()); } var serviceContext = entityList.PortalViewContext.CreateServiceContext(); var portalContext = entityList.PortalViewContext.CreatePortalContext(); EntityMetadata entityMetadata; try { entityMetadata = serviceContext.GetEntityMetadata(entityList.EntityLogicalName, EntityFilters.Attributes); } catch (FaultException <OrganizationServiceFault> e) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format(@"Error retrieving metadata for entity ""{0}"": {1}", EntityNamePrivacy.GetEntityName(entityList.EntityLogicalName), e.ToString())); return(Enumerable.Empty <FilterOptionGroupDrop>()); } if (entityMetadata == null) { return(Enumerable.Empty <FilterOptionGroupDrop>()); } var currentFilters = String.IsNullOrWhiteSpace(query) ? new NameValueCollection() : HttpUtility.ParseQueryString(query); return(FilterOptionGroup.FromFetch( serviceContext, portalContext, entityMetadata, fetch, currentFilters, entityList.LanguageCode, entityView == null ? null : entityView.Columns.ToDictionary(e => e.LogicalName, e => e.Name)) .Select(@group => new FilterOptionGroupDrop(@group))); }
internal FilterOptionGroupDrop(FilterOptionGroup @group) { if (@group == null) { throw new ArgumentNullException("group"); } Id = @group.Id; Label = @group.Label; Order = @group.Order; SelectionMode = @group.SelectionMode; Options = @group.Options.Select(option => new FilterOptionDrop(option)).ToArray(); }