Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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
                }));
            }
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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
                }));
            }
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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
            }));
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        /// <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));
        }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
        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));
        }
Esempio n. 11
0
        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
        }
Esempio n. 12
0
        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
                }));
            }
        }