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));
        }
Beispiel #2
0
        //[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
            }
                       ));
        }