Пример #1
0
        public async Task <ViewResult> Index(string filter = null, SortType sort = SortType.Created, bool isLive = false, int page = 1)
        {
            var viewModel = new PagingItemViewModel <Room>()
            {
                IsLive = false
            };

            IQueryable <Room> items = db.Rooms.Where(c => !c.IsHidden);

            if (filter != null)
            {
                items           = items.Where(c => c.DisplayName.Contains(filter));
                viewModel.Query = filter;
            }

            if (isLive)
            {
                items            = items.Where(c => c.IsLive);
                viewModel.IsLive = true;
            }

            switch (sort)
            {
            case SortType.Visitor:
                items = items.OrderByDescending(c => c.TotalVisitor);
                viewModel.SortType = SortType.Visitor;
                break;

            case SortType.Created:
            default:
                items = items.OrderByDescending(c => c.CreatedAt);
                viewModel.SortType = SortType.Created;
                break;
            }

            // トータル投稿数
            viewModel.TotalCount = await items.CountAsync();

            // トータルページ数
            viewModel.TotalPages = (viewModel.TotalCount - 1) / PagingItemCount + 1;
            if (viewModel.TotalPages < page)
            {
                viewModel.CurrentPage = 1;
            }
            else
            {
                viewModel.CurrentPage = page;
            }

            // StartPageのNumber
            viewModel.StartPage = viewModel.CurrentPage - PagingItemCount;
            if (viewModel.StartPage < 1)
            {
                viewModel.StartPage = 1;
            }

            // EndPageのNumber
            viewModel.EndPage = viewModel.CurrentPage + PagingItemCount - 1;
            if (viewModel.EndPage > viewModel.TotalPages)
            {
                viewModel.EndPage = viewModel.TotalPages;
            }

            // 最初のn件だけ要素を取得
            viewModel.Results = await items.Skip((viewModel.CurrentPage - 1) *PagingItemCount).Take(PagingItemCount).ToListAsync();

            return(View(viewModel));
        }
Пример #2
0
        public async Task<ViewResult> Index(string filter = null, SortType sort = SortType.Created, bool isLive = false, int page = 1)
        {
            var viewModel = new PagingItemViewModel<Room>()
            {
                IsLive = false
            };

            IQueryable<Room> items = db.Rooms.Where(c => !c.IsHidden);

            if (filter != null)
            {
                items = items.Where(c => c.DisplayName.Contains(filter));
                viewModel.Query = filter;
            }

            if (isLive)
            {
                items = items.Where(c => c.IsLive);
                viewModel.IsLive = true;
            }

            switch (sort)
            {
                case SortType.Visitor:
                    items = items.OrderByDescending(c => c.TotalVisitor);
                    viewModel.SortType = SortType.Visitor;
                    break;
                case SortType.Created:
                default:
                    items = items.OrderByDescending(c => c.CreatedAt);
                    viewModel.SortType = SortType.Created;
                    break;
            }

            // トータル投稿数
            viewModel.TotalCount = await items.CountAsync();

            // トータルページ数
            viewModel.TotalPages = (viewModel.TotalCount - 1) / PagingItemCount + 1;
            if (viewModel.TotalPages < page)
            {
                viewModel.CurrentPage = 1;
            }
            else
            {
                viewModel.CurrentPage = page;
            }

            // StartPageのNumber
            viewModel.StartPage = viewModel.CurrentPage - PagingItemCount;
            if (viewModel.StartPage < 1)
                viewModel.StartPage = 1;

            // EndPageのNumber
            viewModel.EndPage = viewModel.CurrentPage + PagingItemCount - 1;
            if (viewModel.EndPage > viewModel.TotalPages)
                viewModel.EndPage = viewModel.TotalPages;

            // 最初のn件だけ要素を取得
            viewModel.Results = await items.Skip((viewModel.CurrentPage - 1) * PagingItemCount).Take(PagingItemCount).ToListAsync();

            return View(viewModel);
        }