Ejemplo n.º 1
0
 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());
 }
Ejemplo n.º 2
0
 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());
 }
Ejemplo n.º 3
0
        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
     });
 }