Beispiel #1
0
        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)));
        }
Beispiel #2
0
        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();
        }