/// <summary>
        /// Does the response initialization for incoming GET requests
        /// </summary>
        public void OnGet(double?IMDBMin, double?IMDBMax)
        {
            /*
             * // Nullable conversion workaround
             * this.IMDBMin = IMDBMin;
             * this.IMDBMax = IMDBMax;
             * MPAARating = Request.Query["MPAARatings"];
             * Genres = Request.Query["Genres"];
             * Movies = MovieDatabase.Search(SearchTerms);
             * Movies = MovieDatabase.FilterByMPAARating(Movies, MPAARating);
             * Movies = MovieDatabase.FilterByGenre(Movies, Genres);
             * Movies = MovieDatabase.FilterByIMDBRating(Movies, IMDBMin, IMDBMax);
             */

            Movies = MovieDatabase.All;
            // Search movie titles for the SearchTerms
            if (SearchTerms != null)
            {
                Movies = Movies.Where(movie => movie.Title != null && movie.Title.Contains(SearchTerms, StringComparison.InvariantCultureIgnoreCase));
            }
            // Filter by MPAA Rating
            if (MPAARating != null && MPAARating.Length != 0)
            {
                Movies = Movies.Where(movie =>
                                      movie.MPAARating != null &&
                                      MPAARating.Contains(movie.MPAARating)
                                      );
            }
        }
        private MediaType _medium; // The movie's medium

        public LibraryMovie(string theTitle, string thePublisher, int theCopyrightYear, int theLoanPeriod,
                            string theCallNumber, double theDuration, string theDirector, MediaType theMedium, MPAARating theRating)
            : base(theTitle, thePublisher, theCopyrightYear, theLoanPeriod, theCallNumber, theDuration)
        {
            Director = theDirector;
            Medium   = theMedium;
            Rating   = theRating;
        }
 public Movie(String name, DateTime releaseDate, MPAARating ageRating, double basePrice)
 {
     this.name               = name;
     this.releaseDate        = releaseDate;
     this.totalNoOfPurchases = 0;
     this.ageRating          = ageRating;
     this.basePrice          = basePrice;
 }
    private MPAARating _rating; //The movie's rating

    #endregion Fields

    #region Constructors

    // Precondition:  None
    // Postcondition: The library periodical has been initialized with the specified
    //                values for title, publisher, copyright year, loan period, call number,
    //                duration, director, medium, and rating. The book is not checked out.
    public LibraryMovie(string title, string publisher, int copyrightYear, int loanPeriod,
        string callNumber, double duration, string director, MediaType medium, MPAARating rating)
        : base(title, publisher, copyrightYear, loanPeriod, callNumber, duration)
    {
        Director = director;
        Medium = medium;
        Rating = rating;
    }
Example #5
0
        public override int GetHashCode()
        {
            int result = 0;

            if (Title != null)
            {
                result ^= Title.GetHashCode();
            }
            result ^= Duration.GetHashCode();
            if (MPAARating != null)
            {
                result ^= MPAARating.GetHashCode();
            }
            result ^= ReleaseDate.ToUniversalTime().GetHashCode();
            result ^= BestPictureWinner.GetHashCode();
            result ^= Year.GetHashCode();
            return(result);
        }
        public SelectList GetAllMPAARatings()
        {
            List <MPAARating> MPAARatings = new List <MPAARating>();

            MPAARating SelectNone = MPAARating.None; // TODO: need to check that this is a valid way to make selectnone

            MPAARatings.Add(SelectNone);

            foreach (Movie m in db.Movies.ToList())
            {
                if (!MPAARatings.Contains(m.MPAARating))
                {
                    MPAARatings.Add(m.MPAARating);
                }
            }

            SelectList AllRatings = new SelectList(MPAARatings);

            return(AllRatings);
        }
