public PackageListViewModel(
            IQueryable<Package> packages,
            DateTime? indexTimestampUtc,
            string searchTerm,
            int totalCount,
            int pageIndex,
            int pageSize,
            UrlHelper url,
            string curatedFeed)
        {
            // TODO: Implement actual sorting
            IEnumerable<ListPackageItemViewModel> items = packages.ToList().Select(pv => new ListPackageItemViewModel(pv));
            PageIndex = pageIndex;
            IndexTimestampUtc = indexTimestampUtc;
            PageSize = pageSize;
            TotalCount = totalCount;
            SearchTerm = searchTerm;
            int pageCount = (TotalCount + PageSize - 1) / PageSize;

            var pager = new PreviousNextPagerViewModel<ListPackageItemViewModel>(
                items,
                PageIndex,
                pageCount,
                page => curatedFeed == null ?
                    url.PackageList(page, searchTerm) :
                    url.CuratedPackageList(page, searchTerm, curatedFeed)
                );
            Items = pager.Items;
            FirstResultIndex = 1 + (PageIndex * PageSize);
            LastResultIndex = FirstResultIndex + Items.Count() - 1;
            Pager = pager;
        }
        public PackageListViewModel(IQueryable<Package> packages,
            string searchTerm,
            string sortOrder,
            int totalCount,
            int pageIndex,
            int pageSize,
            UrlHelper url,
            bool includePrerelease)
        {
            // TODO: Implement actual sorting
            IEnumerable<ListPackageItemViewModel> items;
            using (MiniProfiler.Current.Step("Querying and mapping packages to list"))
            {
                items = packages.ToList()
                                .Select(pv => new ListPackageItemViewModel(pv, needAuthors: false));
            }
            PageIndex = pageIndex;
            PageSize = pageSize;
            TotalCount = totalCount;
            SortOrder = sortOrder;
            SearchTerm = searchTerm;
            int pageCount = (TotalCount + PageSize - 1) / PageSize;

            var pager = new PreviousNextPagerViewModel<ListPackageItemViewModel>(
                items,
                PageIndex,
                pageCount,
                page => url.PackageList(page, sortOrder, searchTerm, includePrerelease)
            );
            Items = pager.Items;
            FirstResultIndex = 1 + (PageIndex * PageSize);
            LastResultIndex = FirstResultIndex + Items.Count() - 1;
            Pager = pager;
            IncludePrerelease = includePrerelease ? "true" : null;
        }
