예제 #1
0
        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));
        }
예제 #2
0
        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);
        }
예제 #3
0
        public override object Execute()
        {
            var children = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(ParentQuery.ChildrenQuery);
            IQueryable <TextContent> contents = new TextContent[0].AsQueryable();

            if (children.Count() > 0)
            {
                contents = ParentQuery.ParentSchema.GetContents().AsQueryable();
            }

            QueryExpressionTranslator translator = new QueryExpressionTranslator();

            contents = translator.Translate(ParentQuery.Expression, contents);

            contents = contents.Where(it => children.Any(c => c.ParentUUID.EqualsOrNullEmpty(it.UUID, StringComparison.CurrentCultureIgnoreCase)));


            return(Execute(contents, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take));
        }