public TemplateContentDTO GetTemplateContentDTO(Site site) { ISession session = Session; var transformer = new PositionalToBeanResultTransformer(typeof(TagDTO), new[] { "TagId", "Name", "Count" }); var transformer2 = new PositionalToBeanResultTransformer(typeof(ContentItemCalendarDTO), new[] { "Year", "Month", "Day", "Count" }); IMultiQuery multiQuery = session.CreateMultiQuery() .AddNamedQuery("GetAllCategoriesBySite") .AddNamedQuery("GetAllTagsBySite") .Add( session.GetNamedQuery("GetTagCloud") .SetResultTransformer(transformer) ) .Add( session.GetNamedQuery("GetPostCalendarForPublishedBySite") .SetDateTime("now", DateTime.Now.ToUniversalTime()) .SetResultTransformer(transformer2) ) .AddNamedQuery("FindAllPagesBySite") .Add( session.GetNamedQuery("GetRecentComments") .SetMaxResults(15) ) .Add( // TODO: move to namedquery session.GetNamedQuery("GetRecentPosts") .SetMaxResults(15) ) .SetEntity("site", site) .SetEnum("status", WorkflowStatus.Published) .SetDateTime("date", DateTime.Now.ToUniversalTime()) .SetEnum("type", CommentType.Comment) .SetEnum("commentstatus", CommentStatus.Approved) .SetCacheable(true); // get the multi query result IList results = multiQuery.List(); TemplateContentDTO dto = new TemplateContentDTO { Categories = ((IList)results[0]).Cast<Category>(), Tags = ((IList)results[1]).Cast<Tag>().ToList<Tag>(), TagCloud = ((IList)results[2]).Cast<TagDTO>().ToList<TagDTO>(), Calendar = ((IList)results[3]).Cast<ContentItemCalendarDTO>().ToList<ContentItemCalendarDTO>(), Pages = ((IList)results[4]).Cast<Page>().ToList<Page>(), RecentComments = ((IList)results[5]).Cast<Comment>().ToList<Comment>(), RecentPosts = ((IList)results[6]).Cast<Post>().ToList<Post>() }; return dto; }
public IList<TagDTO> GetTagCloudBySite(Site site) { // string hql = @"select t.TagId, t.Name, count(t) // from Tag t // join t.ContentItems tc // where t.Site = :site // group by t.TagId, t.Name"; var transformer = new PositionalToBeanResultTransformer(typeof(TagDTO), new[] { "TagId", "Name", "Count" }); IList<TagDTO> list = Session.GetNamedQuery("GetTagCloud") .SetEntity("site", site) .SetResultTransformer(transformer) .List<TagDTO>(); return list; }