Ejemplo n.º 1
0
        public override void OpenSQL(dotnetfinalDbContext db)
        {
            //Console.WriteLine("example MovieGenre: " + JsonConvert.SerializeObject(db.MovieGenres.First()));
            //MovieContext db = new MovieContext();
            //Console.WriteLine(" movie count " + db.Movies.Count());
            foreach (DataModels.DB.Movie loopItem in db.Movies)
            {
                //==DEBUG==
                //Console.WriteLine("Json of cur object: \n" + JsonConvert.SerializeObject(loopItem));
                List <String> tGenres;
                tGenres = new List <string> {
                };
                int    id    = Convert.ToInt32(loopItem.Id);
                string title = loopItem.Title;

                //Get the genres
                foreach (DataModels.DB.MovieGenre loopGenre in loopItem.MovieGenres)
                {
                    tGenres.Add(loopGenre.Genre.Name);
                }

                //Check for nulls
                if (id == 0)
                {
                    throw new ArgumentNullException("ID for movie " + loopItem.Title + " returned null");
                }
                else if (title is null || title == "")
                {
                    throw new ArgumentNullException("Title for movie  with id " + id + " returned null");
                }
Ejemplo n.º 2
0
 private Movie searchForMovie(dotnetfinalDbContext db)
 {
     while (true)
     {
         Console.WriteLine("Enter the title part you would like to search by (Spaces are included in search)");
         Movie possibleMovie = db.Movies.Where(m => m.Title.Contains(Console.ReadLine())).FirstOrDefault();
         if (possibleMovie != null)
         {
             Console.WriteLine("Is " + possibleMovie.Title + " the movie you were looking for? (Y/n)");
             if (Console.ReadLine().ToLower() != "n")
             {
                 return(possibleMovie);
             }
         }
         else
         {
             Console.WriteLine("ERROR: No movie found!");
         }
         Console.WriteLine("Restartng, please change your search");
     }
 }
Ejemplo n.º 3
0
 public override void OpenSQL(dotnetfinalDbContext db)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 4
0
        public void handleUserDatabase(dotnetfinalDbContext db)
        {
            bool done          = false;
            User userToBeAdded = null;

            while (!done)
            {
                //TODO: Add input checks

                Console.WriteLine("Please answer the following questions.");
                Console.Write("Age: ");
                int age = Convert.ToInt32(Console.ReadLine());
                Console.Write("Biological Sex (Female, Male, or Other): ");
                string sex = Console.ReadLine().ToUpper().Substring(0, 1);
                Console.Write("Zip code: ");
                string zip = Console.ReadLine();
                userToBeAdded = new User()
                {
                    Age = age, Gender = sex, ZipCode = zip
                };

                string     jobTitle;
                Occupation foundJob;
                while (true)
                {
                    foreach (Occupation job in db.Occupations)
                    {
                        Console.WriteLine(job.Name);
                    }
                    Console.Write("Please select your ocupation from the above list: ");
                    jobTitle = Console.ReadLine();
                    foundJob = db.Occupations.Where(o => o.Name.Contains(jobTitle)).FirstOrDefault();
                    if (foundJob != null)
                    {
                        userToBeAdded.Occupation   = foundJob;
                        userToBeAdded.OccupationId = foundJob.Id;
                        break;
                    }
                    else
                    {
                        Console.WriteLine("Not a valid job, please try again.");
                    }
                }

                Console.WriteLine("User will be created will following values: \n" +
                                  "Age: " + age + "\n" +
                                  "Gender: " + sex + " \n" +
                                  "ZipCode: " + zip + "\n" +
                                  "Occupation: " + jobTitle + "\n" +
                                  "Is the above information correct? (Y/n)");
                if (Console.ReadLine().ToUpper() == "N")
                {
                    Console.WriteLine("restarting user creation...");
                }
                else
                {
                    db.Users.Add(userToBeAdded);
                    done = true;
                    Console.WriteLine("Exiting user creation and saving...");
                }
            }
            db.SaveChanges();
            Console.WriteLine("Would you like to rate any movies as this user? (Y/n)");
            if (Console.ReadLine().ToUpper() != "N")
            {
                if (userToBeAdded == null)
                {
                    throw new Exception("User is null, yet trying to rate a movie");
                }
                while (true)
                {
                    Movie searchedMovie = searchForMovie(db);
                    int   ratingNum;
                    while (true)
                    {
                        Console.WriteLine("What would you rate this movie out of 5?");
                        ratingNum = Convert.ToInt32(Console.ReadLine());
                        if (ratingNum >= 1 && ratingNum <= 5)
                        {
                            break;
                        }
                        else
                        {
                            Console.WriteLine("Invalid rating, please try again.");
                        }
                    }
                    UserMovie rating = new UserMovie
                    {
                        User    = userToBeAdded,
                        Movie   = searchedMovie,
                        RatedAt = DateTime.Now,
                        Rating  = ratingNum
                    };
                    Console.WriteLine("You rated " + searchedMovie.Title + " " + ratingNum + "/5");
                    db.Add(rating);
                    db.SaveChanges();
                    Console.WriteLine("Are you done adding ratings? (y/N)");
                    if (Console.ReadLine().ToLower().Equals("y"))
                    {
                        break;
                    }
                }
            }
            else
            {
                Console.WriteLine("Closing application...");
            }
        }
Ejemplo n.º 5
0
        public void handleMediaSqlOperation(dotnetfinalDbContext db)
        {
            bool done = false;

            while (!done)
            {
                Console.Write("What action would you like to take? \n 1. Search for an item (Includes Criterion Searches) \n 2. Add an item \n 3. Update an item \n 4. Delete an item (WILL DELETE ALL ASSOCIATED RECORDS!) \n Action Number: ");
                switch (Convert.ToInt32(Console.ReadLine()))
                {
                case 1:     //Search & Stats
                    Console.WriteLine("Options for searching: \n 1. Basic Search \n 2. Top Rated by criterion");
                    switch (Convert.ToInt32(Console.ReadLine()))
                    {
                    //Basic Search
                    case 1:
                        Movie movie = searchForMovie(db);
                        printMovieDetails(movie);
                        break;

                    //Rating by bracket
                    case 2:
                        while (true)
                        {
                            Console.WriteLine("Sort by Occupation or Age? (O/A)");
                            string bracket = Console.ReadLine().Substring(0, 1).ToUpper();
                            if (bracket.Equals("O"))
                            {
                                Occupation foundJob;
                                //Loop for getting occupation to sort by
                                while (true)
                                {
                                    foreach (Occupation job in db.Occupations)
                                    {
                                        Console.WriteLine(job.Name);
                                    }
                                    Console.Write("Occupation from above list to sort by: ");
                                    String jobTitle = Console.ReadLine();
                                    foundJob = db.Occupations.Where(o => o.Name.Contains(jobTitle)).FirstOrDefault();
                                    if (foundJob != null)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        Console.WriteLine("Not a valid job, please try again.");
                                    }
                                }
                                //Use the occupation to print results
                                Console.WriteLine("Printing first movie rating by users with occupation " + foundJob.Name);
                                UserMovie data = db.UserMovies.Where(um => um.User.Occupation == foundJob).OrderBy(um => um.Movie.Title).FirstOrDefault();
                                if (data != null)
                                {
                                    Console.WriteLine(data.Movie.Title + "  |  " + data.Rating + "/5");
                                }
                                else
                                {
                                    Console.WriteLine("No ratings found for that occupation.");
                                }
                                break;
                            }
                            else if (bracket.Equals("A"))
                            {
                                //Loop to find proper age
                                int sortAge;
                                while (true)
                                {
                                    Console.WriteLine("What age would you like to sort by?");
                                    sortAge = Convert.ToInt32(Console.ReadLine());
                                    if (sortAge >= 1 || sortAge <= 150)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        Console.WriteLine("Please enter a valid age (between 1 and 150)");
                                    }
                                }
                                UserMovie data = db.UserMovies.Where(um => um.User.Age == sortAge).OrderBy(um => um.Movie.Title).FirstOrDefault();
                                if (data != null)
                                {
                                    Console.WriteLine(data.Movie.Title + "  | Rated: " + data.Rating + "/5");
                                }
                                else
                                {
                                    Console.WriteLine("No ratings found for that occupation.");
                                }
                                break;
                            }
                            else
                            {
                                Console.WriteLine("Not a valid choice, please try again.");
                            }
                        }
                        break;
                    }
                    break;

                case 2:     //Add
                    bool adding = true;
                    while (adding)
                    {
                        Console.Write("Title: ");
                        string title = Console.ReadLine();
                        if (title != null && title.Length > 0)
                        {
                            Console.WriteLine("Release Date (yyyy-mm-dd): ");
                            string date = Console.ReadLine();
                            if (date.Length == 10)
                            {
                                //0 is year, 1 is month, 2 is day
                                string[] dateFormat  = date.Split('-');
                                DateTime releaseDate = new DateTime(
                                    Convert.ToInt32(dateFormat[0]),     //Year
                                    Convert.ToInt32(dateFormat[1]),     //Month
                                    Convert.ToInt32(dateFormat[2]));    //Day

                                //Create the movie
                                Movie thisMovie = new Movie
                                {
                                    Title       = title,
                                    ReleaseDate = releaseDate,
                                    //Id = db.Movies.OrderBy(item => item.Id).Last().Id + 1,
                                };

                                //Find the Genres allowed
                                string allowedGenres = "";
                                foreach (var genre in db.Genres)
                                {
                                    allowedGenres += "" + genre.Name + ", ";
                                }

                                //Ask what genres to use
                                Console.WriteLine("Please choose genres for movie (You can choose more than one by using this format: Comedy|Romance|Action) \n" +
                                                  "Avaialable genres: \n " + allowedGenres);
                                string[]          chosenGenres    = Console.ReadLine().Split('|');
                                List <MovieGenre> movieGenresUsed = new List <MovieGenre> {
                                };

                                //Add the genres to the movie
                                foreach (string genre in chosenGenres)
                                {
                                    //Console.WriteLine("Looking for genre " + genre);
                                    Genre tempGenre = db.Genres.Where(tG => tG.Name.ToLower().Equals(genre.ToLower())).FirstOrDefault();
                                    //Console.WriteLine("Found genre! JSON: \n " + JsonConvert.SerializeObject(tempGenre));
                                    if (tempGenre != null)
                                    {
                                        MovieGenre tempMovieGenre = new MovieGenre()
                                        {
                                            Movie = thisMovie,
                                            //MovieId = thisMovie.Id,
                                            Genre = tempGenre,
                                            //GenreId = tempGenre.Id,
                                        };
                                        thisMovie.MovieGenres.Add(tempMovieGenre);
                                        movieGenresUsed.Add(tempMovieGenre);
                                    }
                                    else
                                    {
                                        Console.WriteLine("Error in your genre " + genre + ", skipping.");
                                    }
                                }

                                //Check to make sure everything is ok to user
                                Console.WriteLine("Are the above notices acceptable? (Y/n)");

                                if (!(Console.ReadLine().ToLower().Equals('n')))
                                {
                                    //Actually add the movie
                                    db.Movies.Add(thisMovie);
                                    //Add the movie genres
                                    Console.WriteLine("Got here");
                                    //Console.WriteLine(JsonConvert.SerializeObject(movieGenresUsed[0]));
                                    foreach (MovieGenre movieGenre in movieGenresUsed)
                                    {
                                        db.MovieGenres.Add(movieGenre);
                                    }
                                    //Save changes
                                    db.SaveChanges();
                                    adding = false;
                                }
                                else
                                {
                                    Console.WriteLine("Repeating...");
                                }
                            }
                            else
                            {
                                Console.WriteLine("Error in date format, please try again.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Error in name format, please try again.");
                        }
                    }
                    break;

                case 3:     //Update
                    bool updating = true;
                    while (updating)
                    {
                        Movie movieToUpdate = searchForMovie(db);
                        Console.WriteLine(movieToUpdate.Title + " selected...");
                        printMovieDetails(movieToUpdate);
                        db.Attach(movieToUpdate);
                        Console.WriteLine("What would you like to update? \n 1. Title \n 2. Release date");
                        DateTime modifiedDate;
                        string   modifiedTitle;
                        switch (Convert.ToInt32(Console.ReadLine()))
                        {
                        case 1:         //Title
                            while (true)
                            {
                                Console.WriteLine("What would you like the new title to be?");
                                modifiedTitle = Console.ReadLine();
                                if (modifiedTitle != null)
                                {
                                    movieToUpdate.Title = modifiedTitle;
                                    db.Entry(movieToUpdate).Property("Title").IsModified = true;
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("Error, title cannot be empty, restarting...");
                                }
                            }
                            break;

                        case 2:         //Release Date
                            while (true)
                            {
                                Console.WriteLine("What would you like the new date to be? (yyyy-mm-dd)");
                                string date = Console.ReadLine();
                                if (date.Length == 10)
                                {
                                    //0 is year, 1 is month, 2 is day
                                    string[] dateFormat = date.Split('-');
                                    modifiedDate = new DateTime(
                                        Convert.ToInt32(dateFormat[0]),         //Year
                                        Convert.ToInt32(dateFormat[1]),         //Month
                                        Convert.ToInt32(dateFormat[2]));        //Day
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("Error in format, please try again.");
                                }
                            }
                            db.Entry(movieToUpdate).Property("ReleaseDate").IsModified = true;
                            break;
                        }
                        Console.WriteLine("Is the above information correct? (Y/n)");
                        db.SaveChanges();
                        if (!Console.ReadLine().ToLower().Equals('n'))
                        {
                            updating = false;
                        }
                    }
                    break;

                case 4:     //Delete
                    bool deleting = true;
                    while (deleting)
                    {
                        Movie movieToDelete = searchForMovie(db);
                        //Delete any associated MovieGenre
                        foreach (MovieGenre i in db.MovieGenres.Where(mg => mg.MovieId == movieToDelete.Id))
                        {
                            db.Remove(i);
                        }
                        //Delete any reviews
                        foreach (UserMovie i in db.UserMovies.Where(um => um.MovieId == movieToDelete.Id))
                        {
                            db.Remove(i);
                        }
                        //Delete movie
                        db.Remove(movieToDelete);
                        db.SaveChanges();
                        break;
                    }
                    break;
                }
                break;
            }
        }
Ejemplo n.º 6
0
 public abstract void OpenSQL(dotnetfinalDbContext db);