Esempio n. 1
0
        public async Task ShouldReturn_ThreeMoviesExists_ReturnPagedListMovieViewModel()
        {
            var fixture = new Fixture();
            var movies  = fixture.Create <List <Movie> >();

            var movieParameters = new MovieParameters();
            var pagedListMovie  = new PagedList <Movie>(movies, movies.Count, 0, 0);

            var movieRepository = new Mock <IMovieRepository>();

            var getAllMoviesQuery = new GetAllMovieQuery(movieParameters);

            var getAllMovieQueryHandler = new GetAllMovieQueryHandler(movieRepository.Object);

            movieRepository.Setup(pr => pr.GetAllAsync(movieParameters))
            .Returns(pagedListMovie);

            var moviesPagedList = await getAllMovieQueryHandler.Handle(getAllMoviesQuery, new System.Threading.CancellationToken());;

            Assert.NotNull(moviesPagedList);
            Assert.NotEmpty(moviesPagedList);
            Assert.Equal(3, moviesPagedList.TotalRecords);
            Assert.Equal(1, moviesPagedList.TotalPages);
            Assert.Equal(50, moviesPagedList.PageSize);
            Assert.IsType <PagedList <MovieViewModel> >(moviesPagedList);
            movieRepository.Verify(mr => mr.GetAllAsync(movieParameters), Times.Once);
        }
        public void ShoulbeReturnAllMoviesWithoutFilter()
        {
            MovieParameters movieParameters = new MovieParameters();
            var             movies          = movieRepository.GetAllAsync(movieParameters);

            var espectedValue = 9;

            Assert.NotNull(movies);
            Assert.Equal(espectedValue, movies.Count());
        }
        public async Task <IActionResult> Get(MovieParameters parameters)
        {
            var getAllMovieQuery = new GetAllMovieQuery(parameters);

            var movies = await _mediator.Send(getAllMovieQuery);

            var metaData = new { movies.CurrentPage, movies.PageSize, movies.TotalPages, movies.TotalRecords, movies.HasNext, movies.HasPrevious };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metaData));
            return(Ok(new { movies, metaData }));
        }
        public void ShoulbeReturnListMovieOrderByGenreFilter()
        {
            MovieParameters movieParameters = new MovieParameters()
            {
                GenreFilter = "Terror"
            };
            var movies        = movieRepository.GetAllAsync(movieParameters);
            var espectedValue = 5;

            Assert.NotNull(movies);
            Assert.Equal(espectedValue, movies.Count());
        }
        public void ShoulbeReturnListMovieOrderByProductionCompanyFilter()
        {
            MovieParameters movieParameters = new MovieParameters()
            {
                ProductionCompanyFilter = "Netflix"
            };
            var movies = movieRepository.GetAllAsync(movieParameters);

            var espectedValue = 1;

            Assert.NotNull(movies);
            Assert.Equal(espectedValue, movies.Count());
        }
Esempio n. 6
0
        public async Task <MovieResults> GetMoviesAsync(MovieParameters parameters)
        {
            string url = GetMovieApiUrl(parameters);

            var data = await _tmdbClient.GetData <MovieResults>(url);

            string placeholderUrl = ImageHelper.GetPlaceholderImageUrl(new ImageSettings(_config[PLACEHOLDER_IMAGE_URL], 500, 750));

            foreach (var movie in data.Results)
            {
                movie.Poster_Path = !string.IsNullOrEmpty(movie.Poster_Path) ? ImageHelper.GetImageUrl(new ImageSettings(_config[IMAGE_URL], PosterSizeType.W500, movie.Poster_Path)) : placeholderUrl;
            }

            return(data);
        }
        public async Task <IActionResult> GetAllMovies([FromQuery] MovieParameters movieParameters)
        {
            var movies = await _movieService.GetAllMovies(movieParameters);

            if (!movies.Any())
            {
                return(NotFound("We did not find any movies"));
            }
            return(Ok(movies));

            // System.Text.Json in .NET Core 3
            // previous versions of .Net 1,2 and previous older .NET Framework Newtonsoft, 3rdy party library
            // Serialization , convert your C# objects in t JSON objetcs
            // De-Serialization, convert json objects to C#
        }
