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); }
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)); }
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)); }
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); }
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)); }
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)); }
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)); }