Example #7
0
        //LINQ Comprehension Syntax
        //var evenNums = from int num in nums
        //      where num % 2 == 0
        //      select num;

        //LINQ Extension Syntax
        //var evenNums = nums.Where(num => num % 2 = 0);
        //Where, Select, Orderby, OrderByDescending, GroupBy, Min, Max

        //LINQ Desugarized Syntax
        //var evenNums = Enumerable.Where(nums, Predicate1);
        static void Main(string[] args)
        {
            //Oldest and Newest Movies
            var NewMovie = from Movie in MovieLoader.AllMovies
                           orderby Movie.Year descending
                           select Movie;

            Console.WriteLine("Newest Movie: ");
            foreach (var Movie in NewMovie.Take(1))
            {
                Console.WriteLine($"{Movie.Title,-20} : {Movie.Year,10}");
            }

            var OldMovie = from Movie in MovieLoader.AllMovies
                           orderby Movie.Year ascending
                           select Movie;

            Console.WriteLine("Oldest Movie: ");
            foreach (var Movie in OldMovie.Take(1))
            {
                Console.WriteLine($"{Movie.Title,-20} : {Movie.Year,10}");
            }

            Console.WriteLine("************************************************");

            //Find Classic and New, based on range of year split
            int avg     = 0;
            int totYear = 0;

            foreach (var Movie in MovieLoader.AllMovies)
            {
                totYear += Movie.Year;
            }

            avg = totYear / MovieLoader.AllMovies.Count();

            var Classic = from Movie in MovieLoader.AllMovies
                          orderby Movie.Year descending
                          where Movie.Year < avg
                          select Movie;

            Console.WriteLine("All the Classics: ");
            foreach (var Movie in Classic)
            {
                Console.WriteLine($"{Movie.Title,-20} : {Movie.Year,10}");
            }
            Console.WriteLine($"Total Classics: {Classic.Count()}");

            var Newbies = from Movie in MovieLoader.AllMovies
                          orderby Movie.Year descending
                          where Movie.Year >= avg
                          select Movie;

            Console.WriteLine("All the Newbies: ");
            foreach (var Movie in Newbies)
            {
                Console.WriteLine($"{Movie.Title,-20} : {Movie.Year,10}");
            }
            Console.WriteLine($"Total Newbies: {Newbies.Count()}");

            Console.WriteLine("************************************************");

            //More Odd Years or even Years? Answer and Print Totals
            var Evens = from Movie in MovieLoader.AllMovies
                        where Movie.Year % 2 == 0
                        select Movie;

            var Odds = from Movie in MovieLoader.AllMovies
                       where Movie.Year % 2 != 0
                       select Movie;

            Console.WriteLine($"Total Number of Even-Yeared Movies: {Evens.Count()}");
            Console.WriteLine($"Total Number of Odd-Yeared Movies: {Odds.Count()}");

            Console.WriteLine("************************************************");

            //Most Common Year, Qty
            var PopYear = from Movie in MovieLoader.AllMovies
                          group Movie by Movie.Year into g
                          orderby g.Count() descending
                          select g;

            /*
             * foreach (var MovieGroup in PopYear)
             * {
             *  Console.WriteLine(MovieGroup.Key);
             *  foreach (var Movie in MovieGroup)
             *  {
             *      Console.WriteLine(Movie.Title, Movie.Year);
             *      Console.WriteLine("");
             *  }
             * }
             */

            Console.WriteLine("Most Movies: ");
            foreach (var Movie in PopYear.Take(1))
            {
                Console.WriteLine($"Year: {Movie.Key}, Number of Movies: {Movie.Count()}");
            }

            Console.WriteLine("************************************************");

            //Most Common Rating, Qty
            var PopRating = from Movie in MovieLoader.AllMovies
                            group Movie by Movie.Rating into g
                            orderby g.Count() descending
                            select g;

            /*
             * foreach (var MovieGroup in PopRating)
             * {
             *  Console.WriteLine(MovieGroup.Key);
             *  foreach (var Movie in MovieGroup)
             *  {
             *      Console.WriteLine(Movie.Title, Movie.Rating);
             *      Console.WriteLine("");
             *  }
             * }
             */

            Console.WriteLine("Most Movies per Rating: ");
            foreach (var Movie in PopRating.Take(1))
            {
                Console.WriteLine($"Rating: {Movie.Key}, Number of Movies: {Movie.Count()}");
            }

            Console.WriteLine("************************************************");

            //Shortest Title, Longest Title
            var ShortTitle = from Movie in MovieLoader.AllMovies
                             orderby Movie.Title.Length ascending
                             select Movie;

            foreach (var Movie in ShortTitle.Take(1))
            {
                Console.WriteLine($"Shortest Title: {Movie.Title}");
            }

            var LongTitle = from Movie in MovieLoader.AllMovies
                            orderby Movie.Title.Length descending
                            select Movie;

            foreach (var Movie in LongTitle.Take(1))
            {
                Console.WriteLine($"Longest Title: {Movie.Title}");
            }

            Console.WriteLine("************************************************");

            //Rating, Widest Year Span
            int        Distance = 0, LowYear = 0, HighYear = 0, RcrdDist = 0;
            MPAARating LongBoi     = MPAARating.NotRated;
            var        RatingYears = from Movie in MovieLoader.AllMovies
                                     group Movie by Movie.Rating into g
                                     select g;

            foreach (var Item in RatingYears)
            {
                foreach (var Movie in Item)
                {
                    if (LowYear == 0 && HighYear == 0)
                    {
                        LowYear  = Movie.Year;
                        HighYear = Movie.Year;
                    }
                    else if (LowYear == 0)
                    {
                        LowYear = Movie.Year;
                    }
                    else if (HighYear == 0)
                    {
                        HighYear = Movie.Year;
                    }
                    else if (Movie.Year > HighYear)
                    {
                        HighYear = Movie.Year;
                    }
                    else if (Movie.Year < LowYear)
                    {
                        LowYear = Movie.Year;
                    }

                    Distance = HighYear - LowYear;

                    if (Distance > RcrdDist)
                    {
                        RcrdDist = Distance;
                        LongBoi  = Item.Key;
                    }
                }
            }
            Console.WriteLine($"Rating: {LongBoi}, TimeSoan: {RcrdDist}");

            Console.WriteLine("************************************************");

            //Films per Decade over total year range
            var Decades = from Movie in MovieLoader.AllMovies
                          group Movie by Movie.Year / 10 into g
                          orderby g.Key descending
                          select g;

            foreach (var Item in Decades)
            {
                string MyString = Item.Key.ToString();
                Console.WriteLine($"{MyString.Substring(2, 1) + 0}\'s: {Item.Count()}");
            }

            Console.WriteLine("************************************************");

            //Unused Ratings in MPAARating Enum
            bool UsedG = false, UsedNC17 = false, UsedNotRated = false, UsedPG = false, UsedPG13 = false, UsedR = false, UsedUnknown = false, UsedUnrated = false;

            var UsedRatings = from Movie in MovieLoader.AllMovies
                              group Movie by Movie.Rating into g
                              select g;

            foreach (var Item in UsedRatings)
            {
                //Console.WriteLine(Item.Key);
                if (Item.Key == MPAARating.G && UsedG == false)
                {
                    UsedG = true;
                }
                else if (Item.Key == MPAARating.NC17 && UsedNC17 == false)
                {
                    UsedNC17 = true;
                }
                else if (Item.Key == MPAARating.NotRated && UsedNotRated == false)
                {
                    UsedNotRated = true;
                }
                else if (Item.Key == MPAARating.PG && UsedPG == false)
                {
                    UsedPG = true;
                }
                else if (Item.Key == MPAARating.PG13 && UsedPG13 == false)
                {
                    UsedPG13 = true;
                }
                else if (Item.Key == MPAARating.R && UsedR == false)
                {
                    UsedR = true;
                }
                else if (Item.Key == MPAARating.Unknown && UsedUnknown == false)
                {
                    UsedUnknown = true;
                }
                else if (Item.Key == MPAARating.Unrated && UsedUnrated == false)
                {
                    UsedUnrated = true;
                }
            }

            if (UsedG != true)
            {
                Console.WriteLine("The G Rating is never used.");
            }
            if (UsedNC17 != true)
            {
                Console.WriteLine("The NC17 Rating is never used.");
            }
            if (UsedNotRated != true)
            {
                Console.WriteLine("The Not Rated Rating is never used.");
            }
            if (UsedPG != true)
            {
                Console.WriteLine("The PG Rating is never used.");
            }
            if (UsedPG13 != true)
            {
                Console.WriteLine("The PG13 Rating is never used.");
            }
            if (UsedR != true)
            {
                Console.WriteLine("The R Rating is never used.");
            }
            if (UsedUnknown != true)
            {
                Console.WriteLine("The Unknown Rating is never used.");
            }
            if (UsedUnrated != true)
            {
                Console.WriteLine("The Unrated Rating is never used.");
            }

            Console.WriteLine("************************************************");

            //Display All Films, By rating (Ascending), then seperately by title (Ascending Alphabetically)
            var RatingList = from Movie in MovieLoader.AllMovies
                             orderby Movie.Rating ascending
                             select Movie;
            var TitleList = from Movie in MovieLoader.AllMovies
                            orderby Movie.Title descending
                            select Movie;

            Console.WriteLine("Movies Sorted According to Ratings, Descending");
            foreach (var Movie in RatingList)
            {
                Console.WriteLine($"{Movie.Title}, {Movie.Rating}");
            }
            Console.WriteLine("********************************");
            Console.WriteLine("Movies Sorted According to Titles, Ascending");
            foreach (var Movie in TitleList)
            {
                Console.WriteLine($"{Movie.Title}, {Movie.Rating}");
            }

            Console.WriteLine("************************************************");

            //Group Movies by Number of Words in Title - List by Group with Total
            var TitleLength = from Movie in MovieLoader.AllMovies
                              group Movie by Movie.Title.Length into g
                              select g;

            foreach (var ItemList in TitleLength)
            {
                Console.WriteLine($"Group: {ItemList.Key}, Films: {ItemList.Count()}");
            }

            Console.WriteLine("************************************************");

            //List Total Films with MPAARating of G, PG, PG-13 = total number
            var KidFriendly = from Movie in MovieLoader.AllMovies
                              where Movie.Rating == MPAARating.G || Movie.Rating == MPAARating.PG || Movie.Rating == MPAARating.PG13
                              orderby Movie.Rating ascending
                              select Movie;

            Console.WriteLine($"You could watch {KidFriendly.Count()} Movies. They are: ");
            foreach (var Movie in KidFriendly)
            {
                Console.WriteLine($"{Movie.Title}, Rating: {Movie.Rating}");
            }

            Console.WriteLine("************************************************");

            Console.Write("Press any key to continue...");
            Console.ReadLine();
        }
        //TODO: DisplaySearchResults Method
        public ActionResult DisplaySearchResults(String SearchString, String ReleaseYearString, BeforeAfter BeforeAfter, MPAARating MPAARating, List <int> SelectedGenres, String RatingString, String ActorString)
        {
            // create query
            var query = from m in db.Movies
                        select m;

            // TODO: make sure genre search is working, what does this do??
            if (SelectedGenres != null)
            {
                List <Genre> SelGenres = new List <Genre>();
                foreach (Genre item in db.Genres)
                {
                    if (SelectedGenres.Contains(item.GenreID))
                    {
                        SelGenres.Add(item);
                    }
                }
            }



            // search conditions
            if (SearchString != null)
            {
                query = query.Where(m => m.Title.Contains(SearchString));
            }

            if (ReleaseYearString != null && ReleaseYearString != "")
            {
                try // ensure release year entry is valid
                {
                    Int32 intReleaseYear = Convert.ToInt32(ReleaseYearString);

                    if (BeforeAfter == BeforeAfter.After)
                    {
                        query = query.Where(m => m.ReleaseDate.Year >= intReleaseYear);
                    }

                    if (BeforeAfter == BeforeAfter.Before)
                    {
                        query = query.Where(m => m.ReleaseDate.Year <= intReleaseYear);
                    }
                }
                catch // invalid, display error
                {
                    ViewBag.ReleaseYearErrorMessage = "You must enter a valid number to search by Year";
                    //TODO: Create viewbag with all genres
                    return(View("DetailedSearch"));
                }
            }

            if (MPAARating != MPAARating.All)
            {
                if (MPAARating == MPAARating.G)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.G);
                }
                if (MPAARating == MPAARating.PG)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.PG);
                }
                if (MPAARating == MPAARating.PG13)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.PG13);
                }
                if (MPAARating == MPAARating.R)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.R);
                }
                if (MPAARating == MPAARating.NC17)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.NC17);
                }
            }

            if (SelectedGenres != null)
            {
                if (SelectedGenres.Count != 0)
                {
                    query = query.Where(r => r.Genres.Any(x => SelectedGenres.Contains(x.GenreID)));
                }
            }


            if (RatingString != null && RatingString != "")
            {
                try // ensure rating entry is valid
                {
                    Decimal decRating = Convert.ToDecimal(RatingString);

                    query = query.Where(m => m.CustomerRatingAverage >= decRating);
                }
                catch // invalid, display error
                {
                    ViewBag.RatingErrorMessage = "You must enter a valid number to search by Rating";
                    //TODO: Create viewbag with all genres
                    return(View("DetailedSearch"));
                }
            }

            //TODO: Actor string detailed search will need to be found
            if (ActorString != null)
            {
                query = query.Where(m => m.Actors.Contains(ActorString));
            }

            List <Movie> MoviesToDisplay = new List <Movie>();

            MoviesToDisplay = query.ToList();

            MoviesToDisplay.OrderByDescending(m => m.CustomerRatingAverage);
            ViewBag.TotalMovies    = db.Movies.Count();
            ViewBag.SelectedMovies = MoviesToDisplay.Count();

            return(View("Index", MoviesToDisplay));
        }
        public ActionResult DisplaySearchResults(bool ShowingOnly, String strTitle, String strTagline, Int32?intSelectedYear, MPAARating MPAArating, String strActors, Int32?SelectedGenre, DateTime?datSchedule)
        {
            //create query
            var query = from m in db.Movies
                        select m;

            if (ShowingOnly == true)
            {
                query = query.Where(m => m.Showings.Any(x => x.Movie.MovieID == m.MovieID));
            }

            //check to see if they selected something
            if (strTitle != null)
            {
                //if they selected a search string, limit results to only repos that meet the criteria
                query = query.Where(m => m.Title.Contains(strTitle));
            }

            if (strTagline != null)
            {
                query = query.Where(m => m.Tagline.Contains(strTagline));
            }

            if (intSelectedYear != null)
            {
                query = query.Where(m => m.ReleaseDate.Year == intSelectedYear);
            }
            if (MPAArating != MPAARating.Any)
            {
                if (MPAArating == MPAARating.G)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.G);
                }
                if (MPAArating == MPAARating.PG)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.PG);
                }
                if (MPAArating == MPAARating.PG13)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.PG13);
                }
                if (MPAArating == MPAARating.R)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.R);
                }
                if (MPAArating == MPAARating.Unrated)
                {
                    query = query.Where(m => m.MPAARating == MPAARating.Unrated);
                }
            }
            if (strActors != null)
            {
                query = query.Where(m => m.Actors.Contains(strActors));
            }

            if (SelectedGenre != null)
            {
                query = query.Where(m => m.Genres.Any(x => x.GenreID == SelectedGenre));
            }
            if (datSchedule != null)
            {
                query = query.Where(m => m.Showings.Any(x => x.Movie.MovieID == m.MovieID && x.ShowingDate == datSchedule));
            }


            //execute query
            List <Movie> MoviesToDisplay = query.ToList();

            ViewBag.TotalMovies    = db.Movies.Count();
            ViewBag.SelectedMovies = MoviesToDisplay.Count();
            //order lsit
            //MoviesToDisplay.OrderByDescending(r => r.StarCount);

            if (MoviesToDisplay.Count == 0)
            {
                return(View("NoMovies"));
            }

            //send list to view
            return(View("Index", MoviesToDisplay));
        }
        public ActionResult DisplayTicketSearchResults(ChosenReport RevenueOrSeats, DateTime?datBeginningDate, DateTime?datEndingDate, String MovieSearchString, MPAARating SelectedMPAARating, TimeOfDay Daytime)
        {
            var query = from t in db.Tickets
                        select t;

            query = query.Where(t => t.Order.Gift == false);
            query = query.Where(t => t.Order.CompletedOrder == true);
            query = query.Where(t => t.Order.CancelledOrder == false);
            query = query.Where(t => t.Order.PaymentMethod == PaymentMethod.Card);
            query = query.Where(t => t.Taken == true);

            if (datBeginningDate != null)
            {
                DateTime datBeginning = datBeginningDate ?? new DateTime(1900, 1, 1);
                query = query.Where(t => t.Showtime.Schedule.ScheduleDate >= datBeginningDate);
            }
            if (datEndingDate != null)
            {
                DateTime datEnding = datEndingDate ?? DateTime.Today;
                query = query.Where(t => t.Showtime.Schedule.ScheduleDate <= datEndingDate);
            }

            if (MovieSearchString != null && MovieSearchString != "")
            {
                query = query.Where(t => t.Showtime.Movie.Title.Contains(MovieSearchString));
            }

            if (SelectedMPAARating != MPAARating.All)
            {
                query = query.Where(t => t.Showtime.Movie.MPAARating == SelectedMPAARating);
            }

            if (Daytime != TimeOfDay.AllDay)
            {
                DateTime EndMorningTime   = new DateTime(2000, 1, 1, 12, 0, 0);
                DateTime EndAfternoonTime = new DateTime(2000, 1, 1, 17, 0, 0);
                DateTime EndEveningTime   = new DateTime(2000, 1, 1, 20, 0, 0);
                switch (Daytime)
                {
                case TimeOfDay.Morning:
                    query = query.Where(t => t.Showtime.StartTime.Hour < EndMorningTime.Hour);
                    break;

                case TimeOfDay.Afternoon:
                    query = query.Where(t => t.Showtime.StartTime.Hour >= EndMorningTime.Hour);
                    query = query.Where(t => t.Showtime.StartTime.Hour < EndAfternoonTime.Hour);
                    break;

                case TimeOfDay.Evening:
                    query = query.Where(t => t.Showtime.StartTime.Hour >= EndAfternoonTime.Hour);
                    query = query.Where(t => t.Showtime.StartTime.Hour < EndEveningTime.Hour);
                    break;

                case TimeOfDay.Night:
                    query = query.Where(t => t.Showtime.StartTime.Hour >= EndEveningTime.Hour);
                    break;
                }
            }

            List <Ticket> Selected        = query.ToList();
            Decimal       decTotalRevenue = (Selected.Sum(item => item.PriceAtPayment)) * 1.0825m;
            String        strTotalRevenue = decTotalRevenue.ToString("C");
            Int32         intTotalSeats   = Selected.Count();

            switch (RevenueOrSeats)
            {
            case ChosenReport.Both:
                ViewBag.TotalRevenue = strTotalRevenue;
                ViewBag.TotalSeats   = intTotalSeats;
                break;

            case ChosenReport.Revenue:
                ViewBag.TotalRevenue = strTotalRevenue;
                break;

            case ChosenReport.SeatsSold:
                ViewBag.TotalSeats = intTotalSeats;
                break;
                //TODO: Delete this comment
            }

            return(View("SummaryReport"));
        }
        public ActionResult DisplaySearchResults(String SearchTitle, String SearchTagline, Int32 SearchGenreID, MPAARating SearchMPAARating, String SearchStars, StarFilter SearchStarFilter, String SearchActor, YearFilter SearchYearFilter, String SearchYear)
        { // Update Actors and other fields to be multiselectable
            var query = from m in db.Movies
                        select m;
            Boolean SomethingWrong = false;

            //SearchTitle for Movie Name
            if (SearchTitle != null)
            {
                query = query.Where(m => m.Title.Contains(SearchTitle));
            }

            //SearchTagline for Movie Tagline
            if (SearchTagline != null)
            {
                query = query.Where(m => m.Tagline.Contains(SearchTagline));
            }

            // SearchGenreID for Movie Genre
            if (SearchGenreID != 0)
            {
                //Genre ThisGenre = db.Genres.FirstOrDefault(g => g.GenreID == SearchGenreID);
                query = query.Where(m => m.Genres.Any(g => g.GenreID == SearchGenreID));
            } // TODO: fix not being able to filter by Genre


            //YEAR
            //code for year text box
            if (SearchYear != null && SearchYear != "")
            {
                DateTime dtSearchYear;
                try
                {
                    dtSearchYear = new DateTime(Convert.ToInt32(SearchYear), 1, 1);
                }
                catch
                {
                    ViewBag.YearMessage = SearchYear + " is not a valid year. Please try again";

                    ViewBag.AllGenres      = GetAllGenres();
                    ViewBag.AllMPAARatings = GetAllMPAARatings();

                    SomethingWrong = true;
                    dtSearchYear   = DateTime.Now;
                }

                //code for radio buttons of year
                if (SearchYearFilter == YearFilter.After && !SomethingWrong)
                {
                    foreach (Movie m in query.ToList())
                    {
                        if (m.ReleaseDate < dtSearchYear)
                        {
                            query = query.Where(x => x.Title != m.Title);
                        }
                    }
                }
                else if (SearchYearFilter == YearFilter.Before)
                {
                    foreach (Movie m in query.ToList())
                    {
                        if (m.ReleaseDate > dtSearchYear)
                        {
                            query = query.Where(x => x.Title != m.Title);
                        }
                    }
                }
            }



            //code for MPAA Rating selection
            if (SearchMPAARating != MPAARating.None)
            {
                query = query.Where(m => m.MPAARating == SearchMPAARating);
            }

            //code for customer rating text box
            if (SearchStars != null && SearchStars != "")
            {
                Decimal decCustomerRating;
                try
                {
                    decCustomerRating = Convert.ToDecimal(SearchStars);
                }
                catch
                {
                    ViewBag.Message = SearchStars + " is not a valid number. Please try again";

                    ViewBag.AllGenres      = GetAllGenres();
                    ViewBag.AllMPAARatings = GetAllMPAARatings();

                    SomethingWrong    = true;
                    decCustomerRating = -1;
                }

                //code for radio buttons
                if (SearchStarFilter == StarFilter.Greater && !SomethingWrong)
                {
                    foreach (Movie m in query.ToList())
                    {
                        if (m.RatingAverage < decCustomerRating)
                        {
                            query = query.Where(x => x.Title != m.Title);
                        }
                    }
                }
                else if (SearchStarFilter == StarFilter.Less)
                {
                    foreach (Movie m in query.ToList())
                    {
                        if (m.RatingAverage > decCustomerRating)
                        {
                            query = query.Where(x => x.Title != m.Title);
                        }
                    }
                }
            }


            // SearchActors for Movie Actors
            if (SearchActor != null)
            {
                query = query.Where(m => m.Actors.Contains(SearchActor));
            }

            List <Movie> MoviesToDisplay = query.ToList();

            MoviesToDisplay.OrderBy(m => m.Title);

            ViewBag.SelectedMoviesCount = MoviesToDisplay.Count();
            ViewBag.TotalMoviesCount    = db.Movies.ToList().Count();

            if (!SomethingWrong)
            {
                return(View("~/Views/Movies/Index.cshtml", MoviesToDisplay));
            }
            else
            {
                return(View("DetailedSearch"));
            }
        }