public async Task <IActionResult> Get( [FromQuery] Options.PaginationOptions paginationOptions, [FromServices] Services.ITvShowService tvShowService ) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } return(Ok(tvShowService.GetTvShows(paginationOptions))); }
/// <summary> /// Get the tvshows in a paginated list. /// </summary> /// <param name="pagination">Options to select the pagination.</param> /// <returns>Paginated list of tv shows.</returns> public PaginatedCollection <TvShow> GetTvShows(Options.PaginationOptions pagination) { var tvShows = new PaginatedCollection <TvShow>() { Items = _repository.TvShows .OrderBy(t => t.Name) .Skip((pagination.PageNumber - 1) * pagination.PageSize) .Take(pagination.PageSize) .Select(t => t.ToModel()) .ToList(), }; tvShows.Items.ForEach(t => t.Cast = t.Cast.OrderByDescending(a => a.BirthDate)); tvShows.PagingInfo = new PaginatedCollectionInfo() { PageNumber = pagination.PageNumber, PageSize = pagination.PageSize, ItemsOnpage = tvShows.Items.Count, }; return(tvShows); }