public IEnumerable <Movie> GetAllFilteredMovies(FilterMovieDto filterMovieDto)
        {
            var moviesQueryable = _context.Movies.AsQueryable();

            if (!string.IsNullOrWhiteSpace(filterMovieDto.Title))
            {
                moviesQueryable = moviesQueryable
                                  .Where(movie => movie.Title
                                         .Contains(filterMovieDto.Title));
            }

            if (filterMovieDto.InTheaters)
            {
                moviesQueryable = moviesQueryable
                                  .Where(movie => movie.InTheater);
            }

            if (filterMovieDto.UpcomingReleases)
            {
                moviesQueryable = moviesQueryable
                                  .Where(movie => movie.ReleaseDate > DateTime.Today);
            }

            if (filterMovieDto.GenreId != 0)
            {
                moviesQueryable = moviesQueryable
                                  .Where(movie =>
                                         movie.MovieGenres
                                         .Select(movieGenres => movieGenres.GenreId)
                                         .Contains(filterMovieDto.GenreId)
                                         );
            }

            return(moviesQueryable.ToList());
        }
        public async ValueTask <ActionResult <IEnumerable <ReadMovieDto> > > GetAllFilteredMovies([FromQuery] FilterMovieDto filterMovieDto)
        {
            var filteredMovies = _repo.GetAllFilteredMovies(filterMovieDto);

            if (!filteredMovies.Any())
            {
                return(Ok(new List <ReadMovieDto>()));
            }
            var filteredReadMovieDto = _mapper.Map <IEnumerable <ReadMovieDto> >(filteredMovies);

            return(Ok(filteredReadMovieDto));
        }
示例#3
0
 public async ValueTask <IEnumerable <Movie> > RetrieveMovieByFilterAsync(FilterMovieDto filterMovieDto) =>
 await _apiBroker.GetAllMovieAsync($"/filter?Title={filterMovieDto.Title}&GenreId={filterMovieDto.GenreId}&InTheaters={filterMovieDto.InTheaters}&UpcomingReleases={filterMovieDto.UpcomingReleases}");