Esempio n. 8
0
 public async Task <List <Movie> > FindAllMovies(MovieParameters parameters)
 {
     return(await _dbContext.Movies
            .Include(m => m.Genres.OrderBy(g => g.Genre.Name)).ThenInclude(p => p.Genre)
            .Include(m => m.Actors.OrderBy(a => a.People.Name)).ThenInclude(p => p.People)
            .Include(m => m.Directors.OrderBy(d => d.People.Name)).ThenInclude(p => p.People)
            .Include(m => m.ProductionComapanies.OrderBy(p => p.ProductionCompany.Name)).ThenInclude(p => p.ProductionCompany)
            .Where(m => string.IsNullOrWhiteSpace(parameters.GenreFilter) ? true : m.Genres.Any(g => g.Genre.Name.Contains(parameters.GenreFilter)))
            .Where(m => string.IsNullOrWhiteSpace(parameters.ActorFilter) ? true : m.Actors.Any(g => g.People.Name.Contains(parameters.ActorFilter)))
            .Where(m => string.IsNullOrWhiteSpace(parameters.DirectorFilter) ? true : m.Directors.Any(g => g.People.Name.Contains(parameters.DirectorFilter)))
            .Where(m => string.IsNullOrWhiteSpace(parameters.ProductionCompanyFilter) ? true : m.ProductionComapanies.Any(g => g.ProductionCompany.Name.Contains(parameters.ProductionCompanyFilter)))
            .OrderBy(m => m.VoteAvarage)
            .Skip((parameters.PageNumber - 1) * parameters.PageSize)
            .Take(parameters.PageSize)
            .ToListAsync());
 }
Esempio n. 9
0
        public async Task <List <MovieDetailsResponseModel> > GetAllMovies(MovieParameters movieParameters)
        {
            var movieDetailsResponse = new List <MovieDetailsResponseModel>();
            var movies = await _movieRepository.GetMovies(movieParameters);

            foreach (var movie in movies)
            {
                var movieDetails = new MovieDetailsResponseModel
                {
                    Id               = movie.Id,
                    Title            = movie.Title,
                    Overview         = movie.Overview,
                    Tagline          = movie.Tagline,
                    Budget           = movie.Budget,
                    Revenue          = movie.Revenue,
                    ImdbUrl          = movie.ImdbUrl,
                    TmdbUrl          = movie.TmdbUrl,
                    PosterUrl        = movie.PosterUrl,
                    BackdropUrl      = movie.BackdropUrl,
                    OriginalLanguage = movie.OriginalLanguage,
                    ReleaseDate      = movie.ReleaseDate,
                    RunTime          = movie.RunTime,
                    Price            = movie.Price,
                    Genres           = new List <GenreModel>(),
                    Casts            = new List <CastResponseModel>()
                };
                foreach (var genre in movie.Genres)
                {
                    movieDetails.Genres.Add(new GenreModel {
                        Id = genre.Id, Name = genre.Name
                    });
                }
                foreach (var cast in movie.MovieCasts)
                {
                    movieDetails.Casts.Add(new CastResponseModel
                    {
                        Id          = cast.CastId,
                        Character   = cast.Character,
                        Name        = cast.Cast.Name,
                        ProfilePath = cast.Cast.ProfilePath
                    });
                }
                movieDetailsResponse.Add(movieDetails);
            }

            return(movieDetailsResponse);
        }
Esempio n. 10
0
        private async Task <MovieResults> FetchMovieResults()
        {
            var parameters = new MovieParameters
            {
                Page            = Page,
                SortOrder       = SortOrder,
                ReleaseYear     = ReleaseYear,
                Rating          = Rating,
                Runtime         = Runtime,
                FromReleaseDate = FromReleasedate,
                ToReleaseDate   = ToReleaseDate
            };

            if (SelectedGenreIds.Count() is not 0)
            {
                parameters.GenreIds = SelectedGenreIds;
            }

            if (SelectedActors.Count() is not 0)
            {
                foreach (var actor in SelectedActors)
                {
                    parameters.ActorIds.Add(actor.Id);
                }
            }

            if (SelectedDirectors.Count() is not 0)
            {
                foreach (var director in SelectedDirectors)
                {
                    parameters.DirectorIds.Add(director.Id);
                }
            }

            if (SelectedKeywords.Count() is not 0)
            {
                foreach (var keyword in SelectedKeywords)
                {
                    parameters.KeywordIds.Add(keyword.Id);
                }
            }

            var results = await DiscoverService.GetMoviesAsync(parameters);

            return(results);
        }
 public GetAllMovieQuery(MovieParameters parameters)
 {
     movieParameters = parameters;
 }
