public async Task <IActionResult> Index(int page = 1, int pageSize = DEFAULT_PAGE_SIZE) { ClientPagingResult clientsPage = await this._clientService.GetPageAsync(page, pageSize); ClientListViewModel clientListViewModel = new ClientListViewModel(clientsPage, page, pageSize); int clientsFoundForPage = clientListViewModel.Clients.ToList().Count; // retrieve the stored item count (if it exists) int itemCount = 0; string itemCountAsString = this.Request.Cookies[CLIENT_COUNT_COOKIE_KEY]; // create the ClientListViewModel with appropriate total item account if (itemCountAsString != null && int.TryParse(itemCountAsString, out itemCount) && itemCount > clientListViewModel.TotalItemCount && clientsFoundForPage > 0 && clientsPage.HasMore) { // use the saved total item counts clientListViewModel = new ClientListViewModel(clientsPage, page, pageSize, itemCount); } if (itemCount != clientListViewModel.TotalItemCount && clientsFoundForPage > 0) { this.Response.Cookies.Append(CLIENT_COUNT_COOKIE_KEY, clientListViewModel.TotalItemCount.ToString()); } return(View("Index", clientListViewModel)); }
public ClientListViewModel(ClientPagingResult clientPagingResult, int pageNumber, int pageSize, int?totalItemCount) { Clients = clientPagingResult.Collection; PageNumber = pageNumber; PageSize = pageSize; if (totalItemCount.HasValue) { TotalItemCount = totalItemCount.Value; } else if (clientPagingResult.HasMore) { TotalItemCount = pageNumber * pageSize + 1; } else { TotalItemCount = pageNumber * pageSize; } }
public ClientListViewModel(ClientPagingResult clientPagingResult, int pageNumber, int pageSize) : this(clientPagingResult, pageNumber, pageSize, null) { }