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; }
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); }
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(); }