Ejemplo n.º 1
0
        public async Task <IQueryable <Movie> > Filter(FilterMovieDTO filterMovieDTO)
        {
            var moviesQueryable = applicationDb.Movies.AsQueryable();

            if (!string.IsNullOrEmpty(filterMovieDTO.Name))
            {
                moviesQueryable = moviesQueryable.Where(x => x.Name.Contains(filterMovieDTO.Name));
            }

            if (filterMovieDTO.InTheaters)
            {
                moviesQueryable = moviesQueryable.Where(x => x.InTheaters);
            }

            if (filterMovieDTO.UpcomingReleases)
            {
                var today = DateTime.Today;
                moviesQueryable = moviesQueryable.Where(x => x.ReleaseDate > today);
            }
            //
            if (filterMovieDTO.GenreId != 0)
            {
                moviesQueryable = moviesQueryable
                                  .Where(x => x.Genres.Select(y => y.Id)
                                         .Contains(filterMovieDTO.GenreId));
            }


            return(moviesQueryable);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Filter(FilterMovieDTO filterMovieDTO)
        {
            var moviesQueryable = context.Movies.AsQueryable();

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

            if (filterMovieDTO.InTheaters)
            {
                moviesQueryable = moviesQueryable.Where(x => x.InTheaters);
            }

            if (filterMovieDTO.UpcomingReleases)
            {
                moviesQueryable = moviesQueryable.Where(x => x.ReleaseDate > DateTime.Today);
            }

            if (filterMovieDTO.GenreId != 0)
            {
                moviesQueryable = moviesQueryable
                                  .Where(x => x.MoviesGenres.Select(y => y.GenreId).Contains(filterMovieDTO.GenreId));
            }

            await HttpContext.InsertPaginationParametersInResponse <Movie>(moviesQueryable,
                                                                           filterMovieDTO.RecordsPerPage);

            var movies = await moviesQueryable.Paginate(filterMovieDTO.Pagination).ToListAsync();

            return(Ok(movies));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult <List <MovieDTO> > > Filter([FromQuery] FilterMovieDTO filterMovieDTO)
        {
            var moviesQueryable = await repository.Filter(filterMovieDTO);

            await HttpContext.InsertParametersPaginationInHeader(moviesQueryable);

            return(await repository.MoviesToDTO(moviesQueryable, filterMovieDTO));
        }
Ejemplo n.º 4
0
        public async Task <PaginatedResponse <List <Movie> > > GetMoviesFilter(FilterMovieDTO filterMovieDTO)
        {
            var responseHTTP = await httpService.Post <FilterMovieDTO, List <Movie> >($"{url}/filter", filterMovieDTO);

            var totalAmountPages  = int.Parse(responseHTTP.HttpResponseMessage.Headers.GetValues("totalAmountPages").FirstOrDefault());
            var paginatedResponse = new PaginatedResponse <List <Movie> >()
            {
                Response         = responseHTTP.Response,
                TotalAmountPages = totalAmountPages
            };

            return(paginatedResponse);
        }
Ejemplo n.º 5
0
        public async Task <ActionResult <List <MovieDTO> > > Filter([FromQuery] FilterMovieDTO filterMovieDTO)
        {
            var moviesQueryable = context.Movie.AsQueryable();

            if (!string.IsNullOrWhiteSpace(filterMovieDTO.Title))
            {
                moviesQueryable = moviesQueryable.Where(x => x.Title.Contains(filterMovieDTO.Title));
                //busca el titulo
            }

            if (filterMovieDTO.InTheaters) //si le envia el InTheaters= True
            {
                moviesQueryable = moviesQueryable.Where(x => x.InTheaters);
            }

            if (filterMovieDTO.UpcomingReleases) //si le envia el UpcomingReleases= True
            {
                var today = DateTime.Today;
                moviesQueryable = moviesQueryable.Where(x => x.ReleaseDate > today);
            }

            if (filterMovieDTO.GenreId != 0)//si le envia el GenreId=numero de genre
            {
                moviesQueryable = moviesQueryable.Where(x => x.MoviesGenres.Select(y => y.GenreId).Contains(filterMovieDTO.GenreId));
            }

            if (!string.IsNullOrWhiteSpace(filterMovieDTO.OrderingField))
            {
                //toca hacer validacion
                try
                {
                    //se require instalar paquete System.Linq.Dynamic.Core y poner using System.Linq.Dynamic.Core
                    moviesQueryable = moviesQueryable.OrderBy($"{filterMovieDTO.OrderingField} {(filterMovieDTO.AscendingOrder ? "ascending" : "descending")}");
                }
                catch (Exception)
                {
                    //logger.LogWarning($"Could not order by field {filterMovieDTO.OrderingField}");
                    return(BadRequest($" el {filterMovieDTO.OrderingField} Campo no existe "));
                }
            }

            await HttpContext.InsertPaginationParametersInResponse(moviesQueryable, filterMovieDTO.RecordsPerPage);

            var movies = await moviesQueryable.Paginate(filterMovieDTO.Pagination).ToListAsync();

            return(mapper.Map <List <MovieDTO> >(movies));
        }
Ejemplo n.º 6
0
        public async Task <ActionResult <List <MovieDTO> > > Filter([FromQuery] FilterMovieDTO filterMovieDTO)
        {
            var movieQueryable = context.Movies.AsQueryable();

            if (!string.IsNullOrWhiteSpace(filterMovieDTO.Title))
            {
                movieQueryable = movieQueryable.Where(c => c.Title.Contains(filterMovieDTO.Title));
            }

            if (filterMovieDTO.InTheaters)
            {
                movieQueryable = movieQueryable.Where(c => c.InTheathers);
            }

            if (filterMovieDTO.UpcomingReleases)
            {
                var today = DateTime.Today;
                movieQueryable = movieQueryable.Where(c => c.ReleaseDate > today);
            }

            if (filterMovieDTO.GenreId != 0)
            {
                movieQueryable = movieQueryable
                                 .Where(c => c.MoviesGeneres.Select(d => d.GenreId).Contains(filterMovieDTO.GenreId));
            }

            if (!string.IsNullOrWhiteSpace(filterMovieDTO.OrderingField))
            {
                try
                {
                    movieQueryable = movieQueryable
                                     .OrderBy($"{filterMovieDTO.OrderingField} {(filterMovieDTO.Ascending ? "ascending" : "descending")}");
                }
                catch
                {
                    //Log Error
                }
            }

            await HttpContext.InsertPaginationParametersInResponse(movieQueryable, filterMovieDTO.RecordPerPage);

            var movies = await movieQueryable.Paginate(filterMovieDTO.Pagination).ToListAsync();

            return(mapper.Map <List <MovieDTO> >(movies));
        }
Ejemplo n.º 7
0
        public async Task <List <MovieDTO> > MoviesToDTO(IQueryable <Movie> moviesQueryable, FilterMovieDTO filterMovieDTO)
        {
            var movies = await moviesQueryable.OrderBy(x => x.Name).Paginate(filterMovieDTO.PaginationDTO)
                         .ToListAsync();

            return(_mapper.Map <List <MovieDTO> >(movies));
        }