/// <summary> /// Executes the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>Result model.</returns> public SitemapsGridViewModel <SiteSettingSitemapViewModel> Execute(SitemapsFilter request) { request.SetDefaultSortingOptions("Title"); Models.Sitemap alias = null; SiteSettingSitemapViewModel modelAlias = null; var query = UnitOfWork.Session.QueryOver(() => alias).Where(() => !alias.IsDeleted); if (!string.IsNullOrWhiteSpace(request.SearchQuery)) { var searchQuery = string.Format("%{0}%", request.SearchQuery); query = query.Where(Restrictions.Disjunction().Add(Restrictions.InsensitiveLike(Projections.Property(() => alias.Title), searchQuery))); } if (request.Tags != null) { foreach (var tagKeyValue in request.Tags) { var id = tagKeyValue.Key.ToGuidOrDefault(); query = query.WithSubquery.WhereExists(QueryOver.Of <PageTag>().Where(tag => tag.Tag.Id == id && tag.Page.Id == alias.Id).Select(tag => 1)); } } query = query.SelectList( select => select.Select(() => alias.Id) .WithAlias(() => modelAlias.Id) .Select(() => alias.Version) .WithAlias(() => modelAlias.Version) .Select(() => alias.Title) .WithAlias(() => modelAlias.Title)).TransformUsing(Transformers.AliasToBean <SiteSettingSitemapViewModel>()); if (configuration.Security.AccessControlEnabled) { IEnumerable <Guid> deniedPages = GetDeniedSitemaps(); foreach (var deniedPageId in deniedPages) { var id = deniedPageId; query = query.Where(f => f.Id != id); } } var count = query.ToRowCountFutureValue(); var sitemaps = query.AddSortingAndPaging(request).Future <SiteSettingSitemapViewModel>(); return(new SitemapsGridViewModel <SiteSettingSitemapViewModel>(sitemaps.ToList(), request, count.Value)); }
/// <summary> /// Gets sitemaps list for Site Settings. /// </summary> /// <param name="request">The request.</param> /// <returns>Sitemaps list.</returns> public ActionResult Sitemaps(SitemapsFilter request) { request.SetDefaultPaging(); var model = GetCommand <GetSitemapsListCommand>().ExecuteCommand(request); var success = model != null; var view = RenderView("Sitemaps", model); var json = new { Tags = request.Tags, }; return(ComboWireJson(success, view, json, JsonRequestBehavior.AllowGet)); }