コード例 #1
0
        public async Task <IActionResult> ResultGrid(string result, string genre, double rating, int pageNumber = 1)
        {
            this.ViewData["Result"] = result ?? string.Empty;
            this.ViewData["Genre"]  = genre ?? string.Empty;
            this.ViewData["Rating"] = rating;

            int pageSize       = 12;
            int excludeRecords = (pageSize * pageNumber) - pageSize;

            if (result == null)
            {
                result = string.Empty;
            }

            string normalizedResult = result.ToLower();

            ListingMoviesViewModel viewModel = new ListingMoviesViewModel
            {
                Movies        = (await this.moviesService.GetAll <SingleMovieViewModel>()).Where(x => x.Title.ToLower().Contains(result) || x.Description.ToLower().Contains(result)).ToList(),
                CurrentPage   = pageNumber,
                MoviesPerPage = pageSize,
            };

            if (genre != null)
            {
                viewModel.Movies = viewModel.Movies.Where(x => x.Genres.Any(x => x.GenreId == genre)).ToList();
            }

            if (rating != 0)
            {
                viewModel.Movies = viewModel.Movies.Where(x => x.Rating >= rating).ToList();
            }

            int recordsCount = viewModel.Movies.Count();

            viewModel.MoviesCountFound = recordsCount;
            if (recordsCount % 12 == 0)
            {
                viewModel.PagesCount = recordsCount / 12;
            }
            else
            {
                viewModel.PagesCount = (recordsCount / 12) + 1;
            }

            viewModel.Movies = viewModel.Movies.Skip(excludeRecords).Take(pageSize).ToList();
            viewModel.SearchFormInputModel.Genres = (await this.genresMovieService.GetAll <GenreViewModel>()).Distinct(new GenreComparer()).ToList();
            return(this.View(viewModel));
        }
コード例 #2
0
        public async Task <IActionResult> Listing(string crit, int pageNumber = 1, int pageSize = 5)
        {
            this.ViewData["Crit"] = crit;
            int excludeRecords = (pageSize * pageNumber) - pageSize;
            int recordsCount   = (await this.moviesService.GetAll <SingleMovieViewModel>()).Count();

            ListingMoviesViewModel viewModel = new ListingMoviesViewModel
            {
                Movies = (await this.moviesService.GetAll <SingleMovieViewModel>()).ToList(),
                SearchFormInputModel = new SearchFormInputModel()
                {
                    Genres = (await this.genresMovieService.GetAll <GenreViewModel>()).Distinct(new GenreComparer()).ToList(),
                },
                CurrentPage      = pageNumber,
                MoviesPerPage    = pageSize,
                MoviesCountFound = recordsCount,
            };

            if (recordsCount % 5 == 0)
            {
                viewModel.PagesCount = recordsCount / 5;
            }
            else
            {
                viewModel.PagesCount = (recordsCount / 5) + 1;
            }

            // Sorting
            if (crit == "popularity")
            {
                this.ViewData["Title"] = "MOST POPULAR MOVIES";
                viewModel.Movies       = viewModel.Movies.OrderByDescending(x => x.Reviews.Count()).ToList();
            }
            else if (crit == "rating")
            {
                this.ViewData["Title"] = "TOP RATED MOVIES";
                viewModel.Movies       = viewModel.Movies.OrderByDescending(x => x.Rating).ToList();
            }
            else if (crit == "reviews")
            {
                this.ViewData["Title"] = "MOST REVIEWED MOVIES";
                viewModel.Movies       = viewModel.Movies.OrderByDescending(x => x.Reviews.Count()).ToList();
            }

            // Pagination
            viewModel.Movies = viewModel.Movies.Skip(excludeRecords).Take(pageSize).ToList();
            return(this.View(viewModel));
        }