private void Queue_Click(object sender, RoutedEventArgs e) { Movie current = (Movie)MovieList.SelectedItem; using (var context = new MovieRentalEntities()) { Queue queue = new Queue() { AccountNumber = customer.AccountNumber, MovieID = current.MovieID, DateAdded = System.DateTime.Today }; try { context.Queues.Add(queue); context.SaveChanges(); MessageBox.Show(current.Title + " has been added to your queue"); } catch (DbUpdateException) { MessageBox.Show(current.Title + " is already in your queue"); } } }
private List <Movie> GetWeekPopular() { List <Movie> movies = new List <Movie>(); // Sunday of this week DayOfWeek firstDay = 0; DateTime firstOfWeek = DateTime.Today.Date; // Find the date of this week's Sunday while (firstOfWeek.DayOfWeek != firstDay) { firstOfWeek = firstOfWeek.AddDays(-1); } DateTime date = firstOfWeek.Date; using (var context = new MovieRentalEntities()) { var weekMovies = "SELECT MovieID, COUNT(OrderID) as NumberOfOrders FROM dbo.Orders WHERE Orders.RentalDate >= @date GROUP BY MovieID ORDER BY (NumberOfOrders) DESC"; var popularThisWeek = context.Database.SqlQuery <StorePopular>(weekMovies, new SqlParameter("@date", date.ToShortDateString())); var top10 = popularThisWeek.Take(10); // 10 most popular movies of the week foreach (StorePopular popular in top10) { Movie movie = context.Movies.Where(m => m.MovieID == popular.MovieID).Single(); movies.Add(movie); } } return(movies); }
private List <Movie> SearchByGenre(string genre) { List <Movie> movies = new List <Movie>(); using (var context = new MovieRentalEntities()) { movies = context.Movies.Where(movie => movie.Genre.Equals(genre)).ToList(); return(movies); } }
private List <Movie> SearchByTitle(string title) { List <Movie> movies = new List <Movie>(); using (var context = new MovieRentalEntities()) { movies = context.Movies.Where(movie => movie.Title.Contains(SearchBox.Text)).ToList(); return(movies); } }
public List <Movie> GeneratePersonalRecommendations() { using (var context = new MovieRentalEntities()) { List <Movie> recs = new List <Movie>(); var query = "SELECT Genre, COUNT(OrderID) as NumberOfOrders FROM Orders, Movie, Customer WHERE Orders.MovieID = Movie.MovieID AND Customer.AccountNumber = @account GROUP BY Genre ORDER BY (NumberOfOrders) DESC"; var favGenre = context.Database.SqlQuery <StoreGenreCount>(query, new SqlParameter("@account", customer.AccountNumber)).First(); // Customer's favorite genre string genre = favGenre.Genre; var moviesByGenre = context.Movies.Where(m => m.Genre == genre).ToList(); recs.AddRange(moviesByGenre); var actorQuery = "SELECT ActorID, Count(OrderID) as NumberOfOrders FROM Orders, Credits, Customer WHERE Orders.MovieID = Credits.MovieID AND Customer.AccountNumber = 2 GROUP BY ActorID ORDER BY (NumberOfOrders) DESC"; var favorites = context.Database.SqlQuery <StoreFavoriteActors>(actorQuery, new SqlParameter("@account", customer.AccountNumber)).ToList(); var top = favorites.First(); List <int> favoriteActors = new List <int>(); // First favorite actor favoriteActors.Add(top.ActorID); // Check for any other actors that have the same number of orders as the first one in the list int count = top.NumberOfOrders; foreach (StoreFavoriteActors result in favorites) { // Add the actor if order count is equal if (result.NumberOfOrders == count) { favoriteActors.Add(result.ActorID); } } foreach (int actorID in favoriteActors) { var credits = context.Credits.Where(c => c.ActorID == actorID).ToList(); foreach (Credit credit in credits) { var movie = context.Movies.Where(m => m.MovieID == credit.MovieID).Single(); recs.Add(movie); } } return(recs.Distinct().ToList()); } }
private void ResetButton_Click(object sender, RoutedEventArgs e) { RecommendationText.Visibility = Visibility.Hidden; using (var context = new MovieRentalEntities()) { var movies = from m in context.Movies where m.NumberOfCopies > 0 select m; MovieList.ItemsSource = movies.ToList(); MovieList.SelectedIndex = 0; } }
public List <Movie> GenerateRecommendationsByActor(int id) { using (var context = new MovieRentalEntities()) { var credits = context.Credits.Where(c => c.ActorID == id).ToList(); List <Movie> recs = new List <Movie>(); foreach (Credit credit in credits) { var movie = context.Movies.Where(m => m.MovieID == credit.MovieID).Single(); recs.Add(movie); } return(recs); } }
public BrowseMovies(Customer customer) { InitializeComponent(); this.customer = customer; SearchBy.Items.Add("Actor"); SearchBy.Items.Add("Genre"); SearchBy.Items.Add("Title"); SearchBy.Items.Add("Most Popular"); using (var context = new MovieRentalEntities()) { var movies = from m in context.Movies where m.NumberOfCopies > 0 select m; MovieList.DisplayMemberPath = "Title"; MovieList.SelectedValuePath = "MovieID"; MovieList.ItemsSource = movies.ToList(); MovieList.SelectedIndex = 0; } Genres.ItemsSource = GenreDict.genreDict; Genres.SelectedValuePath = "Value"; Genres.DisplayMemberPath = "Value"; Genres.SelectedIndex = 0; List <string> spans = new List <string>(); spans.Add("This week"); spans.Add("This month"); spans.Add("This year"); Timespan.ItemsSource = spans; // Initially search by titles and hide the genre combobox SearchBy.SelectedIndex = 2; Genres.Visibility = Visibility.Hidden; Timespan.Visibility = Visibility.Hidden; ActorList.SelectedIndex = -1; RecommendationText.Visibility = Visibility.Hidden; }
private List <Movie> GetYearPopular() { List <Movie> movies = new List <Movie>(); DateTime firstOfYear = new DateTime(DateTime.Now.Year, 1, 1); using (var context = new MovieRentalEntities()) { var yearMovies = "SELECT MovieID, COUNT(OrderID) as NumberOfOrders FROM dbo.Orders WHERE Orders.RentalDate >= @date GROUP BY MovieID ORDER BY (NumberOfOrders) DESC"; var popularThisYear = context.Database.SqlQuery <StorePopular>(yearMovies, new SqlParameter("@date", firstOfYear.ToShortDateString())); var top10 = popularThisYear.Take(10); // 10 most popular movies of the year foreach (StorePopular popular in top10) { Movie movie = context.Movies.Where(m => m.MovieID == popular.MovieID).Single(); movies.Add(movie); } } return(movies); }
private void AddButton_Click(object sender, RoutedEventArgs e) { SearchMovie current = (SearchMovie)MovieListBox.SelectedItem; Credits credits = client.GetMovieCreditsAsync(current.Id).Result; int copies; decimal fee; foreach (Cast cast in credits.Cast) { // Top 5 actors if (cast.Order < 5) { Person person = client.GetPersonAsync(cast.Id).Result; int id = person.Id; string firstName, lastName; string gender = person.Gender.ToString(); string sex; if (gender == "Male" || gender == "Female") { sex = gender[0].ToString(); } else { continue; } var today = DateTime.Today; int age = today.Year - person.Birthday.GetValueOrDefault().Year; string fullName = person.Name; var names = fullName.Split(' '); // Just take first and last name if there are more than two names if (names.Length > 2) { firstName = names[0]; lastName = names[names.Length - 1]; } else if (names.Length == 2) { firstName = names[0]; lastName = names[1]; } else { continue; // Skip adding this actor, does not conform to the database } using (var context = new MovieRentalEntities()) { // If the actor exists, don't do anything if (context.Actors.Any(a => a.ActorID == id)) { } else { Actor actor = new Actor() { ActorID = id, FirstName = firstName, LastName = lastName, Sex = sex, Age = age, Rating = 1 }; context.Actors.Add(actor); context.SaveChanges(); } } using (var context = new MovieRentalEntities()) { // Add the actor's credits for this movie into the database Credit credit = new Credit() { MovieID = current.Id, ActorID = id }; try { context.Credits.Add(credit); context.SaveChanges(); } catch { continue; // Skip this credit } } } } var image = client.GetMovieImagesAsync(current.Id); using (var context = new MovieRentalEntities()) { if (context.Movies.Any(m => m.MovieID == current.Id)) { MessageBox.Show("Movie is already in the database"); return; } try { copies = Convert.ToInt32(NumberOfCopies.Text); } catch { MessageBox.Show("Error in number of copies"); return; } try { fee = Convert.ToDecimal(DistFee.Text); } catch { MessageBox.Show("Error in distribution fee"); return; } Movie movie = new Movie() { MovieID = current.Id, Title = current.Title, Genre = GenreDict.genreDict[current.GenreIds[0]], // First available genre for the movie DistributionFee = fee, NumberOfCopies = copies, Rating = (int)Math.Round(current.VoteAverage / 2) }; context.Movies.Add(movie); context.SaveChanges(); MessageBox.Show("Movie added successfully!"); } }
private void Movies_SelectionChanged(object sender, SelectionChangedEventArgs e) { ActorList.Items.Clear(); try { Movie current = (Movie)MovieList.SelectedItem; MovieTitle.Text = current.Title; APIMovie movie = client.GetMovieAsync(current.MovieID).Result; // Use the API to get the movie poster Uri apiUri = new Uri("http://image.tmdb.org/t/p/w342//"); string posterPath = movie.PosterPath; System.UriBuilder uriBuilder = new System.UriBuilder(apiUri); uriBuilder.Path += posterPath; // TODO: Check if this is null Poster.Source = new BitmapImage(uriBuilder.Uri); MovieTitle.Text = current.Title; MovieOverview.Text = movie.Overview; GenreText.Text = current.Genre; int rating = current.Rating; if (rating >= 4) { RatingCircle.Stroke = Brushes.Green; RatingNumber.Text = rating.ToString(); RatingNumber.Foreground = Brushes.Green; } else if (rating >= 2 && rating < 4) { RatingCircle.Stroke = Brushes.Gold; RatingNumber.Text = rating.ToString(); RatingNumber.Foreground = Brushes.Gold; } else { RatingCircle.Stroke = Brushes.Red; RatingNumber.Text = rating.ToString(); RatingNumber.Foreground = Brushes.Red; } using (var context = new MovieRentalEntities()) { var query = context.Credits.Where(c => c.MovieID == current.MovieID).ToList(); foreach (Credit credit in query) { var actor = context.Actors.Where(a => a.ActorID == credit.ActorID).Single(); ActorList.Items.Add(actor); } ActorList.DisplayMemberPath = "FullName"; } } catch (NullReferenceException error) { Console.WriteLine(error.Message); } }
// Search movies by actor name private List <Movie> SearchByActor(string name) { List <Movie> movies = new List <Movie>(); List <Actor> actors = new List <Actor>(); // User entered both first and last name if (name.Contains(" ")) { string first; string last; string[] names = name.Split(' '); first = names[0]; last = names[1]; using (var context = new MovieRentalEntities()) { var firstSearch = context.Actors.Where(a => a.FirstName.Equals(first)).ToList(); var lastSearch = context.Actors.Where(a => a.LastName.Equals(last)).ToList(); actors.AddRange(firstSearch); actors.AddRange(lastSearch); var unique = new HashSet <Actor>(actors); foreach (Actor actor in unique) { string fullName = actor.FirstName + " " + actor.LastName; // Rebuild the full name and check if it is equal to the searched name if (fullName == name) { var actorCredits = context.Credits.Where(credit => credit.ActorID == actor.ActorID).ToList(); // Add every movie the actor has been in to the result set foreach (Credit credit in actorCredits) { var movie = context.Movies.Where(m => m.MovieID == credit.MovieID).FirstOrDefault(); movies.Add(movie); } } } } } else { // User entered either a first name or a last name using (var context = new MovieRentalEntities()) { // E.g - User entered "Chris", find all Chris/Christopher/Christian/etc actors var firstSearch = context.Actors.Where(a => a.FirstName.Contains(name)).ToList(); // E.g - User entered "Pratt", find all actors with last name Pratt or something containing Pratt var lastSearch = context.Actors.Where(a => a.LastName.Contains(name)).ToList(); // Add all matches to the list actors.AddRange(firstSearch); actors.AddRange(lastSearch); var unique = new HashSet <Actor>(actors); foreach (Actor actor in unique) { var actorCredits = context.Credits.Where(credit => credit.ActorID == actor.ActorID).ToList(); // Add every movie the actor has been in to the result set foreach (Credit credit in actorCredits) { var movie = context.Movies.Where(m => m.MovieID == credit.MovieID).FirstOrDefault(); movies.Add(movie); } } } } return(movies); }
private void Rent_Click(object sender, RoutedEventArgs e) { Movie current = (Movie)MovieList.SelectedItem; using (var context = new MovieRentalEntities()) { // The first day of the current month DateTime firstOfMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); var countMonth = "SELECT COUNT(*) FROM dbo.Orders WHERE RentalDate > @date AND AccountNumber = @account"; var countRequests = "SELECT COUNT(*) FROM dbo.Orders WHERE RentalDate IS NULL AND AccountNumber = @account"; var countCurrent = "SELECT COUNT(*) FROM dbo.Orders WHERE AccountNumber = @account AND RentalDate > @date AND ActualReturn IS NULL"; var monthlyOrders = context.Database.SqlQuery <int>(countMonth, new SqlParameter("@date", firstOfMonth), new SqlParameter("@account", customer.AccountNumber)).Single(); var requests = context.Database.SqlQuery <int>(countRequests, new SqlParameter("@account", customer.AccountNumber)).Single(); var currentOrders = context.Database.SqlQuery <int>(countCurrent, new SqlParameter("@account", customer.AccountNumber), new SqlParameter("@date", firstOfMonth)).Single(); Console.WriteLine(currentOrders); int account = customer.AccountType; if ((monthlyOrders == 1 || requests == 1) && account == 0) { MessageBox.Show("You have already rented your movie for the month"); return; } if (account == 1) { if (currentOrders == 1 || requests == 1) { MessageBox.Show("You can only rent one movie at a time. Please return a movie or wait for your previous orders to be approved."); return; } } if (account == 2) { if (currentOrders == 2 || requests == 2) { MessageBox.Show("You can only rent two movies at a time. Please return a movie or wait for your previous orders to be approved."); return; } } if (account == 3) { if (currentOrders == 3 || requests == 3) { MessageBox.Show("You can only rent three movies at a time. Please return a movie or wait for your previous orders to be approved."); return; } } // Order to be approved by an employee Order order = new Order() { MovieID = current.MovieID, AccountNumber = customer.AccountNumber, }; try { context.Orders.Add(order); context.SaveChanges(); MessageBox.Show("Your request to rent " + current.Title + " has been sent"); } catch (DbUpdateException) { } } }