Exemplo n.º 1
0
        public IViewComponentResult Invoke(RequestFormData requestFormData)
        {
            var newsSources = _dbContext.NewsSources.OrderBy(ns => ns.Name);

            ViewBag.NewsSources = new SelectList(newsSources, nameof(NewsSource.Id), nameof(NewsSource.Name));

            return(View(requestFormData));
        }
Exemplo n.º 2
0
        public IActionResult Index(RequestFormData requestFormData)
        {
            TempData["newsSource"]  = requestFormData.NewsSource;
            TempData["orderByDate"] = requestFormData.OrderByDate;

            RouteData.Values.Clear();

            return(RedirectToAction());
        }
Exemplo n.º 3
0
        protected async Task <NewsListViewModel> GetNewsAsync(int?newsSource, bool?orderByDate, int page)
        {
            var pagingInfo = new PagingInfoViewModel
            {
                CurrentPage  = page,
                ItemsPerPage = NEWS_PER_PAGE
            };
            var requestFormData = new RequestFormData
            {
                NewsSource = newsSource
            };

            if (orderByDate.HasValue)
            {
                requestFormData.OrderByDate = orderByDate.Value;
            }

            var newsListViewModel = new NewsListViewModel
            {
                News            = Enumerable.Empty <NewsViewModel>(),
                PagingInfo      = pagingInfo,
                RequestFormData = requestFormData
            };

            if (!(await _dbContext.NewsSources.AnyAsync()))
            {
                return(newsListViewModel);
            }

            var news = _dbContext.News.Include(n => n.NewsSource).AsQueryable();

            if (requestFormData.NewsSource.HasValue)
            {
                if ((await _dbContext.NewsSources.FindAsync(requestFormData.NewsSource.Value)) == null)
                {
                    return(newsListViewModel);
                }

                news = news.Where(n => n.NewsSource.Id == requestFormData.NewsSource.Value);
            }

            pagingInfo.TotalItems = await news.CountAsync();

            news = requestFormData.OrderByDate ?
                   news.OrderByDescending(n => n.PublishDate) :
                   news.OrderBy(n => n.NewsSource.Name);

            news = news.Skip((pagingInfo.CurrentPage - 1) * NEWS_PER_PAGE).Take(NEWS_PER_PAGE);

            newsListViewModel.News = await news.ProjectTo <NewsViewModel>(_mapper.ConfigurationProvider).ToArrayAsync();

            return(newsListViewModel);
        }