Ejemplo n.º 1
0
        /// <summary>
        /// Adds filters
        /// </summary>
        /// <param name="availableFilters">Available filters</param>
        /// <param name="enabledFilters">Enabled filters</param>
        private void AddFilters(List <string> availableFilters, List <string> enabledFilters)
        {
            var upmFilterArray = new List <UPMFilter>();

            foreach (string filterNameItem in availableFilters)
            {
                if (!string.IsNullOrEmpty(filterNameItem))
                {
                    var filter = UPMFilter.FilterForName(filterNameItem, this.PreparedSearch.FilterParameter);

                    if (filter != null)
                    {
                        if (enabledFilters != null && enabledFilters.Contains(filterNameItem))
                        {
                            if (filter.FilterType == UPMFilterType.NoParam || filter.RawValues?.Count > 0)
                            {
                                filter.DefaultEnabled = true;
                                filter.Active         = true;
                            }
                        }

                        upmFilterArray.Add(filter);
                    }
                }
            }

            this.SearchPage.AvailableFilters = upmFilterArray;
        }
        /// <summary>
        /// Adds the available position filter.
        /// </summary>
        /// <param name="availablePositionFilter">The available position filter.</param>
        public void AddAvailablePositionFilter(UPMFilter availablePositionFilter)
        {
            if (this.AvailablePositionFilters == null)
            {
                this.AvailablePositionFilters = new List <UPMFilter>();
            }

            this.AvailablePositionFilters.Add(availablePositionFilter);
        }
        /// <summary>
        /// Creates the container meta information with value prepared search.
        /// </summary>
        /// <param name="searchValue">The search value.</param>
        /// <param name="preparedSearch">The prepared search.</param>
        /// <returns></returns>
        public override UPContainerMetaInfo CreateContainerMetaInfoWithValuePreparedSearch(string searchValue, UPSearchPageModelControllerPreparedSearch preparedSearch)
        {
            List <UPConfigFilter> configFilter = null;

            if (this.usedFilters.ContainsKey(preparedSearch.SearchConfiguration.UnitName))
            {
                UPMFilter vFilter = this.usedFilters[preparedSearch.SearchConfiguration.UnitName];
                configFilter = UPMFilter.ActiveFiltersForFilters(new List <UPMFilter> {
                    vFilter
                });
            }

            UPContainerMetaInfo container = preparedSearch.CrmQueryForValue(searchValue, configFilter, false);

            return(container);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Populates filters and Identifiers for filter != Config1Filter
        /// </summary>
        /// <param name="configStore">
        /// IConfigurationUnitStore
        /// </param>
        /// <param name="filters">
        /// List&lt;UPMFilter&gt;
        /// </param>
        /// <param name="identifiers">
        /// List&lt;IIdentifier&gt;
        /// </param>
        /// <param name="defaultRadiusMeter">
        /// defaultRadiusMeter
        /// </param>
        private void PopulatePageFiltersAndIdentifiersForNonConfig1Filter(
            IConfigurationUnitStore configStore,
            List <UPMFilter> filters,
            List <IIdentifier> identifiers,
            int defaultRadiusMeter)
        {
            var infoAreaId = string.Empty;

            for (int configNo = 2; configNo < 99; configNo++)
            {
                var configNameKey = $"Config{configNo}Name";
                var configName    = ViewReference.ContextValueForKey(configNameKey);
                if (!string.IsNullOrWhiteSpace(configName))
                {
                    var configFilterKey = $"Config{configNo}Filter";
                    var geoFilter       = ViewReference.ContextValueForKey(configFilterKey);
                    var filter          = UPMFilter.FilterForName(geoFilter) as UPMDistanceFilter;
                    if (filter == null)
                    {
                        continue;
                    }

                    var expand              = configStore.ExpandByName(configName);
                    var imageName           = expand.ImageName;
                    var searchConfiguration = configStore.SearchAndListByName(configName);
                    var colorKey            = configStore.InfoAreaConfigById(searchConfiguration.InfoAreaId).ColorKey;
                    if (string.IsNullOrWhiteSpace(imageName))
                    {
                        imageName = configStore.InfoAreaConfigById(searchConfiguration.InfoAreaId).ImageName;
                    }

                    filter.ImageName = imageName;
                    filter.ColorKey  = colorKey;
                    filter.Radius    = (int)defaultRadiusMeter;
                    filter.Active    = true;
                    usedFilters.SetObjectForKey(filter, configName);
                    infoAreaId = (searchConfiguration != null) ? searchConfiguration.InfoAreaId : configName;
                    identifiers.Add(new RecordIdentifier(infoAreaId, null));
                    filters.Add(filter);
                }
                else
                {
                    break;
                }
            }
        }
        /// <summary>
        /// Searches the specified sender.
        /// </summary>
        /// <param name="searchPage">The search page.</param>
        public override void Search(object searchPage)
        {
            if (this.PreparedSearches != null && this.availableSearches != null)
            {
                this.PreparedSearches.Clear();
                foreach (UPSearchPageModelControllerPreparedSearch search in this.availableSearches)
                {
                    UPMFilter vFilter = this.usedFilters[search.SearchConfiguration.UnitName];
                    if (vFilter.Active)
                    {
                        this.PreparedSearches.Add(search);
                    }
                }
            }

            base.Search(searchPage);
        }
Ejemplo n.º 6
0
        private void AddFilters(List <string> availableFilters)
        {
            List <UPMFilter> upmFilterArray = new List <UPMFilter>();

            foreach (string filterNameItem in availableFilters)
            {
                if (!string.IsNullOrEmpty(filterNameItem))
                {
                    UPMFilter filter = UPMFilter.FilterForName(filterNameItem);
                    if (filter != null)
                    {
                        upmFilterArray.Add(filter);
                    }
                }
            }

            ((UPMDocumentPage)this.Page).AvailableFilters = upmFilterArray;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Creates and adds filters based on given filter name list
        /// </summary>
        /// <param name="availableFilters">List of available filter names</param>
        public void AddFilters(IEnumerable <string> availableFilters)
        {
            var upmFilterArray = new List <UPMFilter>();

            foreach (string filterNameItem in availableFilters)
            {
                if (!string.IsNullOrEmpty(filterNameItem))
                {
                    UPMFilter filter = UPMFilter.FilterForName(filterNameItem);
                    if (filter != null && filter.FilterType == UPMFilterType.NoParam)
                    {
                        upmFilterArray.Add(filter);
                    }
                }
            }

            this.SearchPage.AvailableFilters = upmFilterArray;
        }
Ejemplo n.º 8
0
        /// <inheritdoc/>
        public override UPContainerMetaInfo CreateContainerMetaInfoWithValuePreparedSearch(string searchValue, UPSearchPageModelControllerPreparedSearch preparedSearch)
        {
            var firstFilter = this.SearchPage.AvailableFilters[0] as UPMDistanceFilter;
            var vFilter     = this.usedFilters.ValueOrDefault(preparedSearch.SearchConfiguration.UnitName) as UPMDistanceFilter;
            List <UPConfigFilter> configFilter = null;

            if (vFilter != null)
            {
                vFilter.Active = true;
                vFilter.Radius = firstFilter.Radius;
                vFilter.LocationResult(this.currentUserLocation);
                configFilter = UPMFilter.ActiveFiltersForFilters(new List <UPMFilter> {
                    vFilter
                });
            }

            UPContainerMetaInfo container = preparedSearch.CrmQueryForValue(searchValue, configFilter, false);

            return(container);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Populates filters and Identifiers for filter = Config1Filter
        /// </summary>
        /// <param name="configStore">
        /// IConfigurationUnitStore
        /// </param>
        /// <param name="filters">
        /// List&lt;UPMFilter&gt;
        /// </param>
        /// <param name="identifiers">
        /// List&lt;IIdentifier&gt;
        /// </param>
        /// <param name="defaultRadiusMeter">
        /// defaultRadiusMeter
        /// </param>
        private void PopulatePageFiltersAndIdentifiersForConfig1Filter(
            IConfigurationUnitStore configStore,
            List <UPMFilter> filters,
            List <IIdentifier> identifiers,
            int defaultRadiusMeter)
        {
            var infoAreaId = string.Empty;
            var geoFilter1 = ViewReference.ContextValueForKey("Config1Filter");
            var filter     = UPMFilter.FilterForName(geoFilter1) as UPMDistanceFilter;

            if (filter != null)
            {
                var expand              = configStore.ExpandByName(ConfigName);
                var imageName           = expand.ImageName;
                var searchConfiguration = configStore.SearchAndListByName(ConfigName);
                infoAreaId = searchConfiguration != null ? searchConfiguration.InfoAreaId : ConfigName;
                if (string.IsNullOrWhiteSpace(imageName))
                {
                    imageName = configStore.InfoAreaConfigById(searchConfiguration.InfoAreaId).ImageName;
                }

                var colorKey = expand.ColorKey;
                if (string.IsNullOrWhiteSpace(colorKey))
                {
                    colorKey = configStore.InfoAreaConfigById(searchConfiguration.InfoAreaId).ColorKey;
                }

                filter.ImageName = imageName;
                filter.ColorKey  = colorKey;
                filter.Radius    = defaultRadiusMeter;
                filter.Active    = true;
                usedFilters.SetObjectForKey(filter, ConfigName);
                filters.Add(filter);
                identifiers.Add(new RecordIdentifier(infoAreaId, null));
            }
        }
Ejemplo n.º 10
0
        private void Search(object _docPage)
        {
            UPMDocumentPage docPage = (UPMDocumentPage)_docPage;

            this.currentSearchOperation?.Cancel();
            if (this.preparedSearch == null)
            {
                this.preparedSearch = new UPSearchPageModelControllerPreparedSearch(this.InfoAreaId, this.ConfigName, this.filterName);
            }

            if (this.preparedSearch.CombinedControl == null)
            {
                this.SearchOperationDidFinishWithResult(null, null);
                return;     // dont crash but do nothing if no list exists
            }

            IConfigurationUnitStore configStore   = ConfigurationUnitStore.DefaultStore;
            FieldControl            searchControl = configStore.FieldControlByNameFromGroup("Search", this.preparedSearch.SearchConfiguration.FieldGroupName);

            if (searchControl != null)
            {
                string searchLabel = string.Empty;
                int    count       = searchControl.NumberOfFields;
                for (int i = 0; i < count; i++)
                {
                    searchLabel = i == 0 ? searchControl.FieldAtIndex(i).Label : $"{searchLabel} | {searchControl.FieldAtIndex(i).Label}";
                }

                docPage.SearchPlaceholder = searchLabel;
            }

            if (string.IsNullOrEmpty(docPage.SearchText))
            {
                int range = this.ViewReference.ContextValueForKey("SearchOptions")?.IndexOf("NoEmptySearch") ?? 0;
                if (range >= 0)
                {
                    this.SearchOperationDidFinishWithResult(null, null);
                    return;
                }
            }

            List <UPConfigFilter> configFilters     = UPMFilter.ActiveFiltersForFilters(docPage.AvailableFilters);
            UPContainerMetaInfo   containerMetaInfo = this.preparedSearch.CrmQueryForValue(docPage.SearchText, configFilters, this.fullTextSearch);

            if (this.recordIdentification.IsRecordIdentification())
            {
                containerMetaInfo.SetLinkRecordIdentification(this.recordIdentification, 126, 127);
            }

            if (docPage.SearchType == SearchPageSearchType.OfflineSearch)
            {
                this.currentSearchOperation = containerMetaInfo.Find(UPRequestOption.Offline, this);
            }
            else if (docPage.SearchType == SearchPageSearchType.OnlineSearch)
            {
                this.currentSearchOperation = containerMetaInfo.Find(this);
            }
            else
            {
                SimpleIoc.Default.GetInstance <ILogger>().LogError($"Unknown search type: {docPage.SearchType}");
            }
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Retrieves active filters for given search page
 /// </summary>
 /// <param name="searchPage">Search page</param>
 /// <returns><see cref="List{UPConfigFilter}"/></returns>
 protected virtual List <UPConfigFilter> ActiveFiltersForSearchPage(UPMSearchPage searchPage)
 {
     return(UPMFilter.ActiveFiltersForFilters(searchPage.AvailableFilters));
 }
        /// <summary>
        /// Creates the page instance.
        /// </summary>
        /// <returns></returns>
        public override UPMSearchPage CreatePageInstance()
        {
            this.InfoAreaId = this.ViewReference.ContextValueForKey("InfoArea");
            this.ConfigName = this.ViewReference.ContextValueForKey("Config1Name");
            IConfigurationUnitStore configStore = ConfigurationUnitStore.DefaultStore;
            string searchTypeString             = this.ViewReference.ContextValueForKey("InitialSearchType");
            SearchPageSearchType searchType     = Convert.ToInt32(searchTypeString) == 2 ? SearchPageSearchType.OnlineSearch : SearchPageSearchType.OfflineSearch;

            if (string.IsNullOrEmpty(this.InfoAreaId) && this.ViewReference.ContextValueForKey("Modus") == "MultiSearch")
            {
                if (string.IsNullOrEmpty(this.ConfigName))
                {
                    this.ConfigName = "default";
                }
            }

            List <IIdentifier> identifiers = new List <IIdentifier>();

            this.usedFilters = new Dictionary <string, UPMFilter>();
            List <UPMFilter> filters             = new List <UPMFilter>();
            string           geoFilter1          = this.ViewReference.ContextValueForKey("Config1Filter");
            UPMFilter        filter              = UPMFilter.FilterForName(geoFilter1);
            SearchAndList    searchConfiguration = configStore.SearchAndListByName(this.ConfigName);
            var infoAreaId = searchConfiguration != null ? searchConfiguration.InfoAreaId : this.ConfigName;

            if (filter != null)
            {
                filter.Active = true;
                this.usedFilters[this.ConfigName] = filter;
                filters.Add(filter);
            }

            identifiers.Add(new RecordIdentifier(infoAreaId, null));
            for (int i = 2; i < 99; i++)
            {
                string configNameKey = $"Config{i}Name";
                string configName2   = this.ViewReference.ContextValueForKey(configNameKey);
                if (!string.IsNullOrEmpty(configName2))
                {
                    string        configFilterKey      = $"Config{i}Filter";
                    string        geoFilter2           = this.ViewReference.ContextValueForKey(configFilterKey);
                    UPMFilter     filter2              = UPMFilter.FilterForName(geoFilter2);
                    SearchAndList searchConfiguration2 = configStore.SearchAndListByName(configName2);
                    if (filter2 != null)
                    {
                        filter2.Active = true;
                        this.usedFilters[configName2] = filter2;
                        filters.Add(filter2);
                    }

                    infoAreaId = (searchConfiguration2 != null) ? searchConfiguration2.InfoAreaId : configName2;
                    identifiers.Add(new RecordIdentifier(infoAreaId, null));
                }
                else
                {
                    break;
                }
            }

            MultipleIdentifier multipleIdentifier = new MultipleIdentifier(identifiers);
            UPMSearchPage      page = new UPMSearchPage(multipleIdentifier)
            {
                SearchType            = searchType,
                AvailableFilters      = filters,
                Style                 = UPMTableStyle.UPMStandardTableStyle,
                AvailableOnlineSearch = !this.ViewReference.ContextValueIsSet("hideOnlineOfflineButton"),
                InitiallyOnline       = searchType == SearchPageSearchType.OnlineSearch,
                HideSearchBar         = true,
                ViewType              = SearchPageViewType.List
            };

            return(page);
        }