diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Services/IProjectionManager.cs b/src/Orchard.Web/Modules/Orchard.Projections/Services/IProjectionManager.cs index c6320977fb..d3eae961df 100644 --- a/src/Orchard.Web/Modules/Orchard.Projections/Services/IProjectionManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Projections/Services/IProjectionManager.cs @@ -5,6 +5,7 @@ using Orchard.Projections.Descriptors.Layout; using Orchard.Projections.Descriptors.Property; using Orchard.Projections.Descriptors.SortCriterion; +using Orchard.Projections.Models; namespace Orchard.Projections.Services { @@ -23,7 +24,12 @@ public interface IProjectionManager : IDependency IEnumerable GetContentItems(int queryId, int skip = 0, int count = 0); IEnumerable GetContentItems(int queryId, ContentPart part, int skip = 0, int count = 0); + IEnumerable GetContentQueries( + QueryPartRecord queryRecord, + IEnumerable sortCriteria, + Dictionary tokens); + int GetCount(int queryId); int GetCount(int queryId, ContentPart part); } -} \ No newline at end of file +} diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs b/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs index 73deec9264..534e4eba29 100644 --- a/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs @@ -128,7 +128,7 @@ public int GetCount(int queryId, ContentPart part) var queryRecord = _queryRepository.Get(queryId) ?? throw new ArgumentException("queryId"); // Prepare tokens. - Dictionary tokens = new Dictionary(); + var tokens = new Dictionary(); if (part != null) { tokens.Add("Content", part.ContentItem); @@ -151,17 +151,11 @@ public IEnumerable GetContentItems(int queryId, ContentPart part, i { var availableSortCriteria = DescribeSortCriteria().ToList(); - var queryRecord = _queryRepository.Get(queryId); - - if (queryRecord == null) - { - throw new ArgumentException("queryId"); - } - + var queryRecord = _queryRepository.Get(queryId) ?? throw new ArgumentException("queryId"); var contentItems = new List(); // Prepare tokens. - Dictionary tokens = new Dictionary(); + var tokens = new Dictionary(); if (part != null) { tokens.Add("Content", part.ContentItem); @@ -186,7 +180,8 @@ public IEnumerable GetContentItems(int queryId, ContentPart part, i return Enumerable.Empty(); } - var groupQuery = _contentManager.HqlQuery().Where(alias => alias.Named("ci"), x => x.InG("Id", ids)); + var version = queryRecord.VersionScope.ToVersionOptions(); + var groupQuery = _contentManager.HqlQuery().ForVersion(version).Where(alias => alias.Named("ci"), x => x.InG("Id", ids)); // Iterate over each sort criteria to apply the alterations to the query object. foreach (var sortCriterion in queryRecord.SortCriteria.OrderBy(s => s.Position)) @@ -200,8 +195,8 @@ public IEnumerable GetContentItems(int queryId, ContentPart part, i Tokens = tokens }; - string category = sortCriterion.Category; - string type = sortCriterion.Type; + var category = sortCriterion.Category; + var type = sortCriterion.Type; // Find specific sort criterion. var descriptor = availableSortCriteria @@ -255,8 +250,8 @@ public IEnumerable GetContentQueries( Tokens = tokens }; - string category = filter.Category; - string type = filter.Type; + var category = filter.Category; + var type = filter.Type; // Find specific filter. var descriptor = availableFilters @@ -287,8 +282,8 @@ public IEnumerable GetContentQueries( Tokens = tokens }; - string category = sortCriterion.Category; - string type = sortCriterion.Type; + var category = sortCriterion.Category; + var type = sortCriterion.Type; // Find specific sort criterion. var descriptor = availableSortCriteria