/// <summary> /// The ok list. /// </summary> /// <param name="list"> /// The list. /// </param> /// <param name="firstPageUri"> /// The first page uri. /// </param> /// <param name="previousPageUri"> /// The previous page uri. /// </param> /// <param name="nextPageUri"> /// The next page uri. /// </param> /// <param name="lastPageUri"> /// The last page uri. /// </param> /// <param name="currentPageIndex"> /// The current page index. /// </param> /// <param name="pageCount"> /// The page count. /// </param> /// <typeparam name="T"> /// The content type /// </typeparam> /// <returns> /// The OkNegotiatedIListContentResult /// </returns> protected internal virtual OkNegotiatedIListContentResult <IList <T>, T> OkList <T>(IList <T> list, Uri firstPageUri, Uri previousPageUri, Uri nextPageUri, Uri lastPageUri, int currentPageIndex, int pageCount) { // Create the response var response = new OkNegotiatedIListContentResult <IList <T>, T>(list, this, firstPageUri, previousPageUri, nextPageUri, lastPageUri, currentPageIndex, pageCount); return(response); }
/// <summary> /// The ok list. /// </summary> /// <param name="list"> /// The list. /// </param> /// <param name="actionBaseUri"> /// The action base uri. /// </param> /// <param name="currentPageIndex"> /// The current page index. /// </param> /// <param name="pageSize"> /// The page size. /// </param> /// <typeparam name="T"> /// The content type. /// </typeparam> /// <returns> /// The OkNegotiatedIListContentResult. /// </returns> protected internal virtual OkNegotiatedIListContentResult <IList <T>, T> OkList <T>(IList <T> list, Uri actionBaseUri, int currentPageIndex, int pageSize) where T : class { // Work out the index of our last page var pagesCount = list.Count / pageSize; // Set the Uri var actionBaseUriString = actionBaseUri.ToString(); if (!actionBaseUriString.EndsWith("/")) { actionBaseUriString += "/"; } // Calculate the Uris var firstPageUri = new Uri(string.Format("{0}?page=1&per_page={1}", actionBaseUriString, pageSize)); var previousPageUri = new Uri(string.Format("{0}?page={1}&per_page={2}", actionBaseUriString, currentPageIndex > 1 ? (currentPageIndex - 1) : 1, pageSize)); var nextPageUri = new Uri(string.Format("{0}?page={1}&per_page={2}", actionBaseUriString, currentPageIndex + 1, pageSize)); var lastPageUri = new Uri(actionBaseUri, string.Format("{0}?page={1}&per_page={2}", actionBaseUriString, pagesCount > 0 ? pagesCount : 1, pageSize)); // Calculate the skip var skip = (pageSize * currentPageIndex) - pageSize; // Create the return list var returnList = list.Skip(skip).Take(pageSize).ToList(); // Create the response var response = new OkNegotiatedIListContentResult <IList <T>, T>(returnList, this, firstPageUri, previousPageUri, nextPageUri, lastPageUri, currentPageIndex, pagesCount); return(response); }