public async Task <ActionResult <List <MovieDTO> > > Filter([FromQuery] MoviesFilterDTO moviesFilterDTO) { var moviesQueryable = context.Movies.AsQueryable(); if (!string.IsNullOrWhiteSpace(moviesFilterDTO.Title)) { moviesQueryable = moviesQueryable.Where(x => x.Title.Contains(moviesFilterDTO.Title)); } if (moviesFilterDTO.InTheatears) { moviesQueryable = moviesQueryable.Where(x => x.InTheatears); } if (moviesFilterDTO.UpcomingReleases) { var today = DateTime.Today; moviesQueryable = moviesQueryable.Where(x => x.ReleaseDate > today); } if (moviesFilterDTO.GenereId != 0) { moviesQueryable = moviesQueryable.Where(x => x.MoviesGeneres.Select(y => y.GenereId).Contains(moviesFilterDTO.GenereId)); } await HttpContext.InsertPaginationParamsIntoResponse(moviesQueryable, moviesFilterDTO.RecordsPerPage); var movies = await moviesQueryable.Paginate(moviesFilterDTO.Pagination).ToListAsync(); return(mapper.Map <List <MovieDTO> >(movies)); }
//[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "Admin")] public async Task <ActionResult <List <MovieDTO> > > Get([FromQuery] MoviesFilterDTO moviesFilterDTO) { var queryable = _context.Movies.AsQueryable(); if (!string.IsNullOrWhiteSpace(moviesFilterDTO.Title)) { queryable = queryable.Where(x => x.Title.Contains(moviesFilterDTO.Title)); } if (moviesFilterDTO.InTheaters) { queryable = queryable.Where(x => x.InTheaters); } if (moviesFilterDTO.GernreId != 0) { queryable = queryable.Where(x => x.MoviesGenres.Select(y => y.GenreId) .Contains(moviesFilterDTO.GernreId)); } if (moviesFilterDTO.UpcomingReleases) { var today = DateTime.Today; queryable = queryable.Where(x => x.ReleaseDate > today); } if (!string.IsNullOrWhiteSpace(moviesFilterDTO.OrderBy)) { try { queryable = queryable.OrderBy(moviesFilterDTO.OrderBy); } catch (ParseException e) { ModelState.TryAddModelError(nameof(moviesFilterDTO.OrderBy), e.Message); return(BadRequest(ModelState)); } } return(await Get <Movie, MovieDTO>( queryable, new PaginationDTO() { RecordsPerPage = moviesFilterDTO.RecordsPerPage, Page = moviesFilterDTO.Page } )); }