private void AddRandomGenresToDatabase()
        {
            using (var db = new CinameNetworkEntities())
            {
                for (int i = 0; i < numberOfGenres; i++)
                {
                    var genre = GetRandomGenre();
                    db.Genres.Add(genre);
                }

                db.SaveChanges();
            }
        }
        public void GenerateRandomData(string savePath)
        {
            AddRandomGenresToDatabase();

            using (var db = new CinameNetworkEntities())
            {
                var xElement = new XElement("Movies");
                for (int i = 0; i < this.numberOfMovies; i++)
                {
                    Movy movie = GetRandomMovie();

                    // Adding movie to database
                    db.Movies.Add(movie);
                    db.SaveChanges();

                    var xMovie = new XElement(
                        "movie",
                        new XElement("Title", movie.Title),
                        new XElement("GenreId", movie.GenreId),
                        new XElement("ReleaseDate", movie.ReleaseDate),
                        new XElement("Director", movie.Director),
                        new XElement("CountryId", movie.CountryId),
                        new XElement("Description", movie.Description),
                        new XElement("Description", movie.Description),
                        new XElement("Subtitles", "yes"),
                        new XElement("Duration", movie.DurationMinutes));

                    var xActors = new XElement("Actors");
                    foreach (var actor in movie.People)
                    {
                        xActors.Add(new XElement("Actor", actor.PersonId));
                    }

                    xMovie.Add(new XElement("Actors", xActors));

                    xElement.Add(xMovie);
                }

                xElement.Save(savePath);
            }

            System.Console.WriteLine("Random movies added.");
        }
        public static void ImportTowns(string filePath)
        {
            var currentDb = new CinameNetworkEntities();

            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';" +
                         "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\";";
            OleDbConnection MyConnection = new OleDbConnection(connectionString);
            DataSet DtSet;
            OleDbDataAdapter MyCommand;
            MyCommand = new OleDbDataAdapter("select * from [Towns$]", MyConnection);
            MyCommand.TableMappings.Add("Table", "TestTable");
            DtSet = new DataSet();
            MyCommand.Fill(DtSet);

            var recordsCounter = 0;

            System.Console.WriteLine("Importing records from Excel file to database table: ");
            System.Console.WriteLine("------------------------");

            foreach (var town in DtSet.Tables[0].AsEnumerable())
            {
                if (!currentDb.Towns.Select(t => t.Name).ToList().Contains(town[0]))
                {
                    currentDb.Towns.Add(new Town { Name = town[0].ToString() });
                    System.Console.WriteLine("Record added...");
                    recordsCounter++;
                }

                else
                {
                    System.Console.WriteLine("Record found in the table.. continue");
                }
            }

            System.Console.WriteLine("------------------------");
            System.Console.WriteLine("All records added successfully!");
            System.Console.WriteLine("Number of added records: {0}", recordsCounter);

            currentDb.SaveChanges();

            MyConnection.Close();
        }
        public static void InsertNewCountries(int count)
        {
            while (count > 0)
            {
                var rand = new RandomGenerator();

                CinameNetworkEntities northwindEntities = new CinameNetworkEntities();

                Country newEntry = new Country
                {
                    Name = rand.GetRandomString(5, 20)
                };

                northwindEntities.Countries.Add(newEntry);
                northwindEntities.SaveChanges();

                Console.WriteLine("Row affected - new country with movieId {0} created", newEntry.CountryId);
                count--;
            }
        }
        private static OleDbCommand GetCommand(OleDbConnection oleDbConnection, string sheetName)
        {
            var countries = new List<string>();

            var db = new CinameNetworkEntities();

            using (db)
            {
                countries = db.Countries
                                .Select(x => x.Name)
                                .ToList();
            }

            var cmd = new OleDbCommand("INSERT INTO [" + sheetName + "] VALUES (@name, @score)", oleDbConnection);

            for (int i = 0; i < countries.Count; i++)
            {
                cmd.Parameters.AddWithValue("@name", countries[i]);
            }

            return cmd;
        }
        public static void Main(string[] args)
        {
            //int newId = InserNewMovie();
            //Console.WriteLine("Row affected - new movie with movieId {0} created", newId);

            // InsertNewCountries(5);

            var countries = new List<string>();
            var numberOfMoives = new List<int>();

            var db = new CinameNetworkEntities();
            using (db)
            {
                countries = db.Countries
                            .Select(x => x.Name)
                            .ToList();

                numberOfMoives = db.Countries
                        .Select(y => y.Movies.Count)
                        .ToList();
            }

            SqlToExcel.WriteDataToExcelFile(countries, numberOfMoives);
        }
        public static int InserNewMovie()
        {
            var rand = new RandomGenerator();

            CinameNetworkEntities northwindEntities = new CinameNetworkEntities();

            Movy newProduct = new Movy
            {
                Title = rand.GetRandomString(5, 15),
                GenreId = rand.GetRandomInt(1, 1000),
                ReleaseDate = rand.GetRandomDateTime(),
                Director = rand.GetRandomInt(1, 1000),
                Actors = rand.GetRandomInt(1, 100),
                Description = rand.GetRandomString(20, 60),
                CoverLink = rand.GetRandomString(5, 25),
                Subtitles = false,
                DurationMinutes = rand.GetRandomInt(40, 150)
            };

            northwindEntities.Movies.Add(newProduct);
            northwindEntities.SaveChanges();

            return newProduct.MovieId;
        }
        private Movy GetRandomMovie()
        {
            using (var db = new CinameNetworkEntities())
            {
                var genreIds = db.Genres.Select(g => g.GenreId).ToList();
                var countriesIds = db.Countries.Select(c => c.CountryId).ToList();
                var peopleIds = db.People.Select(p => p.PersonId).ToList();
                var people = db.People.ToList();

                var movie = new Movy();
                movie.Title = randomGenerator.GetRandomString(5, 20);
                movie.GenreId = genreIds[randomGenerator.GetRandomInt(0, genreIds.Count - 1)];
                movie.ReleaseDate = randomGenerator.GetRandomDateTime();
                movie.Director = peopleIds[randomGenerator.GetRandomInt(0, peopleIds.Count - 1)];

                var numberOfActors = randomGenerator.GetRandomInt(3, 10);
                for (int i = 0; i < numberOfActors; i++)
                {
                    movie.People.Add(people[randomGenerator.GetRandomInt(0, people.Count - 1)]);
                }

                movie.CountryId = countriesIds[randomGenerator.GetRandomInt(0, countriesIds.Count - 1)];
                movie.Description = randomGenerator.GetRandomString(10, 20);
                movie.Subtitles = false;
                movie.DurationMinutes = randomGenerator.GetRandomInt(5, 200);

                return movie;
            }
        }
        private IEnumerable<GenreModel> GetData(CinameNetworkEntities dbContext)
        {
            var genres = dbContext
                .Genres
                .Select(x => new GenreModel()
                {
                    Name = x.Name,
                    Movies = x.Movies
                    .Select(m => new MovieModel()
                    {
                        Title = m.Title,
                        ReleaseDate = m.ReleaseDate,
                        Director = new PersonModel()
                        {
                            FirstName = m.Person.FirstName,
                            LastName = m.Person.LastName,
                            Gender = m.Person.Gender.Type,
                            BirthYear = m.Person.BirthYear,
                            Origin = m.Person.Country.Name
                        },
                        Actors = m.People
                            .Select(a => new PersonModel()
                            {
                                FirstName = a.FirstName,
                                LastName = a.LastName,
                                Gender = a.Gender.Type,
                                BirthYear = a.BirthYear,
                                Origin = a.Country.Name
                            })
                            .ToList(),
                        Country = m.Country.Name,
                        Description = m.Description,
                        CoverLink = m.CoverLink,
                        HasSubtitles = m.Subtitles,
                        Duration = m.DurationMinutes
                    })
                    .ToList()
                })
                .ToList();

            return genres;
        }
 public XmlReportGenerator(CinameNetworkEntities dbContext)
 {
     this.dbContext = dbContext;
 }