Exemplo n.º 1
0
        public List <Film> SearchFilmsWithSettings(FilmsSearchSettings fss)
        {
            var query = string.IsNullOrWhiteSpace(fss.Query) ?
                        Context.Films.AsQueryable() :
                        Context.Films.Where(f => f.Title.Contains(fss.Query));

            if (fss.IncludeActorsIDs.Count() != 0)
            {
                query = query.Where(f => f.Actors.Any(a => fss.IncludeActorsIDs.Contains(a.ID)));
            }

            if (fss.IncludeGenresIDs.Count() != 0)
            {
                query = query.Where(f => f.Genres.Any(g => fss.IncludeGenresIDs.Contains(g.ID)));
            }

            if (fss.ExcludeActorsIDs.Count() != 0)
            {
                query = query.Where(f => f.Actors.All(a => !fss.ExcludeActorsIDs.Contains(a.ID)));
            }

            if (fss.ExcludeGenresIDs.Count() != 0)
            {
                query = query.Where(f => f.Genres.All(g => !fss.ExcludeGenresIDs.Contains(g.ID)));
            }

            return(query.ToList());
        }
Exemplo n.º 2
0
        // GET: Home/Search
        public ActionResult Search(FilmsSearchInfoContainer info)
        {
            var settings = new FilmsSearchSettings()
            {
                IncludeGenresIDs = info.IncludeGenres,
                IncludeActorsIDs = info.IncludeActors,
                ExcludeActorsIDs = info.ExcludeActors,
                ExcludeGenresIDs = info.ExcludeGenres,
                Query            = info.Query
            };

            return(View(FilmsDao.SearchFilmsWithSettings(settings)
                        .Select(f => new FilmView(f))
                        .OrderBy(f => f.Title)));
        }