public virtual IList <HeadwordSearchResult> GetHeadwordListBySearchCriteria(IEnumerable <string> selectedGuidList, HeadwordCriteriaQueryCreator creator, int start, int count) { using (var session = GetSession()) { Book bookAlias = null; BookVersion bookVersionAlias = null; BookHeadword bookHeadwordAlias = null; HeadwordSearchResult resultAlias = null; var result = session.QueryOver(() => bookAlias) .JoinQueryOver(x => x.LastVersion, () => bookVersionAlias) .JoinQueryOver(x => x.BookHeadwords, () => bookHeadwordAlias) .Select(Projections.Distinct(Projections.ProjectionList() .Add(Projections.Property(() => bookAlias.Guid).WithAlias(() => resultAlias.BookGuid)) .Add(Projections.Property(() => bookVersionAlias.VersionId).WithAlias(() => resultAlias.BookVersionId)) .Add(Projections.Property(() => bookVersionAlias.Title).WithAlias(() => resultAlias.BookTitle)) .Add(Projections.Property(() => bookVersionAlias.Acronym).WithAlias(() => resultAlias.BookAcronym)) .Add(Projections.Property(() => bookVersionAlias.SourceAbbreviation).WithAlias(() => resultAlias.SourceAbbreviation)) .Add(Projections.Property(() => bookHeadwordAlias.DefaultHeadword).WithAlias(() => resultAlias.Headword)) .Add(Projections.Property(() => bookHeadwordAlias.SortOrder).WithAlias(() => resultAlias.SortOrder)) .Add(Projections.Property(() => bookHeadwordAlias.XmlEntryId).WithAlias(() => resultAlias.XmlEntryId)) .Add(Projections.Property(() => bookHeadwordAlias.Image).WithAlias(() => resultAlias.Image)))) .WhereRestrictionOn(() => bookAlias.Guid).IsInG(selectedGuidList) .And(creator.GetCondition()) .OrderBy(x => x.SortOrder).Asc .TransformUsing(Transformers.AliasToBean <HeadwordSearchResult>()) .Skip(start) .Take(count) .List <HeadwordSearchResult>(); return(result); } }
public virtual IList <HeadwordSearchResult> SearchHeadwordByCriteriaQuery(SearchCriteriaQueryCreator creator) { HeadwordSearchResult resultAlias = null; HeadwordItem headwordItemAlias = null; Snapshot snapshotAlias = null; Project projectAlias = null; var headwordRestrictions = creator.GetHeadwordRestrictions(); var projectIds = SearchProjectIdByCriteriaQuery(creator).Select(x => x.ProjectId); var query = GetSession().QueryOver <HeadwordResource>() .JoinAlias(x => x.Snapshots, () => snapshotAlias) .JoinAlias(() => snapshotAlias.Project, () => projectAlias) .Where(x => snapshotAlias.Id == projectAlias.LatestPublishedSnapshot.Id) .AndRestrictionOn(x => projectAlias.Id).IsInG(projectIds); if (creator.HasHeadwordRestrictions()) { query.JoinAlias(x => x.HeadwordItems, () => headwordItemAlias) .And(headwordRestrictions); } var result = query .SelectList(list => list .SelectGroup(x => x.Id).WithAlias(() => resultAlias.Id) .SelectMin(x => x.Sorting).WithAlias(() => resultAlias.Sorting)) .OrderBy(x => x.Sorting).Asc .TransformUsing(Transformers.AliasToBean <HeadwordSearchResult>()) .Take(creator.GetCount()) .Skip(creator.GetStart()) .List <HeadwordSearchResult>(); return(result); }
public virtual IList <HeadwordSearchResult> GetHeadwordList(int start, int count, IList <long> selectedBookIds = null) { using (var session = GetSession()) { Book bookAlias = null; BookVersion bookVersionAlias = null; BookHeadword bookHeadwordAlias = null; HeadwordSearchResult resultAlias = null; var query = session.QueryOver(() => bookAlias) .JoinQueryOver(x => x.LastVersion, () => bookVersionAlias) .JoinQueryOver(x => x.BookHeadwords, () => bookHeadwordAlias); if (selectedBookIds != null) { query.WhereRestrictionOn(() => bookAlias.Id).IsInG(selectedBookIds); } var result = query.Select(Projections.Distinct(Projections.ProjectionList() .Add(Projections.Property(() => bookAlias.Guid).WithAlias(() => resultAlias.BookGuid)) .Add(Projections.Property(() => bookVersionAlias.VersionId).WithAlias(() => resultAlias.BookVersionId)) .Add(Projections.Property(() => bookVersionAlias.Title).WithAlias(() => resultAlias.BookTitle)) .Add(Projections.Property(() => bookVersionAlias.Acronym).WithAlias(() => resultAlias.BookAcronym)) .Add(Projections.Property(() => bookVersionAlias.SourceAbbreviation).WithAlias(() => resultAlias.SourceAbbreviation)) .Add(Projections.Property(() => bookHeadwordAlias.DefaultHeadword).WithAlias(() => resultAlias.Headword)) .Add(Projections.Property(() => bookHeadwordAlias.XmlEntryId).WithAlias(() => resultAlias.XmlEntryId)) .Add(Projections.Property(() => bookHeadwordAlias.SortOrder).WithAlias(() => resultAlias.SortOrder)) .Add(Projections.Property(() => bookHeadwordAlias.Image).WithAlias(() => resultAlias.Image)))) .OrderBy(x => x.SortOrder).Asc .TransformUsing(Transformers.AliasToBean <HeadwordSearchResult>()) .Skip(start) .Take(count) .List <HeadwordSearchResult>(); return(result); } }