private void deleteCodeActivity_ExecuteCode(object sender, EventArgs e) { DeleteTreeRefresher treeRefresher = this.CreateDeleteTreeRefresher(this.EntityToken); DataEntityToken token = (DataEntityToken)this.EntityToken; using (TransactionScope transactionScope = TransactionsFacade.CreateNewScope()) { IMediaFileFolder folder = DataFacade.GetDataFromDataSourceId(token.DataSourceId, false) as IMediaFileFolder; // Media folder may already be deleted at this point if (folder != null) { if (!DataFacade.WillDeleteSucceed(folder)) { this.ShowMessage( DialogType.Error, StringResourceSystemFacade.GetString("Composite.Management", "DeleteMediaFolderWorkflow.CascadeDeleteErrorTitle"), StringResourceSystemFacade.GetString("Composite.Management", "DeleteMediaFolderWorkflow.CascadeDeleteErrorMessage") ); return; } DataFacade.Delete(folder); } transactionScope.Complete(); } treeRefresher.PostRefreshMesseges(); }
private void finalizeCodeActivity_Finalize_ExecuteCode(object sender, EventArgs e) { IPageTypeDefaultPageContent defaultPageContent = this.GetBinding <IPageTypeDefaultPageContent>("DefaultPageContent"); Dictionary <string, string> piggybag = PiggybagSerializer.Deserialize(this.ExtraPayload); DataEntityToken dataEntityToken = piggybag.GetParentEntityTokens().FindDataEntityToken(typeof(IPageType)); IPageType parentPageType = (IPageType)dataEntityToken.Data; defaultPageContent.PageTypeId = parentPageType.Id; defaultPageContent.Content = " "; defaultPageContent = DataFacade.AddNew <IPageTypeDefaultPageContent>(defaultPageContent); this.CloseCurrentView(); this.RefreshCurrentEntityToken(); if (!AnyTemplatesContainingPlaceholderId()) { ShowMessage(C1Console.Events.DialogType.Message, string.Format(RS.GetString("Composite.Plugins.PageTypeElementProvider", "PageType.AddPageTypeDefaultPageContentWorkflow.NonExistingPlaceholderId.Title"), defaultPageContent.PlaceHolderId), string.Format(RS.GetString("Composite.Plugins.PageTypeElementProvider", "PageType.AddPageTypeDefaultPageContentWorkflow.NonExistingPlaceholderId.Message"), defaultPageContent.PlaceHolderId)); } this.ExecuteWorklow(defaultPageContent.GetDataEntityToken(), WorkflowFacade.GetWorkflowType("Composite.Plugins.Elements.ElementProviders.PageTypeElementProvider.EditPageTypeDefaultPageContentWorkflow")); }
private void codeActivity1_ExecuteCode(object sender, EventArgs e) { DataEntityToken token = (DataEntityToken)this.EntityToken; IMediaFileFolder folder = (IMediaFileFolder)token.Data; string storeId = folder.StoreId; string parentPath = folder.Path; StoreIdFilterQueryable <IMediaFileFolder> folderQueryable = new StoreIdFilterQueryable <IMediaFileFolder>(DataFacade.GetData <IMediaFileFolder>(), storeId); StoreIdFilterQueryable <IMediaFile> fileQueryable = new StoreIdFilterQueryable <IMediaFile>(DataFacade.GetData <IMediaFile>(), storeId); string innerElementsPathPrefix = string.Format("{0}/", parentPath); bool anyFiles = (from item in fileQueryable where item.FolderPath.StartsWith(innerElementsPathPrefix) || item.FolderPath == parentPath select item).Any(); bool anyFolders = (from item in folderQueryable where item.Path.StartsWith(innerElementsPathPrefix) select item).Any(); if ((anyFiles == false) && (anyFolders == false)) { this.Bindings.Add("MessageText", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.DeleteMediaFolder.Text")); } else { this.Bindings.Add("MessageText", StringResourceSystemFacade.GetString("Composite.Management", "Website.Forms.Administrative.DeleteMediaFolder.HasChildringText")); } }
private void finalizeCodeActivity_ExecuteCode(object sender, EventArgs e) { DataEntityToken token = (DataEntityToken)this.EntityToken; IMethodBasedFunctionInfo methodBasedFunctionInfo = (IMethodBasedFunctionInfo)token.Data; if (DataFacade.WillDeleteSucceed(methodBasedFunctionInfo)) { DeleteTreeRefresher treeRefresher = this.CreateDeleteTreeRefresher(this.EntityToken); DataFacade.Delete(token.Data); int count = (from info in DataFacade.GetData <IMethodBasedFunctionInfo>() where info.Namespace == methodBasedFunctionInfo.Namespace select info).Count(); if (count == 0) { RefreshFunctionTree(); } else { treeRefresher.PostRefreshMesseges(); } } else { this.ShowMessage( DialogType.Error, StringResourceSystemFacade.GetString("Composite.Plugins.MethodBasedFunctionProviderElementProvider", "CascadeDeleteErrorTitle"), StringResourceSystemFacade.GetString("Composite.Plugins.MethodBasedFunctionProviderElementProvider", "CascadeDeleteErrorMessage") ); } }
public IEnumerable <EntityToken> GetParents(EntityToken entityToken) { if (entityToken == null) { throw new ArgumentNullException("entityToken"); } DataEntityToken dataEntityToken = entityToken as DataEntityToken; if (dataEntityToken == null) { throw new ArgumentException(string.Format("The type of the entityToken should be of type {0}", typeof(DataEntityToken)), "entityToken"); } IData data = dataEntityToken.Data; if (data == null) { return(null); // A piece of data may be deleted to this point } using (new DataScope(data.DataSourceId.DataScopeIdentifier, data.DataSourceId.LocaleScope)) { IData parent = DataAncestorFacade.GetParent(dataEntityToken.Data); if (parent == null) { return(null); } return(new List <EntityToken> { parent.GetDataEntityToken() }); } }
private void initializeAddNewfolderCodeActivity_ExecuteCode(object sender, EventArgs e) { FormsWorkflow workflow = this.GetRoot <FormsWorkflow>(); string parentFolderPath; string storeId; if (this.EntityToken is MediaRootFolderProviderEntityToken) { MediaRootFolderProviderEntityToken token = (MediaRootFolderProviderEntityToken)this.EntityToken; storeId = token.Id; parentFolderPath = "/"; } else { DataEntityToken token = (DataEntityToken)this.EntityToken; IMediaFileFolder parentFolder = (IMediaFileFolder)token.Data; storeId = parentFolder.StoreId; parentFolderPath = parentFolder.Path; } IMediaFileStore store = DataFacade.GetData <IMediaFileStore>(x => x.Id == storeId).First(); IMediaFileFolder folder = DataFacade.BuildNew <IMediaFileFolder>(); folder.Path = parentFolderPath; workflow.Bindings.Add("NewFolder", folder); workflow.Bindings.Add("FolderName", ""); workflow.Bindings.Add("ProviderName", store.DataSourceId.ProviderName); workflow.Bindings.Add("ProvidesMetaData", false); workflow.BindingsValidationRules.Add("FolderName", new List <ClientValidationRule> { new NotNullClientValidationRule() }); }
/// <exclude /> public T GetDataItemFromEntityToken <T>() where T : IData { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; return((T)dataEntityToken.Data); }
public Dictionary <EntityToken, IEnumerable <EntityToken> > GetParents(IEnumerable <EntityToken> entityTokens) { var result = new Dictionary <EntityToken, IEnumerable <EntityToken> >(); foreach (EntityToken entityToken in entityTokens) { DataEntityToken dataEntityToken = entityToken as DataEntityToken; Type type = dataEntityToken.InterfaceType; if (type != typeof(IPage)) { continue; } Guid pageId = (Guid)dataEntityToken.DataSourceId.GetKeyValue(); Guid parentPageId = PageManager.GetParentId(pageId); if (parentPageId != Guid.Empty) { continue; } result.Add(entityToken, new EntityToken[] { new PageElementProviderEntityToken(_context.ProviderName) }); } return(result); }
public RenderingResponseHandlerResult GetDataResponseHandling(DataEntityToken requestedItemEntityToken) { foreach (string name in RenderingResponseHandlerRegistry.RenderingResponseHandlerNames) { if (!RenderingResponseHandlerPluginFacade.IsDataRenderingResponseHandler(name)) { continue; } var result = RenderingResponseHandlerPluginFacade.GetDataResponseHandling(name, requestedItemEntityToken); if (result != null && result.IsNotEmpty) { return(result); } } foreach (var responseHandler in ServiceLocator.GetServices <IDataRenderingResponseHandler>()) { var result = responseHandler.GetDataResponseHandling(requestedItemEntityToken); if (result != null && result.IsNotEmpty) { return(result); } } return(null); }
private void finalizeCodeActivity_ExecuteCode(object sender, EventArgs e) { DeleteTreeRefresher deleteTreeRefresher = this.CreateDeleteTreeRefresher(this.EntityToken); DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; IUser user = (IUser)dataEntityToken.Data; if (DataFacade.WillDeleteSucceed(user)) { UserPerspectiveFacade.DeleteAll(user.Username); DataFacade.Delete(user); LoggingService.LogVerbose("UserManagement", String.Format("C1 Console user '{0}' deleted by '{1}'.", user.Username, UserValidationFacade.GetUsername()), LoggingService.Category.Audit); deleteTreeRefresher.PostRefreshMesseges(); } else { this.ShowMessage( DialogType.Error, StringResourceSystemFacade.GetString("Composite.Management", "DeleteUserWorkflow.CascadeDeleteErrorTitle"), StringResourceSystemFacade.GetString("Composite.Management", "DeleteUserWorkflow.CascadeDeleteErrorMessage") ); } }
private void initializeCodeActivity_ExecuteCode(object sender, EventArgs e) { DataEntityToken token = (DataEntityToken)this.EntityToken; IVisualFunction function = (IVisualFunction)token.Data; this.Bindings.Add("OriginalFullName", string.Format("{0}.{1}", function.Namespace, function.Name)); this.Bindings.Add("Function", function); this.Bindings.Add("XhtmlBody", function.XhtmlTemplate); Type interfaceType = TypeManager.GetType(function.TypeManagerName); DataTypeDescriptor typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(interfaceType); this.Bindings.Add("EmbedableFieldsTypes", new List <Type> { interfaceType }); this.Bindings.Add("SourceTypeFullName", interfaceType.FullName); this.Bindings.Add("FieldNameList", FieldNames(typeDescriptor).ToList()); Dictionary <Guid, string> templateInfos = new Dictionary <Guid, string>(); foreach (PageTemplateDescriptor pageTemplate in PageTemplateFacade.GetPageTemplates()) { if (pageTemplate.PlaceholderDescriptions.Any()) { templateInfos.Add(pageTemplate.Id, pageTemplate.Title); } } this.Bindings.Add("PreviewTemplateId", templateInfos.First().Key); this.Bindings.Add("TemplateList", templateInfos); }
private void InitializeCodeActivity_ExecuteCode(object sender, EventArgs e) { FormsWorkflow workflow = this.GetRoot <FormsWorkflow>(); string parentFolderPath; string storeId; if (this.EntityToken is MediaRootFolderProviderEntityToken) { MediaRootFolderProviderEntityToken token = (MediaRootFolderProviderEntityToken)this.EntityToken; parentFolderPath = "/"; storeId = token.Id; } else { DataEntityToken token = (DataEntityToken)this.EntityToken; IMediaFileFolder parentFolder = (IMediaFileFolder)token.Data; parentFolderPath = parentFolder.Path; storeId = parentFolder.StoreId; } string providerName = DataFacade.GetData <IMediaFileStore>().Where(x => x.Id == storeId).First().DataSourceId.ProviderName; UploadedFile file = new UploadedFile(); workflow.Bindings.Add("UploadedFile", file); workflow.Bindings.Add("RecreateFolders", true); workflow.Bindings.Add("OverwriteExisting", false); workflow.Bindings.Add("ParentFolderPath", parentFolderPath); workflow.Bindings.Add("ProviderName", providerName); }
private void initializeCodeActivity_UpdateBindings_ExecuteCode(object sender, EventArgs e) { IPageTypeMetaDataTypeLink pageTypeMetaDataTypeLink = DataFacade.BuildNew<IPageTypeMetaDataTypeLink>(); pageTypeMetaDataTypeLink.Id = Guid.NewGuid(); Dictionary<string, string> piggybag = PiggybagSerializer.Deserialize(this.ExtraPayload); DataEntityToken dataEntityToken = piggybag.GetParentEntityTokens().FindDataEntityToken(typeof(IPageType)); IPageType parentPageType = (IPageType)dataEntityToken.Data; pageTypeMetaDataTypeLink.PageTypeId = parentPageType.Id; this.Bindings.Add("CompositionDescriptionName", ""); this.Bindings.Add("CompositionDescriptionLabel", ""); this.Bindings.Add("NewMetaDataTypeLink", pageTypeMetaDataTypeLink); List<KeyValuePair<Guid, string>> metaDataTypeOptions = PageMetaDataFacade.GetAllMetaDataTypes(). ToList(f => new KeyValuePair<Guid, string>(f.GetImmutableTypeId(), f.GetTypeTitle())); this.Bindings.Add("MetaDataTypeOptions", metaDataTypeOptions); List<KeyValuePair<Guid, string>> metaDataContainerOptions = PageMetaDataFacade.GetAllMetaDataContainers(); this.Bindings.Add("MetaDataContainerOptions", metaDataContainerOptions); this.Bindings.Add("CompositionContainerId", metaDataContainerOptions.First().Key); this.BindingsValidationRules.Add("CompositionDescriptionName", new List<ClientValidationRule> { new NotNullClientValidationRule(), new StringLengthClientValidationRule(1, 128) }); this.BindingsValidationRules.Add("CompositionDescriptionLabel", new List<ClientValidationRule> { new NotNullClientValidationRule(), new StringLengthClientValidationRule(1, 256) }); }
private void finalizeCodeActivity_ExecuteCode(object sender, EventArgs e) { DeleteTreeRefresher deleteTreeRefresher = this.CreateDeleteTreeRefresher(this.EntityToken); DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; IVisualFunction visualFunction = (IVisualFunction)dataEntityToken.Data; DataFacade.Delete <IVisualFunction>(visualFunction); int count = (from info in DataFacade.GetData <IVisualFunction>() where info.Namespace == visualFunction.Namespace select info).Count(); if (count == 0) { RefreshFunctionTree(); } else { deleteTreeRefresher.PostRefreshMesseges(); } }
private void initializeCodeActivity_ExecuteCode(object sender, EventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; this.Bindings.Add("CurrentMethodFunctionInfo", dataEntityToken.Data); this.Bindings.Add("ErrorMessage", null); }
public Dictionary <EntityToken, IEnumerable <EntityToken> > GetParents( IEnumerable <EntityToken> entityTokens) { Dictionary <EntityToken, IEnumerable <EntityToken> > result = new Dictionary <EntityToken, IEnumerable <EntityToken> >(); foreach (EntityToken entityToken in entityTokens) { DataEntityToken dataEntityToken = entityToken as DataEntityToken; if (dataEntityToken.Data == null) { continue; } Type interfaceType = TypeManager.GetType(dataEntityToken.Type); if (interfaceType != typeof(IPage)) { continue; } IPage page = dataEntityToken.Data as IPage; if (page.PublicationStatus == "awaitingApproval") { result.Add(entityToken, new MyEntityToken[] { new MyEntityToken("Approval") }); } else if (page.PublicationStatus == "awaitingPublication") { result.Add(entityToken, new MyEntityToken[] { new MyEntityToken("Publication") }); } } return(result); }
/// <exclude /> protected override IEnumerable <Element> OnGetElements(EntityToken parentEntityToken, TreeNodeDynamicContext dynamicContext) { Type referenceType = null; object referenceValue = null; if (this.ChildGeneratingParentIdFilterNode != null) { if (this.IsTopFolderParent) { DataEntityToken dataEntityToken = (DataEntityToken)dynamicContext.Piggybag .GetParentEntityTokens(parentEntityToken) .FirstOrDefault(f => f is DataEntityToken && ((DataEntityToken)f).InterfaceType == ChildGeneratingParentIdFilterNode.ParentFilterType); if (dataEntityToken != null) { referenceType = this.ChildGeneratingParentIdFilterNode.KeyPropertyInfo.DeclaringType; referenceValue = this.ChildGeneratingParentIdFilterNode.KeyPropertyInfo.GetValue(dataEntityToken.Data, null); } } else { var treeDataFieldGroupingElementEntityToken = parentEntityToken as TreeDataFieldGroupingElementEntityToken; referenceType = treeDataFieldGroupingElementEntityToken.ChildGeneratingDataElementsReferenceType; referenceValue = treeDataFieldGroupingElementEntityToken.ChildGeneratingDataElementsReferenceValue; } } if (this.FolderRanges != null) { return(CreateFolderRangeElements(parentEntityToken, referenceType, referenceValue, dynamicContext)); } IEnumerable <object> objects; if (!this.LocalizationEnabled) { objects = GetObjects(dynamicContext); } else { List <object> orgObjects = GetObjects(dynamicContext); using (new DataScope(UserSettings.ForeignLocaleCultureInfo)) { List <object> foreignObjects = GetObjects(dynamicContext); orgObjects.AddRange(foreignObjects); orgObjects.Sort(); // TODO: Check if sorting here is necessary objects = orgObjects.Distinct(); } } if (this.FirstLetterOnly) { return(CreateFirstLetterOnlyElements(parentEntityToken, referenceType, referenceValue, dynamicContext, objects)); } return(CreateSimpleElements(parentEntityToken, referenceType, referenceValue, dynamicContext, objects)); }
private void HasUsers(object sender, ConditionalEventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; IUserGroup userGroup = (IUserGroup)dataEntityToken.Data; e.Result = DataFacade.GetData <IUserUserGroupRelation>(f => f.UserGroupId == userGroup.Id).Any(); }
private void IsSameUser(object sender, System.Workflow.Activities.ConditionalEventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; IUser user = (IUser)dataEntityToken.Data; e.Result = user.Username == UserSettings.Username; }
private void initializeCodeActivity_Initialize_ExecuteCode(object sender, EventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; IUser user = (IUser)dataEntityToken.Data; _deleteSelf = user.Username == UserValidationFacade.GetUsername(); }
private void initializeCodeActivity_Initialize_ExecuteCode(object sender, EventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; ISystemActiveLocale systemActiveLocale = (ISystemActiveLocale)dataEntityToken.Data; this.Bindings.Add("SystemActiveLocale", systemActiveLocale); }
private void PageHasMultpleVersions(object sender, ConditionalEventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; IPage selectedPage = (IPage)dataEntityToken.Data; Guid pageId = selectedPage.Id; e.Result = DataFacade.GetData <IPage>().Count(p => p.Id == pageId) > 1; }
private void initalizeCodeActivity_Initialize_ExecuteCode(object sender, EventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; IUserGroup userGroup = (IUserGroup)dataEntityToken.Data; this.Bindings.Add("UserGroup", userGroup); this.Bindings.Add("OldName", userGroup.Name); }
/// <exclude /> public override IEnumerable <EntityToken> GetEntityTokens(EntityToken childEntityToken, TreeNodeDynamicContext dynamicContext) { IEnumerable <object> labels = GetCurrentAndLocalizableObjects <object>(dynamicContext, true); Type childGeneratingDataElementsReferenceType = null; object childGeneratingDataElementsReferenceValue = null; DataEntityToken dataEntityToken = childEntityToken as DataEntityToken; var treeDataFieldGroupingElementEntityToken = childEntityToken as TreeDataFieldGroupingElementEntityToken; if (dataEntityToken != null) { if (this.ChildGeneratingParentIdFilterNode != null) { childGeneratingDataElementsReferenceType = this.ChildGeneratingParentIdFilterNode.ParentFilterType; childGeneratingDataElementsReferenceValue = this.ChildGeneratingParentIdFilterNode.ReferencePropertyInfo.GetValue(dataEntityToken.Data, null); } } else if (treeDataFieldGroupingElementEntityToken != null) { childGeneratingDataElementsReferenceType = treeDataFieldGroupingElementEntityToken.ChildGeneratingDataElementsReferenceType; childGeneratingDataElementsReferenceValue = treeDataFieldGroupingElementEntityToken.ChildGeneratingDataElementsReferenceValue; } foreach (object label in labels) { var tupleIndexer = new TupleIndexer(label); var entityToken = new TreeDataFieldGroupingElementEntityToken(this.Id, this.Tree.TreeId, TypeManager.SerializeType(this.InterfaceType)) { GroupingValues = new Dictionary <string, object>() }; int index = 1; foreach (DataFolderElementsTreeNode dataFolderElementsTreeNode in this.AllGroupingNodes) { if (dataFolderElementsTreeNode.FolderRanges == null) { object fieldValue = tupleIndexer.GetAtIndex(index++); fieldValue = ConvertFieldValue(dataFolderElementsTreeNode, fieldValue); entityToken.GroupingValues.Add(dataFolderElementsTreeNode.GroupingValuesFieldName, fieldValue); } else { int fieldValue = (int)tupleIndexer.GetAtIndex(index++); entityToken.FolderRangeValues.Add(dataFolderElementsTreeNode.FieldName, fieldValue); } } entityToken.ChildGeneratingDataElementsReferenceType = childGeneratingDataElementsReferenceType; entityToken.ChildGeneratingDataElementsReferenceValue = childGeneratingDataElementsReferenceValue; yield return(entityToken); } }
private void step1CodeActivity_Delete_ExecuteCode(object sender, EventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; DataFacade.Delete(dataEntityToken.Data); SpecificTreeRefresher specificTreeRefresher = this.CreateSpecificTreeRefresher(); specificTreeRefresher.PostRefreshMesseges(new PackageElementProviderRootEntityToken()); }
private CultureInfo CreateCultureInfo() { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; ISystemActiveLocale systemActiveLocale = (ISystemActiveLocale)dataEntityToken.Data; CultureInfo cultureInfo = CultureInfo.CreateSpecificCulture(systemActiveLocale.CultureName); return(cultureInfo); }
private void initializeCodeActivity_ExecuteCode(object sender, EventArgs e) { DataEntityToken token = (DataEntityToken)this.EntityToken; IMediaFile file = (IMediaFile)token.Data; this.Bindings.Add("FileName", file.FileName); this.Bindings.Add("FileMimeType", file.MimeType); SetSaveStatus(true); }
private void initialStateCodeActivity_ExecuteCode(object sender, EventArgs e) { DataEntityToken dataEntityToken = (DataEntityToken)this.EntityToken; ISqlConnection connection = (ISqlConnection)dataEntityToken.Data; string decryptedConnectionString = connection.EncryptedConnectionString.Decrypt(); this.Bindings.Add("ConnectionString", decryptedConnectionString); this.Bindings.Add("SqlConnection", connection); }
/// <exclude /> public override AncestorResult GetParentEntityToken(EntityToken ownEntityToken, Type parentInterfaceOfInterest, TreeNodeDynamicContext dynamicContext) { if (this.ParentFilteringHelpers == null) { throw new InvalidOperationException(string.Format("Failed to find parent, are you missing a parent filter for the type '{0}'", this.InterfaceType)); } ParentFilterHelper helper; if (this.ParentFilteringHelpers.TryGetValue(parentInterfaceOfInterest, out helper) == false) { // We cant find the interface of interest directly, so we will give 'some' parent entity token // by using 'one' of our own parent id filters helper = this.ParentFilteringHelpers.First().Value; } DataEntityToken dataEntityToken = (DataEntityToken)ownEntityToken; IData data = dataEntityToken.Data; Verify.ArgumentCondition(data != null, "ownEntityToken", "Failed to get data"); object parentFieldValue = helper.ParentReferencedPropertyInfo.GetValue(data, null); ParameterExpression parameterExpression = Expression.Parameter(helper.ParentIdFilterNode.ParentFilterType, "data"); Expression expression = Expression.Equal( ExpressionHelper.CreatePropertyExpression(helper.ParentRefereePropertyName, parameterExpression), Expression.Constant(parentFieldValue, helper.ParentReferencedPropertyInfo.PropertyType) ); Expression whereExpression = ExpressionHelper.CreateWhereExpression( DataFacade.GetData(helper.ParentIdFilterNode.ParentFilterType).Expression, parameterExpression, expression ); IData parentDataItem = ExpressionHelper.GetCastedObjects <IData>(helper.ParentIdFilterNode.ParentFilterType, whereExpression) .FirstOrDefault(); Verify.IsNotNull(parentDataItem, "Failed to get parent data item. Check if there's a broken parent reference."); DataEntityToken parentEntityToken = parentDataItem.GetDataEntityToken(); TreeNode parentTreeNode = this.ParentNode; var dataElementsTreeNode = parentTreeNode as DataElementsTreeNode; while (dataElementsTreeNode == null || dataElementsTreeNode.InterfaceType != parentEntityToken.InterfaceType) { parentTreeNode = parentTreeNode.ParentNode; } return(new AncestorResult(parentTreeNode, parentEntityToken)); }
private DataEntityToken TryGetDataEntityToken(Type interfaceType) { DataEntityToken dataEntityToken = _currentEntityToken as DataEntityToken; if ((dataEntityToken == null) || (dataEntityToken.InterfaceType != interfaceType)) { dataEntityToken = this.ParentEntityTokens.FindDataEntityToken(interfaceType); } return(dataEntityToken); }