예제 #3
0
        public PackageListViewModel(IQueryable<Package> packages,
            string searchTerm,
            string sortOrder,
            int pageIndex,
            int pageSize,
            UrlHelper url)
        {
            // TODO: Implement actual sorting
            IEnumerable<ListPackageItemViewModel> items;
            using (MiniProfiler.Current.Step("Querying and mapping packages to list"))
            {
                items = packages.SortBy(GetSortExpression(sortOrder))
                                .Skip(pageIndex * pageSize)
                                .Take(pageSize)
                                .ToList()
                                .Select(pv => new ListPackageItemViewModel(pv));
            }
            PageIndex = pageIndex;
            PageSize = pageSize;
            TotalCount = packages.Count();
            SortOrder = sortOrder;
            SearchTerm = searchTerm;
            int pageCount = (TotalCount + PageSize - 1) / PageSize;

            var pager = new PreviousNextPagerViewModel<ListPackageItemViewModel>(
                items,
                PageIndex,
                pageCount,
                page => url.PackageList(page, sortOrder, searchTerm)
            );
            Items = pager.Items;
            FirstResultIndex = 1 + (PageIndex * PageSize);
            LastResultIndex = FirstResultIndex + Items.Count() - 1;
            Pager = pager;
        }
        public void PagerWithPageSizeEqualToItemsCountDoesNotHavePreviousOrNext()
        {
            // Arrange
            const int currentPageIndex = 0;

            // Act
            var pager = new PreviousNextPagerViewModel<int>(new[] { 0, 1, 2, 3, 4 }, currentPageIndex, 1, p => p.ToString());

            // Assert
            Assert.False(pager.HasPreviousPage);
            Assert.False(pager.HasNextPage);
        }
        public void PagerWithPageSizeEqualToItemsCountDoesNotHavePreviousOrNext()
        {
            // Arrange
            int currentPageIndex = 0;

            // Act
            var pager = new PreviousNextPagerViewModel <int>(new[] { 0, 1, 2, 3, 4 }, currentPageIndex, 5, 1, p => p.ToString());

            // Assert
            Assert.False(pager.HasPreviousPage);
            Assert.False(pager.HasNextPage);
        }
        public void PagerWithPageSizeGreaterThanItemsDoesNotHavePreviousOrNext()
        {
            // Arrange
            int currentPageIndex = 0;

            // Act
            var pager = new PreviousNextPagerViewModel<int>(new[] { 0, 1, 2 }, currentPageIndex, 1, p => p.ToString());

            // Assert
            Assert.False(pager.HasPreviousPage);
            Assert.False(pager.HasNextPage);
        }
        public void PagerWithPageSizeGreaterThanItemsDoesNotHavePreviousOrNext()
        {
            // Arrange
            const int currentPageIndex = 0;

            // Act
            var pager = new PreviousNextPagerViewModel <int>(new[] { 0, 1, 2 }, currentPageIndex, 1, p => p.ToString());

            // Assert
            Assert.False(pager.HasPreviousPage);
            Assert.False(pager.HasNextPage);
        }
        public void PagerAtFirstPageDoesNotHavePreviousPageButDoesHaveNext()
        {
            // Arrange
            const int currentPageIndex = 0;

            // Act
            var pager = new PreviousNextPagerViewModel<int>(new[] { 0, 1, 2 }, currentPageIndex, 2, p => p.ToString());

            // Assert
            Assert.False(pager.HasPreviousPage);
            Assert.True(pager.HasNextPage);
            Assert.Equal("2", pager.NextPageUrl);
        }
        public void LastPageShowsPreviousLinkButNotNextLink()
        {
            // Arrange
            const int currentPageIndex = 1;

            // Act
            var pager = new PreviousNextPagerViewModel<int>(new[] { 0, 1, 2, 3, 4, 5 }, currentPageIndex, 2, p => p.ToString());

            // Assert
            Assert.Equal("1", pager.PreviousPageUrl);
            Assert.True(pager.HasPreviousPage);
            Assert.False(pager.HasNextPage);
        }
        public void PagerAtFirstPageDoesNotHavePreviousPageButDoesHaveNext()
        {
            // Arrange
            int currentPageIndex = 0;

            // Act
            var pager = new PreviousNextPagerViewModel <int>(new[] { 0, 1, 2 }, currentPageIndex, 2, 2, p => p.ToString());

            // Assert
            Assert.False(pager.HasPreviousPage);
            Assert.True(pager.HasNextPage);
            Assert.Equal("2", pager.NextPageUrl);
        }
        public void LastPageShowsPreviousLinkButNotNextLink()
        {
            // Arrange
            int currentPageIndex = 1;

            // Act
            var pager = new PreviousNextPagerViewModel <int>(new[] { 0, 1, 2, 3, 4, 5 }, currentPageIndex, 5, 2, p => p.ToString());

            // Assert
            Assert.Equal("1", pager.PreviousPageUrl);
            Assert.True(pager.HasPreviousPage);
            Assert.False(pager.HasNextPage);
        }
예제 #12
0
        public UserProfileModel(User user, List<PackageViewModel> allPackages, int pageIndex, int pageSize, UrlHelper url)
        {
            Username = user.Username;
            EmailAddress = user.EmailAddress;
            UnconfirmedEmailAddress = user.UnconfirmedEmailAddress;
            AllPackages = allPackages;
            TotalPackages = allPackages.Count;
            PackagePage = pageIndex;
            PackagePageSize = pageSize;
            
            TotalPackageDownloadCount = AllPackages.Sum(p => p.TotalDownloadCount);

            PackagePageTotalCount = (TotalPackages + PackagePageSize - 1) / PackagePageSize;

            var pager = new PreviousNextPagerViewModel<PackageViewModel>(allPackages, pageIndex, PackagePageTotalCount,
                page => url.User(user, page));

            Pager = pager;
            PagedPackages = AllPackages.Skip(PackagePageSize * pageIndex)
                                       .Take(PackagePageSize).ToList();
        }