Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        /// <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));
        }