public async Task <Pagination <MovieDto> > GetMoviesAsync(MovieFilterDto dto, int pageNumber, int pageSize) { Pagination <Movie> moviePagination; moviePagination = await _repository.GetIncludingCastWithPaginationAsync(null, pageNumber, pageSize); return(new Pagination <MovieDto>(moviePagination.Items.Select(x => new MovieDto(x)), moviePagination.TotalItemCount, moviePagination.PageSize, moviePagination.CurrentPage)); }
public async Task <IActionResult> AllMovies([FromQuery] MovieFilterDto filtersDto, int pageSize = 10, int pageNumber = 1) { var userLogin = User.FindFirst(ClaimTypes.Email).Value; _logger.LogInformation(string.Format($"{nameof(AllMovies)} iniciado pelo usuário {userLogin}")); var result = await _movieService.AllMovies(filtersDto, pageSize, pageNumber); _logger.LogInformation(string.Format($"{nameof(AllMovies)} finalizado.")); return(Ok(result)); }
public async Task <PaginatedList <MovieForDetailedDto> > GetAllPaginated(MovieFilterDto filtersDto, int pageSize, int pageNumber) { var query = DbContext.Movies.AsNoTracking(); if (!string.IsNullOrEmpty(filtersDto.Director)) { query = query.Where(m => m.Director.ToLower().Contains(filtersDto.Director.ToLower())); } if (!string.IsNullOrEmpty(filtersDto.Genre)) { query = query.Where(m => m.Genre.ToLower().Contains(filtersDto.Genre.ToLower())); } if (!string.IsNullOrEmpty(filtersDto.Name)) { query = query.Where(m => m.Name.ToLower().Contains(filtersDto.Name.ToLower())); } if (!string.IsNullOrEmpty(filtersDto.Actor)) { query = query.Where(m => m.MovieActors.Any(ma => ma.Actor.Name.ToLower().Contains(filtersDto.Actor.ToLower()))); } query = query.OrderByDescending(m => (decimal)m.Votes.Sum(v => v.Value) / m.Votes.Count).ThenBy(m => m.Name); var result = query.Select(m => new MovieForDetailedDto { Director = m.Director, Genre = m.Genre, Name = m.Name, Actors = m.MovieActors.Select(ma => new ActorForDetailedDto { Name = ma.Actor.Name }), AverageVote = (decimal)m.Votes.Sum(v => v.Value) / m.Votes.Count }); return(await new PaginatedList <MovieForDetailedDto>().CreateAsync(result, pageNumber, pageSize)); }
public async Task <ActionResult <IEnumerable <MovieDto> > > Filter([FromQuery] MovieFilterDto movieFilterDto) { var queryMovies = _context.Movies.AsQueryable(); if (!string.IsNullOrEmpty(movieFilterDto.Title)) { queryMovies = queryMovies.Where(m => m.Title.Contains(movieFilterDto.Title)); } if (movieFilterDto.InTheaters) { queryMovies = queryMovies.Where(m => m.InTheaters); } if (movieFilterDto.NextReleases) { queryMovies = queryMovies.Where(m => m.ReleaseDate > DateTime.Today); } if (movieFilterDto.GenreId != 0) { queryMovies = queryMovies .Where(m => m.MoviesGenres .Select(g => g.GenreId) .Contains(movieFilterDto.GenreId) ); } if (!string.IsNullOrEmpty(movieFilterDto.OrderField)) { string orderType = movieFilterDto.AscOrder ? "Ascending" : "Descending"; queryMovies = queryMovies.OrderBy($"{movieFilterDto.OrderField} {orderType}"); } await HttpContext.InsertPaginationParameter(queryMovies, movieFilterDto.RecordPerPage); var movies = await queryMovies.Paginate(movieFilterDto.Pagination).ToListAsync(); return(_mapper.Map <List <MovieDto> >(movies)); }
public async Task <Result <PaginatedList <MovieForDetailedDto> > > AllMovies(MovieFilterDto filtersDto, int pageSize, int pageNumber) { var result = await _movieRepository.GetAllPaginated(filtersDto, pageSize, pageNumber); return(Result <PaginatedList <MovieForDetailedDto> > .CreateResult(result)); }
public async Task <IActionResult> GetMovieByFilters([FromBody] MovieFilterDto dto, int pageNumber = 1, int pageSize = 10) { var movies = await _movieService.GetMoviesAsync(dto, pageNumber, pageSize); return(Ok(movies)); }