public override object Execute() { IEnumerable <TextContent> contents = new TextContent[0]; contents = TextContentQuery.Schema.GetContents(); if (TextContentQuery.Folder != null) { contents = contents.Where(it => it.FolderName.EqualsOrNullEmpty(TextContentQuery.Folder.FullName, StringComparison.CurrentCultureIgnoreCase)); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); var contentQueryable = translator.Translate(TextContentQuery.Expression, contents.AsQueryable()); foreach (var categoryQuery in translator.CategoryQueries) { var categories = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(categoryQuery); var categoryData = TextContentQuery.Repository.GetCategoryData() .Where(it => categories.Any(c => it.CategoryUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))); contentQueryable = contentQueryable.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.ContentUUID, StringComparison.CurrentCultureIgnoreCase))); } return(Execute(contentQueryable, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take)); }
public override object Execute() { var contents = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(CategoriesQuery.InnerQuery); IQueryable <TextContent> categories = new TextContent[0].AsQueryable(); if (contents.Count() > 0) { categories = CategoriesQuery.CategoryFolder.GetSchema().GetContents().AsQueryable(); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); categories = translator.Translate(CategoriesQuery.Expression, categories); var categoryData = CategoriesQuery.Repository.GetCategoryData() .Where(it => it.CategoryFolder.EqualsOrNullEmpty(CategoriesQuery.CategoryFolder.FullName, StringComparison.CurrentCultureIgnoreCase)) .Where(it => contents.Any(c => it.ContentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))) .ToArray(); categories = categories.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.CategoryUUID, StringComparison.CurrentCultureIgnoreCase))); var result = Execute(categories, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take); return(result); }
public override object Execute() { var parent = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(ChildrenQuery.ParentQuery); IQueryable <TextContent> contents = new TextContent[0].AsQueryable(); if (parent.Count() > 0) { contents = ChildrenQuery.ChildSchema.GetContents().AsQueryable(); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); contents = translator.Translate(ChildrenQuery.Expression, contents); contents = contents.Where(it => parent.Any(c => it.ParentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))); return(Execute(contents, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take)); }
object IContentProvider <Models.TextContent> .Execute(Query.IContentQuery <Models.TextContent> query) { return(ContentQueryExecutor.Execute(query)); }