Esempio n. 12
0
        private string GetMovieApiUrl(MovieParameters parameters)
        {
            var builder = new StringBuilder($"discover/movie?api_key={_config[API_KEY]}&page={parameters.Page}");

            if (!string.IsNullOrEmpty(parameters.SortOrder))
            {
                builder.AppendLine($"&sort_by={parameters.SortOrder}");
            }

            if (parameters.ReleaseYear is not 0)
            {
                builder.AppendLine($"&primary_release_year={parameters.ReleaseYear}");
            }

            if (!string.IsNullOrEmpty(parameters.FromReleaseDate))
            {
                builder.AppendLine($"&primary_release_date.gte={parameters.FromReleaseDate}");
            }

            if (!string.IsNullOrEmpty(parameters.ToReleaseDate))
            {
                builder.AppendLine($"&primary_release_date.lte={parameters.ToReleaseDate}");
            }

            if (parameters.GenreIds.Count() is not 0)
            {
                builder.AppendLine("&with_genres=");

                foreach (var genreId in parameters.GenreIds)
                {
                    if (genreId == parameters.GenreIds.Last())
                    {
                        builder.AppendLine($"{genreId}");
                    }
                    else
                    {
                        builder.AppendLine($"{genreId},");
                    }
                }
            }

            if (parameters.ActorIds.Count() is not 0)
            {
                builder.AppendLine("&with_cast=");

                foreach (var actorId in parameters.ActorIds)
                {
                    if (actorId == parameters.ActorIds.Last())
                    {
                        builder.AppendLine($"{actorId}");
                    }
                    else
                    {
                        builder.AppendLine($"{actorId},");
                    }
                }
            }

            if (parameters.DirectorIds.Count() is not 0)
            {
                builder.AppendLine("&with_crew=");

                foreach (var directorId in parameters.DirectorIds)
                {
                    if (directorId == parameters.DirectorIds.Last())
                    {
                        builder.AppendLine($"{directorId}");
                    }
                    else
                    {
                        builder.AppendLine($"{directorId},");
                    }
                }
            }

            if (parameters.KeywordIds.Count() is not 0)
            {
                builder.AppendLine("&with_keywords=");

                foreach (var keywordId in parameters.KeywordIds)
                {
                    if (keywordId == parameters.KeywordIds.Last())
                    {
                        builder.AppendLine($"{keywordId}");
                    }
                    else
                    {
                        builder.AppendLine($"{keywordId},");
                    }
                }
            }

            if (parameters.Rating > 0)
            {
                builder.AppendLine($"&vote_average.gte={parameters.Rating}");
            }

            if (parameters.Runtime > 0)
            {
                builder.AppendLine($"&with_runtime.gte={parameters.Runtime}");
            }

            builder.AppendLine("&include_adult=false");

            return(builder.ToString());
        }
Esempio n. 13
0
 public PagedList <Movie> GetAllAsync(MovieParameters parameters)
 {
     return(PagedList <Movie> .ToPagedList(FindAllMovies(parameters).Result, parameters.PageNumber, parameters.PageSize));
 }
Esempio n. 14
0
        public async Task <IEnumerable <Movie> > GetMovies(MovieParameters movieParameters)
        {
            var movies = await _dbContext.Movies.Include(m => m.MovieCasts).ThenInclude(m => m.Cast).Include(m => m.Genres).OrderBy(on => on.Id).Skip((movieParameters.PageNumber - 1) * movieParameters.PageSize).Take(movieParameters.PageSize).ToListAsync();

            return(movies);
        }