Esempio n. 1
0
        public async Task <ActionResult> Index(string sortOrder, int page = 1)
        {
            ApplicationUser userData;

            string userId = null;

            if (User.Identity.IsAuthenticated)
            {
                userData = await UserManager.FindByNameAsync(User.Identity.Name);

                userId = userData.Id;
            }

            ViewBag.CurrentSort  = sortOrder;
            ViewBag.NameSortParm = sortOrder == "ByAuthor" ? "" : "ByAuthor";
            ViewBag.DateSortParm = sortOrder == "ByDate" ? "" : "ByDate";

            var newsModel = new NewsModel();

            var listOfNews = newsModel.NewsOnScreen();

            listOfNews = newsModel.SortNewsBy(sortOrder, listOfNews);

            int countVisibleNews = 0;

            foreach (var newsData in listOfNews)
            {
                if (newsData.IsVisible || User.IsInRole("admin") || User.IsInRole("editor") || (newsData.AuthorId == userId && User.IsInRole("journalist")))
                {
                    countVisibleNews++;
                }
            }

            NewsListViewModel dataList;

            if (countVisibleNews > 3)
            {
                int pageSize = 3;
                dataList = new NewsListViewModel
                {
                    UserId       = userId,
                    NewsPerPages = listOfNews.Skip((page - 1) * pageSize).Take(pageSize),
                    PageData     = new PageInfo
                    {
                        PageNumber = page,
                        PageSize   = pageSize,
                        TotalItems = listOfNews.Count
                    }
                };
            }
            else
            {
                dataList = new NewsListViewModel
                {
                    UserId       = userId,
                    NewsPerPages = listOfNews,
                    PageData     = new PageInfo {
                        PageSize = 0
                    }
                };
            }

            return(View(dataList));
        }