private static void SeedMovies(string jsonMovies, MoviesModel context)
        {
            var movies = JArray.Parse(jsonMovies);
            foreach (JToken movie in movies)
            {
                AgeRestriction movieRestriction;
                if (movie["ageRestriction"].ToString() == "0")
                {
                    movieRestriction = AgeRestriction.Child;
                }
                else if (movie["ageRestriction"].ToString() == "1")
                {
                    movieRestriction = AgeRestriction.Teen;
                }
                else
                {
                    movieRestriction = AgeRestriction.Adult;
                }

                Movie dbMovie = new Movie()
                {
                    Title = movie["title"].ToString(),
                    Isbn = movie["isbn"].ToString(),
                    AgeRestriction = movieRestriction,
                };
                context.Movies.Add(dbMovie);
            }
            context.SaveChanges();
        }
Exemplo n.º 2
0
        static void Main()
        {
            var context = new MoviesModel();

            //1. Adult Movies
            var adultMovies = context.Movies
                .Where(m => m.AgeRestriction == AgeRestriction.Adult)
                .Select(m => new
                {
                    title = m.Title,
                    ratingsGiven = m.Ratings.Count()
                })
                .ToList();

            var jsonAdultMovies = new JavaScriptSerializer().Serialize(adultMovies);
            File.WriteAllText("../../adult-movies.json", jsonAdultMovies);

            //2. Rated Movies by User
            var ratedMoviesByUser = context.Users
                .Where(u => u.Username == "pmoore0")
                .Select(u => new
                {
                    u.Id,
                    username = u.Username,
                    ratedMovies = u.Movies
                        .Select(m => new
                        {
                            title = m.Title,
                            //USER RATING IS WRONG, fix it!
                            userRating = m.Ratings.Where(r => r.UserId == u.Id)
                                .Select(r => r.Stars),
                            averageRating = m.Ratings.Average(r => r.Stars)
                        })
                        .OrderBy(m => m.title)
                })
                .ToList();

            var jsonRatedMovies = new JavaScriptSerializer().Serialize(ratedMoviesByUser);
            File.WriteAllText("../../rated-movies.json", jsonRatedMovies);

            //3. Top 10 Favourite Movies

            var favouriteMovies = context.Movies
                .Where(m => m.AgeRestriction == AgeRestriction.Teen)
                .Select(m => new
                {
                    isbn = m.Isbn,
                    title = m.Title,
                    favouritedBy = m.Users
                        .Select(u => u.Username)
                })
                .OrderByDescending(m => m.favouritedBy.Count())
                .ThenBy(m => m.title)
                .Take(10)
                .ToList();

            var jsonFavouriteMovies = new JavaScriptSerializer().Serialize(favouriteMovies);
            File.WriteAllText("../../top-10-favourite-movies.json", jsonFavouriteMovies);
        }
 private static void SeedCountries(string jsonCountries, MoviesModel context)
 {
     var countries = JArray.Parse(jsonCountries);
     foreach (JToken country in countries)
     {
         Country dbCountry = new Country()
         {
             Name = country["name"].ToString()
         };
         context.Countries.Add(dbCountry);
     }
     context.SaveChanges();
 }
        private static void SeedFavouriteMovies(string jsonFavouriteMovies, MoviesModel context)
        {
            var userMovies = JArray.Parse(jsonFavouriteMovies);
            foreach (JToken userMovie in userMovies)
            {
                string user = userMovie["username"].ToString();
                var dbUser = context.Users.FirstOrDefault(u => u.Username == user);

                foreach (var favourite in userMovie["favouriteMovies"])
                {
                    string fv = favourite.ToString();
                    var dbMovie = context.Movies.FirstOrDefault(m => m.Isbn == fv);

                    dbUser.Movies.Add(dbMovie);
                }
            }
            context.SaveChanges();
        }
        static void Main()
        {
            var context = new MoviesModel();

            string jsonCountries = File.ReadAllText("../../countries.json");
            SeedCountries(jsonCountries, context);

            string jsonUsers = File.ReadAllText("../../users.json");
            SeedUsers(jsonUsers, context);

            string jsonMovies = File.ReadAllText("../../movies.json");
            SeedMovies(jsonMovies, context);

            string jsonRatings = File.ReadAllText("../../movie-ratings.json");
            SeedRatings(jsonRatings, context);

            string jsonFavouriteMovies = File.ReadAllText("../../users-and-favourite-movies.json");
            SeedFavouriteMovies(jsonFavouriteMovies, context);
        }
        private static void SeedUsers(string jsonUsers, MoviesModel context)
        {
            var users = JArray.Parse(jsonUsers);
            foreach (JToken user in users)
            {
                string age = null;
                if (user["age"] != null)
                {
                    age = user["age"].ToString();
                }

                User dbUser = new User()
                {
                    Username = user["username"].ToString(),
                    Age = age,
                    Email = user["email"].ToString()
                };
                context.Users.Add(dbUser);
            }
            context.SaveChanges();
        }
        private static void SeedRatings(string jsonRatings, MoviesModel context)
        {
            var ratings = JArray.Parse(jsonRatings);
            foreach (JToken rating in ratings)
            {
                string isbn = rating["movie"].ToString();
                string user = rating["user"].ToString();

                int movieId = context.Movies.FirstOrDefault(m => m.Isbn == isbn).Id;
                int userId = context.Users.FirstOrDefault(u => u.Username == user).Id;

                Rating dbRating = new Rating()
                {
                    MovieId = movieId,
                    UserId = userId,
                    Stars = int.Parse(rating["rating"].ToString())
                };
                context.Ratings.Add(dbRating);
            }
            context.SaveChanges();
        }