public List <Film> GetFilms(SortQuery sortQuery, FilmFilterQuery filmFilterQuery) { return(SortFilms(FilterFilms( _dbSet.Include(f => f.Photo) .Include(f => f.Genres).ThenInclude(fg => fg.Genre), filmFilterQuery), sortQuery).ToList()); }
private IEnumerable <Film> FilterFilms(IEnumerable <Film> films, FilmFilterQuery filterQuery) { return((from f in films where filterQuery.Title == null || f.Title.ToLower().Contains(filterQuery.Title.ToLower()) join playwriterRole in _context.PersonRoles on f.Id equals playwriterRole.FilmId into fpr from playwriterRole in fpr.DefaultIfEmpty(new PersonRole()) join playwriter in _context.Persons on playwriterRole.PersonId equals playwriter.Id into fp from playwriter in fp.DefaultIfEmpty(new Person()) where filterQuery.Playwriter == null || playwriter.FullName.ToLower().Contains(filterQuery.Playwriter.ToLower()) where filterQuery.PlaywriterId == 0 || playwriter.Id == filterQuery.PlaywriterId join filmAward in _context.FilmAwards on f.Id equals filmAward.FilmId into ffa from filmAward in ffa.DefaultIfEmpty(new FilmAward()) join award in _context.Awards on filmAward.AwardId equals award.Id into fa from award in fa.DefaultIfEmpty(new Award()) where filterQuery.Awards == null || filterQuery.Awards.Count == 0 || filterQuery.Awards.Contains(award.Id) select f).Distinct()); }
public IActionResult ShowFilmViews(string sortOrder, string sortValue, string name, List <long> awards, string playwriter, long playwriterId = 0) { var sortQuery = new SortQuery { Order = sortOrder ?? FilmConstants.SortAsc, Value = sortValue ?? FilmConstants.SortTitle }; var filterQuery = new FilmFilterQuery { Title = name, PlaywriterId = playwriterId, Playwriter = playwriter, Awards = awards }; return(View(_filmService.GetFilms(sortQuery, filterQuery))); }
public SortedSearchResponse <FilmModel, FilmFilterQuery> GetFilms(SortQuery sortQuery, FilmFilterQuery filmFilterQuery) { return(new SortedSearchResponse <FilmModel, FilmFilterQuery> { Data = _unitOfWork.FilmRepository .GetFilms(sortQuery, filmFilterQuery) .Select(GetFilmView) .ToList(), SortQuery = sortQuery, Filter = filmFilterQuery }); }