예제 #1
0
        public ActionResult Selected(int id = 1)
        {
            var currentNews = this.Data.News.GetById(id);

            if (currentNews == null || currentNews.IsDeleted)
            {
                throw new HttpException((int)HttpStatusCode.NotFound, Resource.Views.Selected.Invalid_news_id);
            }

            var previousNews =
                this.Data.News.All()
                .OrderByDescending(x => x.Id)
                .FirstOrDefault(x => x.Id < currentNews.Id && x.IsVisible && !x.IsDeleted)
                ?? this.Data.News.All().OrderByDescending(x => x.Id).First(x => x.IsVisible && !x.IsDeleted);

            var nextNews =
                this.Data.News.All()
                .OrderBy(x => x.Id)
                .FirstOrDefault(x => x.Id > currentNews.Id && x.IsVisible && !x.IsDeleted)
                ?? this.Data.News.All().OrderBy(x => x.Id).First(x => x.IsVisible && !x.IsDeleted);

            var newsContentViewModel = new SelectedNewsViewModel
            {
                Id          = currentNews.Id,
                Title       = currentNews.Title,
                Author      = currentNews.Author,
                Source      = currentNews.Source,
                TimeCreated = currentNews.CreatedOn,
                Content     = currentNews.Content,
                PreviousId  = previousNews.Id,
                NextId      = nextNews.Id
            };

            return(this.View(newsContentViewModel));
        }
        public ActionResult Selected(int id = 1)
        {
            var currentNews = this.Data.News.GetById(id);

            if (currentNews == null || currentNews.IsDeleted)
            {
                TempData.Add("InfoMessage", "Невалидна новина.");
                return(View());
            }

            var previousNews = this.Data.News.All()
                               .OrderByDescending(x => x.Id)
                               .Where(x => x.Id < currentNews.Id && x.IsVisible && !x.IsDeleted)
                               .FirstOrDefault();

            if (previousNews == null)
            {
                previousNews = this.Data.News.All()
                               .OrderByDescending(x => x.Id)
                               .Where(x => x.IsVisible && !x.IsDeleted)
                               .First();
            }

            var nextNews = this.Data.News.All()
                           .OrderBy(x => x.Id)
                           .Where(x => x.Id > currentNews.Id && x.IsVisible && !x.IsDeleted)
                           .FirstOrDefault();

            if (nextNews == null)
            {
                nextNews = this.Data.News.All()
                           .OrderBy(x => x.Id)
                           .Where(x => x.IsVisible && !x.IsDeleted)
                           .First();
            }

            var newsContentViewModel = new SelectedNewsViewModel
            {
                Id          = currentNews.Id,
                Title       = currentNews.Title,
                Author      = currentNews.Author,
                Source      = currentNews.Source,
                TimeCreated = currentNews.CreatedOn,
                Content     = currentNews.Content,
                PreviousId  = previousNews.Id,
                NextId      = nextNews.Id
            };

            return(this.View(newsContentViewModel));
        }