Exemple #1
0
 public CategoryDetailsDto GetMoviesByCategory(int id)
 {
     return(new CategoryDetailsDto()
     {
         Id = id,
         Name = _categoryRepository.GetById(id).Result.Name,
         Movies = _movieCategoryRepository.GetMoviesByCategory(id).ProjectTo <MovieDto>(_mapper.ConfigurationProvider).ToList()
     });
 }
        //-------------------------------------------------------------------------------

        private void Filter(MovieIndexDto moviesForIndex)
        {
            if (moviesForIndex.CategoriesIds.Length != 0)
            {
                foreach (var category in moviesForIndex.CategoriesIds)
                {
                    var moviesWithCategory = _movieCategoryRepository.GetMoviesByCategory(category).ProjectTo <MovieDto>(_mapper.ConfigurationProvider).AsEnumerable();
                    moviesForIndex.Movies = moviesForIndex.Movies.Intersect(moviesWithCategory, new MovieDtoComparer());
                }
            }

            var filter = moviesForIndex.Movies.Where(m => m.ReleaseDate.Year >= moviesForIndex.YearMin && m.ReleaseDate.Year <= moviesForIndex.YearMax);

            moviesForIndex.Movies = filter.Where(m => m.Reviews.Any())
                                    .Where(m => m.Reviews
                                           .Average(m => m.Grade) >= moviesForIndex.GradeMin && m.Reviews
                                           .Average(m => m.Grade) < moviesForIndex.GradeMax + 1);


            if (moviesForIndex.GradeMin == 0)
            {
                moviesForIndex.Movies = moviesForIndex.Movies.Union(filter.Where(m => m.Reviews.Any() == false));
            }
        }