public ActionResult DisplaySearchResults(String strTitle, String strTagline, int[] enumGenres, DateTime?SelectedReleaseYear, Classification SelectedClass, enumMPAA Rating, String strActor) { var query = from r in db.Movies select r; if (strTitle != null) { query = query.Where(r => r.Title.Contains(strTitle)); } if (strTagline != null) { query = query.Where(r => r.Tagline.Contains(strTagline)); } if (enumGenres != null) { foreach (int i in enumGenres) { query = query.Where(r => r.Genres.Any(g => g.GenreID == i)); } } //if (strCustomerRating != null && strCustomerRating != "") //{ // Int32 intCustomerRating; // try // { // intCustomerRating = Convert.ToInt32(strCustomerRating); // switch (SelectedClass) // { // case Classification.GreaterThan: // query = query.Where(r => r.StarCount > intStar); // break; // case Classification.LessThan: // query = query.Where(r => r.StarCount <= intStar); // break; // } // } // catch // { // ViewBag.Message = "You must enter a number to search by stars"; // ViewBag.AllLanguages = GetAllLanguages(); // return View("DetailedSearch"); // } //} if (SelectedReleaseYear != null) { switch (SelectedClass) { case Classification.After: query = query.Where(r => r.ReleaseDate >= SelectedReleaseYear); break; case Classification.Before: query = query.Where(r => r.ReleaseDate < SelectedReleaseYear); break; } } //if (Rating != null & Rating.Count() != 0) //{ // foreach (int GenreID in enumGenres) // { // Genre GenreToDisplay = db.Genres.Find(GenreID); // query = query.Where(r => r.Genre == GenreToDisplay.Name); // } //} if (strActor != null) { query = query.Where(r => r.Actors.Contains(strActor)); } switch (Rating) { case enumMPAA.Unrated: query = query.Where(r => r.MPAARating == enumMPAARating.Unrated); break; case enumMPAA.R: query = query.Where(r => r.MPAARating == enumMPAARating.R); break; case enumMPAA.PG: query = query.Where(r => r.MPAARating == enumMPAARating.PG); break; case enumMPAA.PG13: query = query.Where(r => r.MPAARating == enumMPAARating.PG13); break; case enumMPAA.G: query = query.Where(r => r.MPAARating == enumMPAARating.G); break; case enumMPAA.NC17: query = query.Where(r => r.MPAARating == enumMPAARating.NC17); break; default: break; } List <Movie> MoviesToDisplay = query.ToList(); MoviesToDisplay.OrderBy(r => r.MovieNum); ViewBag.TotalMovies = db.Movies.Count(); ViewBag.SelectedMovies = MoviesToDisplay.Count(); return(View("Index", MoviesToDisplay)); }
public ActionResult DisplaySearchResults(String strTitle, String strTagline, int[] enumGenres, DateTime?SelectedReleaseYear, Classification SelectedClass, enumMPAA Rating, String strActor, String CustomerRating, StarRank CustomerRatingRank, String RunTime, StarRank RunTimeG, DateTime?SelectedShowTime, Classification SelectedClass1) { var query = from r in db.Movies select r; if (strTitle != null) { query = query.Where(r => r.Title.Contains(strTitle)); } if (strTagline != null) { query = query.Where(r => r.Tagline.Contains(strTagline)); } if (enumGenres != null) { foreach (int i in enumGenres) { query = query.Where(r => r.Genres.Any(g => g.GenreID == i)); } } if (CustomerRating != null && CustomerRating != "") { Double decCustomerRating; try { decCustomerRating = Convert.ToDouble(CustomerRating); switch (CustomerRatingRank) { case StarRank.GreaterThan: query = query.Where(r => r.Reviews.Average(c => c.CustomerRating) > decCustomerRating); break; case StarRank.LessThan: query = query.Where(r => r.Reviews.Average(c => c.CustomerRating) < decCustomerRating); break; case StarRank.Equal: query = query.Where(r => r.Reviews.Average(c => c.CustomerRating) == decCustomerRating); break; } } catch { ViewBag.Message = "You must enter a number to search average customer rating"; ViewBag.AllGenres = GetAllGenres(); return(View("DetailedSearch")); } } if (SelectedReleaseYear != null) { switch (SelectedClass) { case Classification.After: query = query.Where(r => r.ReleaseDate >= SelectedReleaseYear); break; case Classification.Before: query = query.Where(r => r.ReleaseDate < SelectedReleaseYear); break; //case Classification.Equal: // query = query.Where(r => r.ReleaseDate == SelectedReleaseYear); // break; } } if (strActor != null) { query = query.Where(r => r.Actors.Contains(strActor)); } switch (Rating) { case enumMPAA.Unrated: query = query.Where(r => r.MPAARating == enumMPAARating.Unrated); break; case enumMPAA.R: query = query.Where(r => r.MPAARating == enumMPAARating.R); break; case enumMPAA.PG: query = query.Where(r => r.MPAARating == enumMPAARating.PG); break; case enumMPAA.PG13: query = query.Where(r => r.MPAARating == enumMPAARating.PG13); break; case enumMPAA.G: query = query.Where(r => r.MPAARating == enumMPAARating.G); break; case enumMPAA.NC17: query = query.Where(r => r.MPAARating == enumMPAARating.NC17); break; default: break; } if (RunTime != null && RunTime != "") { Int32 intRunTime; try { intRunTime = Convert.ToInt32(RunTime); switch (RunTimeG) { case StarRank.GreaterThan: query = query.Where(r => r.Runtime >= intRunTime); break; case StarRank.LessThan: query = query.Where(r => r.Runtime < intRunTime); break; case StarRank.Equal: query = query.Where(r => r.Runtime == intRunTime); break; } } catch { ViewBag.Message1 = "You must enter a number to search run time"; ViewBag.AllGenres = GetAllGenres(); return(View("DetailedSearch")); } } if (SelectedShowTime != null) { switch (SelectedClass1) { case Classification.After: query = query.Where(r => r.Showings.Any(c => c.Date >= SelectedShowTime)); break; case Classification.Before: query = query.Where(r => r.Showings.Any(c => c.Date < SelectedShowTime)); break; //case Classification.Equal: // query = query.Where(r => r.Showings.Any(c => c.StartTime == SelectedShowTime)); // break; } } List <Movie> MoviesToDisplay = query.ToList(); MoviesToDisplay.OrderBy(r => r.MovieNum); ViewBag.TotalMovies = db.Movies.Count(); ViewBag.SelectedMovies = MoviesToDisplay.Count(); return(View("Index", MoviesToDisplay)); }