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)); }
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)); }