public IActionResult GetMovies([FromQuery] MoviesResourceParameters moviesResourceParameters) { if (string.IsNullOrEmpty(moviesResourceParameters.Title) && string.IsNullOrEmpty(moviesResourceParameters.YearOfRelease)) { return(BadRequest("No criteria given")); } var moviesFromRepo = _movieRepository.GetMovies(moviesResourceParameters); if (moviesFromRepo.Count == 0) { return(NotFound()); } var previousPageLink = moviesFromRepo.HasPrevious ? CreateMoviesResouceUri(moviesResourceParameters, ResourceUriType.PreviousPage) : null; var nextPageLink = moviesFromRepo.HasNext ? CreateMoviesResouceUri(moviesResourceParameters, ResourceUriType.NextPage) : null; var paginationMetaData = new { totalCount = moviesFromRepo.TotalCount, pageSize = moviesFromRepo.PageSizse, currentPage = moviesFromRepo.CurrentPage, totalPages = moviesFromRepo.TotalPages, previousPageLink = previousPageLink, nextPageLink = nextPageLink }; Response.Headers.Add("x-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetaData)); var movies = Mapper.Map <IEnumerable <MovieDTO> >(moviesFromRepo); return(Ok(movies)); }
private string CreateMoviesResouceUri(MoviesResourceParameters moviesResourceParameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(_urlHelper.Link("GetMovies", new { title = moviesResourceParameters.Title, yearOfRelease = moviesResourceParameters.YearOfRelease, pageNumber = moviesResourceParameters.PageNumber - 1, pageSize = moviesResourceParameters.PageSize })); case ResourceUriType.NextPage: return(_urlHelper.Link("GetMovies", new { title = moviesResourceParameters.Title, yearOfRelease = moviesResourceParameters.YearOfRelease, pageNumber = moviesResourceParameters.PageNumber + 1, pageSize = moviesResourceParameters.PageSize })); default: return(_urlHelper.Link("GetMovies", new { title = moviesResourceParameters.Title, yearOfRelease = moviesResourceParameters.YearOfRelease, pageNumber = moviesResourceParameters.PageNumber, pageSize = moviesResourceParameters.PageSize })); } }
public IActionResult GetMovies(MoviesResourceParameters moviesResourceParameters) { var moviesFromRepo = _iIMDBRepository.GetMovies(moviesResourceParameters); var previousPageLink = moviesFromRepo.HasPrevious ? CreateMoviesResourceUri(moviesResourceParameters, ResourceUriType.PreviousPage) : null; var nextPageLink = moviesFromRepo.HasNext ? CreateMoviesResourceUri(moviesResourceParameters, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = moviesFromRepo.TotalCount, pageSize = moviesFromRepo.PageSize, currentPage = moviesFromRepo.CurrentPage, totalPages = moviesFromRepo.TotalPages, previousPageLink = previousPageLink, nextPageLink = nextPageLink }; Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata)); var movies = _mapper.Map <IEnumerable <MovieDto> >(moviesFromRepo); return(Ok(movies)); }
private string CreateMoviesResourceUri(MoviesResourceParameters moviesResourceParameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(_linkGenerator.GetPathByAction(HttpContext, "GetMovies", values: new { searchQuery = moviesResourceParameters.SearchQuery, genre = moviesResourceParameters.Genre, pageNumber = moviesResourceParameters.PageNumber - 1, pageSize = moviesResourceParameters.PageSize })); case ResourceUriType.NextPage: return(_linkGenerator.GetPathByAction(HttpContext, "GetMovies", values: new { searchQuery = moviesResourceParameters.SearchQuery, genre = moviesResourceParameters.Genre, pageNumber = moviesResourceParameters.PageNumber + 1, pageSize = moviesResourceParameters.PageSize })); default: return(_linkGenerator.GetPathByAction(HttpContext, "GetMovies", values: new { searchQuery = moviesResourceParameters.SearchQuery, genre = moviesResourceParameters.Genre, pageNumber = moviesResourceParameters.PageNumber, pageSize = moviesResourceParameters.PageSize })); } }
public async Task <IActionResult> Get(MoviesResourceParameters moviesResourceParameters) { //REF 10 Paginación var moviesRepo = await this.cinemaService.GetMovies(moviesResourceParameters); var previousPageLink = moviesRepo.HasPrevious ? CreateMoviesResourceUri(moviesResourceParameters, ResourceUriType.PreviousPage) : null; var nextPageLink = moviesRepo.HasNext ? CreateMoviesResourceUri(moviesResourceParameters, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = moviesRepo.TotalCount, pageSize = moviesRepo.PageSize, currentPage = moviesRepo.CurrentPage, totalPages = moviesRepo.TotalPages, previousPageLink = previousPageLink, nextPageLink = nextPageLink }; Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata)); var moviesDto = Mapper.Map <IEnumerable <MovieDto> >(moviesRepo); return(Ok(moviesDto)); }
private string CreateMoviesResourceUri(MoviesResourceParameters moviesResourceParameters, ResourceUriType type) { //REF 10 Paginación if (type == ResourceUriType.PreviousPage) { return(this.urlHelper.Link("GetMovies", new { pageNumber = moviesResourceParameters.PageNumber - 1, pageSize = moviesResourceParameters.PageSize })); } if (type == ResourceUriType.NextPage) { return(this.urlHelper.Link("GetMovies", new { pageNumber = moviesResourceParameters.PageNumber + 1, pageSize = moviesResourceParameters.PageSize })); } return(this.urlHelper.Link("GetMovies", new { pageNumber = moviesResourceParameters.PageNumber, pageSize = moviesResourceParameters.PageSize })); }
public async Task <IActionResult> GetMovies([FromQuery] MoviesResourceParameters moviesResourceParameters) { var movies = await _movieData.GetMovies(moviesResourceParameters); var returnModel = Mapper.Map <List <MovieReturnModel> >(movies); var pagedReturnModel = await PagedList <MovieReturnModel> .Create(returnModel, moviesResourceParameters.PageNumber, moviesResourceParameters.PageSize); var previousPageLink = pagedReturnModel.HasPrevious ? CreateMoviesResourceUri(moviesResourceParameters, ResourceUriType.PreviousPage) : null; var nextPageLink = pagedReturnModel.HasNext ? CreateMoviesResourceUri(moviesResourceParameters, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = pagedReturnModel.TotalCount, pageSize = pagedReturnModel.PageSize, currentPage = pagedReturnModel.CurrentPage, totalPages = pagedReturnModel.TotalPages, previousPageLink = previousPageLink, nextPageLink = nextPageLink }; Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata)); return(Ok(pagedReturnModel)); }
/// <summary> /// Get all movies /// </summary> public async Task <PagedList <Movie> > GetMovies(MoviesResourceParameters moviesResourceParameters) { var result = this.context.Movies .OrderBy(a => a.DirectorName) .ThenBy(a => a.DirectorLastName) .AsNoTracking() .AsQueryable(); return(await PagedList <Movie> .Create(result, moviesResourceParameters.PageNumber, moviesResourceParameters.PageSize)); }
public async Task <List <Movie> > GetMovies(MoviesResourceParameters moviesResourceParameters) { var movies = _dbContext.Movies.AsQueryable(); if (!string.IsNullOrEmpty(moviesResourceParameters.SearchWord)) { movies = movies.Where(m => m.Title.Contains(moviesResourceParameters.SearchWord) || m.Author.Contains(moviesResourceParameters.SearchWord)); } return(await movies.ToListAsync()); }
public PagedList <Movie> GetMovies(MoviesResourceParameters moviesResourceParameters) { var collectionBeforePaging = _context.Movie .OrderBy(m => m.Title) .ThenBy(m => m.YearOfRelease).AsQueryable(); if (!string.IsNullOrEmpty(moviesResourceParameters.Title)) { var titleForWhereClause = moviesResourceParameters.Title.Trim().ToLowerInvariant(); collectionBeforePaging = collectionBeforePaging.Where(a => a.Title.ToLowerInvariant().Contains(titleForWhereClause)); } if (!string.IsNullOrEmpty(moviesResourceParameters.YearOfRelease)) { var yearOfReleaseForWhereClause = moviesResourceParameters.YearOfRelease.Trim().ToLowerInvariant(); collectionBeforePaging = collectionBeforePaging.Where(a => a.YearOfRelease.ToLowerInvariant().Equals(yearOfReleaseForWhereClause)); } return(PagedList <Movie> .Create(collectionBeforePaging, moviesResourceParameters.PageNumber, moviesResourceParameters.PageSize)); }
public PagedList <Movie> GetMovies(MoviesResourceParameters moviesResourceParameters) { var collectionBeforePaging = _context.Movies .Include(x => x.MovieGenres) .ThenInclude(y => y.Genre) //.Take(moviesResourceParameters.PageSize) .AsQueryable(); if (!string.IsNullOrEmpty(moviesResourceParameters.Genre)) { // trim & ignore casing /*var genreForWhereClause = moviesResourceParameters.Genre * .Trim().ToLowerInvariant();*/ collectionBeforePaging = collectionBeforePaging .Where(a => a.MovieGenres.Any(x => x.Genre.Name == moviesResourceParameters.Genre)); } if (!string.IsNullOrEmpty(moviesResourceParameters.SearchQuery)) { // trim & ignore casing /*var searchQueryForWhereClause = moviesResourceParameters.SearchQuery * .Trim().ToLowerInvariant();*/ collectionBeforePaging = collectionBeforePaging .Where(a => a.PrimaryTitle.Contains(moviesResourceParameters.SearchQuery) || a.OriginalTitle.Contains(moviesResourceParameters.SearchQuery) || a.MovieGenres.Any(x => x.Genre.Name.Contains(moviesResourceParameters.SearchQuery))); } return(PagedList <Movie> .Create(collectionBeforePaging, moviesResourceParameters.PageNumber, moviesResourceParameters.PageSize)); //check out lazy loading }
private string CreateMoviesResourceUri(MoviesResourceParameters moviesResourceParameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(_urlHelper.Link("GetMovies", new { searchWord = moviesResourceParameters.SearchWord, sortBy = moviesResourceParameters.SortBy, movieGenre = moviesResourceParameters.MovieGenre, pageNumber = moviesResourceParameters.PageNumber - 1, pageSize = moviesResourceParameters.PageSize })); case ResourceUriType.NextPage: return(_urlHelper.Link("GetMovies", new { searchWord = moviesResourceParameters.SearchWord, sortBy = moviesResourceParameters.SortBy, movieGenre = moviesResourceParameters.MovieGenre, pageNumber = moviesResourceParameters.PageNumber + 1, pageSize = moviesResourceParameters.PageSize })); default: return(_urlHelper.Link("GetMovies", new { searchWord = moviesResourceParameters.SearchWord, sortBy = moviesResourceParameters.SortBy, movieGenre = moviesResourceParameters.MovieGenre, pageNumber = moviesResourceParameters.PageNumber, pageSize = moviesResourceParameters.PageSize })); } }