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"); }
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"); } }
public override void OpenSQL(dotnetfinalDbContext db) { throw new NotImplementedException(); }
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..."); } }
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; } }
public abstract void OpenSQL(dotnetfinalDbContext db);