/// <summary> /// Returns all folder data given the page id and folder data type /// </summary> /// <param name="pageId"></param> /// <param name="pageFolderType"></param> /// <returns></returns> public static IEnumerable <IData> GetFolderData(Guid pageId, Type pageFolderType) { //TODO: Consider caching here ParameterExpression parameterExpression = Expression.Parameter(pageFolderType); LambdaExpression lambdaExpression = Expression.Lambda( Expression.Equal( Expression.Property( parameterExpression, PageMetaDataFacade.GetDefinitionPageReferencePropertyInfo(pageFolderType) ), Expression.Constant( pageId, typeof(Guid) ) ), parameterExpression ); Expression whereExpression = ExpressionCreator.Where(DataFacade.GetData(pageFolderType).Expression, lambdaExpression); IEnumerable <IData> dataset = ExpressionHelper.GetCastedObjects <IData>(pageFolderType, whereExpression); return(dataset); }
/// <exclude /> public static bool HasFolderData(this IPage page, Type pageFolderType) { Verify.ArgumentNotNull(page, "page"); //TODO: Consider caching here ParameterExpression parameterExpression = Expression.Parameter(pageFolderType); LambdaExpression lambdaExpression = Expression.Lambda( Expression.Equal( Expression.Property( parameterExpression, PageMetaDataFacade.GetDefinitionPageReferencePropertyInfo(pageFolderType) ), Expression.Constant( page.Id, typeof(Guid) ) ), parameterExpression ); Expression whereExpression = ExpressionCreator.Where(DataFacade.GetData(pageFolderType).Expression, lambdaExpression); //TODO: Possible optimization here return(DataFacade.GetData(pageFolderType).Provider.CreateQuery(whereExpression).ToEnumerableOfObjects().Any()); }
/// <exclude /> public static Guid GetMetaDataReferencedPageId(IData metaData) { PropertyInfo propertyInfo = PageMetaDataFacade.GetDefinitionPageReferencePropertyInfo(metaData.DataSourceId.InterfaceType); Guid pageId = (Guid)propertyInfo.GetValue(metaData, null); return(pageId); }