Example #1
0
        /// <summary>
        /// Completes and\or corrects the search request.
        /// </summary>
        private PagesListRequestVM NormalizeListRequest(PagesListRequestVM vm)
        {
            if (vm == null)
            {
                vm = new PagesListRequestVM();
            }

            var orderableFields = new[] { nameof(PageScoredVM.Title), nameof(PageScoredVM.LastUpdateDate), nameof(PageScoredVM.CreationDate), nameof(PageScoredVM.CompletenessScore) };

            if (!orderableFields.Contains(vm.OrderBy))
            {
                vm.OrderBy = orderableFields[0];
            }

            if (vm.Page < 0)
            {
                vm.Page = 0;
            }

            if (vm.OrderDescending == null)
            {
                vm.OrderDescending = false;
            }

            return(vm);
        }
Example #2
0
        /// <summary>
        /// Finds pages.
        /// </summary>
        public async Task <PagesListVM> GetPagesAsync(PagesListRequestVM request)
        {
            const int PageSize = 20;

            request = NormalizeListRequest(request);

            var query = _db.PagesScored
                        .Include(x => x.MainPhoto)
                        .Where(x => x.IsDeleted == false);

            if (!string.IsNullOrEmpty(request.SearchQuery))
            {
                query = query.Where(x => x.Title.ToLower().Contains(request.SearchQuery.ToLower()));
            }

            if (request.Types?.Length > 0)
            {
                query = query.Where(x => request.Types.Contains(x.Type));
            }

            var totalCount = await query.CountAsync();

            var items = await query.OrderBy(request.OrderBy, request.OrderDescending ?? false)
                        .ProjectTo <PageScoredVM>(_mapper.ConfigurationProvider)
                        .Skip(PageSize * request.Page)
                        .Take(PageSize)
                        .ToListAsync();

            return(new PagesListVM
            {
                Items = items,
                PageCount = (int)Math.Ceiling((double)totalCount / PageSize),
                Request = request
            });
        }
Example #3
0
        /// <summary>
        /// Completes and\or corrects the search request.
        /// </summary>
        private PagesListRequestVM NormalizeListRequest(PagesListRequestVM vm)
        {
            if (vm == null)
            {
                vm = new PagesListRequestVM();
            }

            var orderableFields = new[] { nameof(Page.Title), nameof(Page.LastUpdateDate), nameof(Page.CreationDate) };

            if (!orderableFields.Contains(vm.OrderBy))
            {
                vm.OrderBy = orderableFields[0];
            }

            if (vm.Page < 0)
            {
                vm.Page = 0;
            }

            return(vm);
        }
Example #4
0
        public async Task <ActionResult> Index(PagesListRequestVM request)
        {
            var vm = await _pages.GetPagesAsync(request);

            return(View(vm));
        }