/// <summary> /// Updates the page. /// </summary> /// <param name="page">The page.</param> /// <returns></returns> protected override UPMCircleOfInfluencePage UpdatePage(UPMCircleOfInfluencePage page) { if (this.rootNodeFieldControl == null) { this.InformAboutDidFailTopLevelElement(page); return(page); } // Load Root Node if (page.Invalid || page.RootNode.Invalid) { UPContainerMetaInfo query = new UPContainerMetaInfo(this.rootNodeFieldControl); if (this.ExpandSettings != null) { Dictionary <string, UPCRMField> alternateExpandFields = this.ExpandSettings.FieldsForAlternateExpands(true); List <UPCRMField> additionalFields = alternateExpandFields?.Values.Where(field => query.ContainsField(field) == null).ToList(); if (additionalFields?.Count > 0) { query.AddCrmFields(additionalFields); } this.expandChecker = this.ExpandSettings.ExpandCheckerForCrmQuery(query); } Operation operation = query.ReadRecord(this.RootRecordIdentification, this.RequestOption, this); if (operation == null && this.RequestOption == UPRequestOption.Online) { // Offline UPMWatermarkStatus offlineStatus = UPMWatermarkStatus.WatermarkStatus(); page.Status = offlineStatus; this.InformAboutDidChangeTopLevelElement(page, page, null, null); } } return(page); }
/// <summary> /// Creates the query link identifier search and list. /// </summary> /// <param name="recordIdentifier">The record identifier.</param> /// <param name="linkId">The link identifier.</param> /// <param name="searchAndList">The search and list.</param> /// <returns></returns> protected UPContainerMetaInfo CreateQueryLinkIdSearchAndList(string recordIdentifier, int linkId, SearchAndList searchAndList) { if (searchAndList == null) { return(null); } IConfigurationUnitStore configStore = ConfigurationUnitStore.DefaultStore; if (this.expandSettings == null) { this.expandSettings = configStore.ExpandByName(searchAndList.InfoAreaId); } FieldControl fieldControlList = configStore.FieldControlByNameFromGroup("List", searchAndList.FieldGroupName); FieldControl fieldControlMini = configStore.FieldControlByNameFromGroup("MiniDetails", searchAndList.FieldGroupName); FieldControl fieldControlCombi = new FieldControl(new List <FieldControl> { fieldControlList, fieldControlMini }); UPContainerMetaInfo query = new UPContainerMetaInfo(fieldControlCombi); query.SetLinkRecordIdentification(recordIdentifier, linkId); if (this.expandSettings != null) { Dictionary <string, UPCRMField> alternateExpandFields = this.expandSettings.FieldsForAlternateExpands(true); List <UPCRMField> additionalFields = alternateExpandFields.Values.Where(field => query.ContainsField(field) == null).ToList(); if (additionalFields.Count > 0) { query.AddCrmFields(additionalFields); } this.expandChecker = this.expandSettings.ExpandCheckerForCrmQuery(query); } return(query); }
/// <summary> /// The crm query for value. /// </summary> /// <param name="searchValue"> /// The search value. /// </param> /// <param name="filters"> /// The filters. /// </param> /// <param name="fullTextSearch"> /// The full text search. /// </param> /// <returns> /// The <see cref="UPContainerMetaInfo"/>. /// </returns> public UPContainerMetaInfo CrmQueryForValue( string searchValue, List <UPConfigFilter> filters, bool fullTextSearch) { if (this.CombinedControl == null) { return(null); } if (this.SearchCRMFields == null && this.MultiSearchCRMFields == null && this.SearchFieldControl?.Tabs?.Count > 0) { int tabCount = this.SearchFieldControl.Tabs.Count; List <UPCRMField> fieldArray = null; List <UPCRMField> multiFieldArray = null; for (int i = 0; i < tabCount; i++) { FieldControlTab tab = this.SearchFieldControl.TabAtIndex(i); if (tab.Fields == null || tab.Fields.Count == 0) { continue; } if (string.Compare(tab.Type, @"MULTI", StringComparison.OrdinalIgnoreCase) == 0) { UPCRMField multiField = tab.FieldAtIndex(0).Field; if (multiFieldArray == null) { multiFieldArray = new List <UPCRMField>(); } multiFieldArray.Add(multiField); } else { if (fieldArray == null) { fieldArray = new List <UPCRMField>(); } fieldArray.AddRange(tab.AllCRMFields()); } } this.SearchCRMFields = fieldArray; this.MultiSearchCRMFields = multiFieldArray; } IConfigurationUnitStore configStore = ConfigurationUnitStore.DefaultStore; UPContainerMetaInfo container = new UPContainerMetaInfo(this.CombinedControl); if (!string.IsNullOrEmpty(this.DetailActionSwitchFilterName)) { this.DetailActionSwitchFilter = ConfigurationUnitStore.DefaultStore.FilterByName(this.DetailActionSwitchFilterName); if (this.DetailActionSwitchFilter != null) { this.DetailActionSwitchFilter = this.DetailActionSwitchFilter.FilterByApplyingValueDictionaryDefaults( this.FilterParameter, true); } if (this.DetailActionSwitchFilter != null) { this.FilterBasedDecision = new UPCRMFilterBasedDecision(this.DetailActionSwitchFilter); } } container.ReplaceCaseSensitiveCharacters = this.ReplaceCaseSensitiveCharacters; List <UPCRMField> additionalFields = null; if (this.ExpandSettings != null) { Dictionary <string, UPCRMField> alternateExpandFields = this.ExpandSettings.FieldsForAlternateExpands(true); List <UPCRMField> _additionalFields = this.AdditionalOutputFields != null ? new List <UPCRMField>(this.AdditionalOutputFields) : new List <UPCRMField>(); if (alternateExpandFields != null) { _additionalFields.AddRange(alternateExpandFields.Values.Where(field => container.ContainsField(field) == null)); } additionalFields = _additionalFields; } else if (this.AdditionalOutputFields?.Count > 0) { additionalFields = this.AdditionalOutputFields; } if (additionalFields != null && additionalFields.Count > 0) { container.AddCrmFields(additionalFields); } var checkFilterFields = this.FilterBasedDecision?.FieldDictionary.Values.Select(x => x).ToList(); if (checkFilterFields?.Count > 0) { container.AddCrmFields(checkFilterFields); this.FilterBasedDecision.UseCrmQuery(container); } if (this.ExpandSettings != null) { this.ExpandChecker = this.ExpandSettings.ExpandCheckerForCrmQuery(container); } if (!string.IsNullOrEmpty(this.LinkRecordIdentification)) { container.SetLinkRecordIdentification(this.LinkRecordIdentification); } if (this.SearchFieldControl != null) { container.SetSearchConditionsFor( searchValue, this.SearchCRMFields, this.MultiSearchCRMFields, fullTextSearch); } else if (this.QuickSearchEntries != null) { if (!string.IsNullOrEmpty(searchValue)) { List <UPCRMField> crmFields = this.QuickSearchEntries.Select(entry => entry.CrmField).ToList(); container.SetSearchConditionsFor(searchValue, crmFields, fullTextSearch); } } if (!string.IsNullOrEmpty(this.SearchConfiguration?.FilterName)) { UPConfigFilter filter = configStore.FilterByName(this.SearchConfiguration.FilterName); if (filter != null) { filter = filter.FilterByApplyingDefaultReplacements(); filter = filter.FilterByApplyingValueDictionary(this.FilterParameter); container.ApplyFilter(filter); } } if (this.FilterObject != null) { container.ApplyFilter(this.FilterObject); } else if (!string.IsNullOrEmpty(this.FilterName)) { UPConfigFilter filter = configStore.FilterByName(this.FilterName); if (filter != null) { filter = filter.FilterByApplyingDefaultReplacements(); filter = filter.FilterByApplyingValueDictionary(this.FilterParameter); container.ApplyFilter(filter); } } if (filters != null) { foreach (UPConfigFilter filter in filters) { if (this.FilterParameter != null) { container.ApplyFilterWithReplacementDictionary(filter, this.FilterParameter); } else { container.ApplyFilter(filter); } } } return(container); }