BetterCms.Module.Pages.Services.DefaultPageListService.GetFilteredPagesList C# (CSharp) Метод

GetFilteredPagesList() публичный Метод

public GetFilteredPagesList ( BetterCms.Module.Pages.ViewModels.Filter.PagesFilter request ) : PagesGridViewModel
request BetterCms.Module.Pages.ViewModels.Filter.PagesFilter
Результат PagesGridViewModel
        public PagesGridViewModel<SiteSettingPageViewModel> GetFilteredPagesList(PagesFilter request)
        {
            request.SetDefaultSortingOptions("CreatedOn", true);

            PageProperties alias = null;
            PagesView viewAlias = null;
            PageProperties modelAlias = null;

            var query = unitOfWork.Session
                .QueryOver(() => viewAlias)
                .Inner.JoinAlias(() => viewAlias.Page, () => alias)
                .Where(() => !alias.IsDeleted && alias.Status != PageStatus.Preview);

            var hasnotSeoDisjunction =
                Restrictions.Disjunction()
                    .Add(Restrictions.Eq(Projections.Property(() => viewAlias.IsInSitemap), false))
                    .Add(RestrictionsExtensions.IsNullOrWhiteSpace(Projections.Property(() => alias.MetaTitle)))
                    .Add(RestrictionsExtensions.IsNullOrWhiteSpace(Projections.Property(() => alias.MetaKeywords)))
                    .Add(RestrictionsExtensions.IsNullOrWhiteSpace(Projections.Property(() => alias.MetaDescription)));

            var hasSeoProjection = Projections.Conditional(hasnotSeoDisjunction,
                Projections.Constant(false, NHibernateUtil.Boolean),
                Projections.Constant(true, NHibernateUtil.Boolean));

            query = FilterQuery(query, request, hasnotSeoDisjunction);

            query = query
                .SelectList(select => select
                    .Select(() => alias.Id).WithAlias(() => modelAlias.Id)
                    .Select(() => alias.Version).WithAlias(() => modelAlias.Version)
                    .Select(() => alias.Title).WithAlias(() => modelAlias.Title)
                    .Select(() => alias.Status).WithAlias(() => modelAlias.Status)
//                    .Select(hasSeoProjection).WithAlias(() => modelAlias.HasSEO)
                    .Select(() => alias.CreatedOn).WithAlias(() => modelAlias.CreatedOn)
                    .Select(() => alias.ModifiedOn).WithAlias(() => modelAlias.ModifiedOn)
                    .Select(() => alias.PageUrl).WithAlias(() => modelAlias.PageUrl)
                    .Select(() => alias.Language).WithAlias(() => modelAlias.Language)
                    .Select(() => alias.IsMasterPage).WithAlias(() => modelAlias.IsMasterPage))
                .TransformUsing(Transformers.AliasToBean<PageProperties>());

            if (configuration.Security.AccessControlEnabled)
            {
                IEnumerable<Guid> deniedPages = accessControlService.GetDeniedObjects<PageProperties>();
                foreach (var deniedPageId in deniedPages)
                {
                    var id = deniedPageId;
                    query = query.Where(f => f.Id != id);
                }
            }

            var count = query.ToRowCountFutureValue();

            IEnumerable<LookupKeyValue> languagesFuture = configuration.EnableMultilanguage ? languageService.GetLanguagesLookupValues() : null;

            var pages = query.AddSortingAndPaging(request).Future<PageProperties>();

            var layouts = layoutService
                        .GetAvailableLayouts()
                        .Select(l => new LookupKeyValue(
                            string.Format("{0}-{1}", l.IsMasterPage ? "m" : "l", l.TemplateId),
                            l.Title))
                        .ToList();

            var categoriesLookupList = categoryService.GetCategoriesLookupList(PageProperties.CategorizableItemKeyForPages);
            var model = CreateModel(pages, request, count, layouts, categoriesLookupList);

            if (languagesFuture != null)
            {
                model.Languages = languagesFuture.ToList();
                model.Languages.Insert(0, languageService.GetInvariantLanguageModel());
            }

            return model;
        }