public JsonResult GetChildList([FromBody] ChildListQuery query) { query.Parser = _parser; var data = EntityObjectService.GetEntityTreeItems(query); return(Json(data)); }
/// <summary> /// Фабрика для запроса на отображение дерева в QP /// </summary> internal static ITreeProcessor Create(ChildListQuery query) { using (new QPConnectionScope()) { if (query.EntityTypeCode == EntityTypeCode.Article || query.EntityTypeCode == EntityTypeCode.VirtualArticle) { var contentId = query.ParentEntityId; var searchQueryParams = query.SearchQueryParams; var articleContextQueryParams = query.ContextQueryParams; query.Filter = ArticleRepository.FillFullTextSearchParams(contentId, query.Filter, searchQueryParams, query.Parser, out var ftsOptions, out var extensionContentIds, out var _); var filterSqlParams = new List <DbParameter>(); var sourceQuery = new ArticleFilterSearchQueryParser().GetFilter(searchQueryParams, filterSqlParams); var linkedFilters = (ArticleRepository.GetLinkSearchParameter(searchQueryParams) ?? new ArticleLinkSearchParameter[0]).ToList(); var hasFtsSearchParams = !string.IsNullOrEmpty(ftsOptions.QueryString) && !(ftsOptions.HasError.HasValue && ftsOptions.HasError.Value); var hasFilterSearchParams = !string.IsNullOrEmpty(sourceQuery) || linkedFilters.Any(); var combinedFilter = string.IsNullOrWhiteSpace(sourceQuery) ? query.HostFilter : string.IsNullOrWhiteSpace(query.HostFilter) ? sourceQuery : $"({query.HostFilter} AND {sourceQuery})"; var filterForSmpl = string.IsNullOrWhiteSpace(combinedFilter) ? query.Filter : combinedFilter; return(hasFtsSearchParams || hasFilterSearchParams ? new ArticleFtsProcessor(contentId, query.Filter, combinedFilter, linkedFilters, articleContextQueryParams, filterSqlParams, extensionContentIds, ftsOptions) : new ArticleSimpleProcessor(contentId, query.EntityId, filterForSmpl, query.EntityTypeCode, query.SelectItemIDs) as ITreeProcessor); } if (query.EntityTypeCode == EntityTypeCode.SiteFolder || query.EntityTypeCode == EntityTypeCode.ContentFolder) { return(new SiteFolderProcessor(query.ParentEntityId, query.EntityTypeCode, query.ReturnSelf, query.EntityId)); } if (query.EntityTypeCode == EntityTypeCode.UserGroup) { return(new UserGroupProcessor(query.EntityTypeCode, query.EntityId)); } } throw new NotImplementedException(query.EntityTypeCode); }
public static IList <EntityTreeItem> GetEntityTreeItems(ChildListQuery query) => ArticleTreeFactory.Create(query).Process();