public async Task <IActionResult> Get(
            [FromQuery] Options.PaginationOptions paginationOptions,
            [FromServices] Services.ITvShowService tvShowService
            )
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(Ok(tvShowService.GetTvShows(paginationOptions)));
        }
Exemplo n.º 2
0
        /// <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);
        }