Example #1
0
        public async Task <Paginated <MovieDto> > SearchAsync(
            SearchMoviesRequest request,
            CancellationToken cancellationToken = default)
        {
            var query  = _mapper.Map <PaginatedMovieQuery>(request);
            var result = await _context.SearchMoviesAsync(query, cancellationToken);

            return(_mapper.Map <Paginated <MovieDto> >(result));
        }
Example #2
0
        public async Task <List <Movie> > SearchMoviesAsync(SearchMoviesRequest searchMoviesRequest)
        {
            var allMovies = await _moviesRepository.GetAllMoviesAsync();

            return(allMovies.Where(x => !string.IsNullOrEmpty(searchMoviesRequest.SearchString) && x.Title.Contains(searchMoviesRequest.SearchString) &&
                                   (!searchMoviesRequest.YearOfRelease.HasValue || x.YearOfRelease == searchMoviesRequest.YearOfRelease) &&
                                   (searchMoviesRequest.Genres == null || searchMoviesRequest.Genres.Count == 0 || x.Genres.Split(",").Intersect(searchMoviesRequest.Genres).ToList().Count > 0)
                                   ).Select(m => m.ToMovieContractObject()).ToList());
        }
Example #3
0
        public async Task <IActionResult> SearchMoviesAsync([FromBody] SearchMoviesRequest searchMoviesRequest)
        {
            if (!(searchMoviesRequest != null &&
                  (!string.IsNullOrEmpty(searchMoviesRequest.SearchString) ||
                   searchMoviesRequest.YearOfRelease.HasValue ||
                   searchMoviesRequest.Genres?.Count > 0)))
            {
                return(BadRequest());
            }

            List <Movie> movies = await _moviesDomain.SearchMoviesAsync(searchMoviesRequest);

            if (!movies.HasAny())
            {
                return(NotFound());
            }

            return(Ok(movies));
        }
Example #4
0
 public virtual Task <SearchMoviesResponse> GetAsync(SearchMoviesRequest request) =>
 Client.SendAsync <SearchMoviesResponse>(request);
Example #5
0
 public async Task <Paginated <MovieDto> > SearchMovies(
     [FromQuery] SearchMoviesRequest request,
     CancellationToken cancellationToken = default) =>
 await _service.SearchAsync(request, cancellationToken);