public int AddBatchMovieActorMap(Movie movie, List <Actor> actors)
        {
            if (movie == null)
            {
                throw new Exception("Movie is null");
            }

            if (actors == null)
            {
                throw new Exception("Actors list is empty");
            }

            foreach (var actor in actors)
            {
                if (actor == null)
                {
                    continue;
                }

                var movieActorMapping = new MovieActorMapping
                {
                    Movie = movie,
                    Actor = actor
                };

                _context.MovieActorMappings.Add(new MovieActorMapping()
                {
                    MovieId = movie.Id, ActorId = actor.Id
                });
            }

            var records = _context.SaveChanges();

            return(records);
        }
        public ActorCreationData UpdateSec(ActorCreationData actorCreationData)
        {
            using (var entityContext = new MovieDbContext())
            {
                // peki existing null ise?
                var existingActor = (from x in entityContext.ActorSet where x.Id == actorCreationData.Id select x).FirstOrDefault();
                SimpleMapper.PropertyMap(actorCreationData, existingActor);

                var currentMovieActorMappings = entityContext.MovieActorMappingSet.Where(t => t.ActorId == actorCreationData.Id).ToList();

                if (actorCreationData.MovieIds == null)
                {
                    actorCreationData.MovieIds = new int[] {}
                }
                ;

                if (currentMovieActorMappings.Count > actorCreationData.MovieIds.Count())
                {
                    for (int i = 0; i < actorCreationData.MovieIds.Count(); i++)
                    {
                        currentMovieActorMappings[i].MovieId = actorCreationData.MovieIds[i];
                    }
                    //2
                    for (int i = actorCreationData.MovieIds.Count(); i < currentMovieActorMappings.Count; i++)
                    {
                        entityContext.MovieActorMappingSet.Remove(currentMovieActorMappings[i]);
                    }
                    entityContext.SaveChanges();
                }
                else
                {
                    int index = 0;
                    foreach (var currentGenreMap in currentMovieActorMappings)
                    {
                        currentGenreMap.MovieId = actorCreationData.MovieIds[index];
                        index++;
                    }

                    if (actorCreationData.MovieIds.Count() != currentMovieActorMappings.Count)
                    {
                        for (int i = index; i < actorCreationData.MovieIds.Count(); i++)
                        {
                            var newMovieActorMapping = new MovieActorMapping()
                            {
                                ActorId = actorCreationData.Id, MovieId = actorCreationData.MovieIds[i]
                            };
                            entityContext.MovieActorMappingSet.Add(newMovieActorMapping);
                        }
                    }
                    entityContext.SaveChanges();
                }
            }

            return(null);
        }
        public int AddMovieActorMap(Movie movie, Actor actor)
        {
            if (movie == null)
            {
                throw new Exception("Movie is null");
            }

            if (actor == null)
            {
                throw new Exception("Actor is null");
            }

            var movieActorMapping = new MovieActorMapping
            {
                Movie = movie,
                Actor = actor
            };

            _context.Add(movieActorMapping);

            var records = _context.SaveChanges();

            return(records);
        }
        public MovieCreationData UpdateSec(MovieCreationData movieCreationData)
        {
            if (movieCreationData.GenreIds == null)
            {
                movieCreationData.GenreIds = new int[] {}
            }
            ;

            if (movieCreationData.SubGenreIds != null && movieCreationData.SubGenreIds.Count() > 0)
            {
                movieCreationData.GenreIds = movieCreationData.GenreIds.Union(movieCreationData.SubGenreIds).ToArray();
            }

            using (var entityContext = new MovieDbContext())
            {
                var existingMovie = (from m in entityContext.MovieSet where m.Id == movieCreationData.Id select m).FirstOrDefault();
                SimpleMapper.PropertyMap(movieCreationData, existingMovie);
                entityContext.SaveChanges();

                // ADIM 1 //
                var currentGenreMappings = entityContext.MovieGenreMappingSet.Where(t => t.MovieId == movieCreationData.Id).ToList();

                // (True ise) Güncel Movie'de, veritabanındaki haline kıyasla, daha az Genre (Mapping) bulunmakta..
                if (currentGenreMappings.Count > movieCreationData.GenreIds.Count())
                {
                    for (int i = 0; i < movieCreationData.GenreIds.Count(); i++)
                    {
                        currentGenreMappings[i].GenreId = movieCreationData.GenreIds[i];
                    }
                    //2
                    for (int i = movieCreationData.GenreIds.Count(); i < currentGenreMappings.Count; i++)
                    {
                        entityContext.MovieGenreMappingSet.Remove(currentGenreMappings[i]);
                    }
                    entityContext.SaveChanges();
                }
                else
                {
                    int index = 0;
                    foreach (var currentGenreMap in currentGenreMappings)
                    {
                        currentGenreMap.GenreId = movieCreationData.GenreIds[index];
                        index++;
                    }

                    if (movieCreationData.GenreIds.Count() != currentGenreMappings.Count)
                    {
                        for (int i = index; i < movieCreationData.GenreIds.Count(); i++)
                        {
                            var newGenreMapping = new MovieGenreMapping()
                            {
                                MovieId = movieCreationData.Id, GenreId = movieCreationData.GenreIds[i]
                            };
                            entityContext.MovieGenreMappingSet.Add(newGenreMapping);
                        }
                    }
                    entityContext.SaveChanges();
                }

                // ADIM 2 //
                var currentActorMappings = entityContext.MovieActorMappingSet.Where(t => t.MovieId == movieCreationData.Id).ToList();

                // (True ise) Güncel Movie'de, veritabanındaki haline kıyasla, daha az Actor (Mapping) bulunmakta..
                if (movieCreationData.ActorIds.Count() < currentActorMappings.Count)
                {
                    for (int i = 0; i < movieCreationData.ActorIds.Count(); i++)
                    {
                        currentActorMappings[i].ActorId = movieCreationData.ActorIds[i];
                    }
                    //2
                    for (int i = movieCreationData.ActorIds.Count(); i < currentActorMappings.Count; i++)
                    {
                        entityContext.MovieActorMappingSet.Remove(currentActorMappings[i]);
                    }
                    entityContext.SaveChanges();
                }
                else
                {
                    int index = 0;
                    foreach (var currentActorMap in currentActorMappings)
                    {
                        currentActorMap.ActorId = movieCreationData.ActorIds[index];
                        index++;
                    }

                    if (movieCreationData.ActorIds.Count() != currentActorMappings.Count)
                    {
                        for (int i = index; i < movieCreationData.ActorIds.Count(); i++)
                        {
                            var newActorMapping = new MovieActorMapping()
                            {
                                MovieId = movieCreationData.Id, ActorId = movieCreationData.ActorIds[i]
                            };
                            entityContext.MovieActorMappingSet.Add(newActorMapping);
                        }
                    }
                    entityContext.SaveChanges();
                }
            }
            return(movieCreationData);
        }
Exemple #5
0
        public static void SeedActorsTop1000()
        {
            var actors = XDocument.Load(@"C:\seed\New_\active.xml");

            var actorsName      = actors.Elements("Top1000").Elements("Actor").Elements("Name").Select(t => t.Value).ToList();
            var actorsConst     = actors.Elements("Top1000").Elements("Actor").Elements("Const").Select(t => t.Value).ToList();
            var actorsKnownFor  = actors.Elements("Top1000").Elements("Actor").Elements("KnownFor").Select(t => t.Value).ToList();
            var actorsIsMale    = actors.Elements("Top1000").Elements("Actor").Elements("IsMale").Select(t => t.Value).ToList();
            var actorsBirthDate = actors.Elements("Top1000").Elements("Actor").Elements("Birth").Select(t => t.Value).ToList();
            var forCount        = actorsName.Count;

            var list = new List <string>();
            var firstLastNameSeperated = new List <Seeder.FirstLastName>();

            foreach (var actorFullName in actorsName)
            {
                var splitted = actorFullName.Split(' ');
                switch (splitted.Count())
                {
                case 1:
                    list.Add(actorFullName);
                    break;

                case 2:
                    firstLastNameSeperated.Add(new Seeder.FirstLastName()
                    {
                        First = splitted[0], Last = splitted[1]
                    });
                    break;

                case 3:
                    firstLastNameSeperated.Add(new Seeder.FirstLastName()
                    {
                        First = splitted[0], Last = splitted[1] + " " + splitted[2]
                    });
                    break;

                case 4:
                    firstLastNameSeperated.Add(new Seeder.FirstLastName()
                    {
                        First = splitted[0], Last = splitted[1] + " " + splitted[2] + " " + splitted[3]
                    });
                    break;
                }
            }

            var birthdateFinal = new List <DateTime>();

            foreach (var year in actorsBirthDate)
            {
                DateTime dateOut;
                DateTime.TryParse(year, out dateOut);
                var dateFinal = dateOut.ToShortDateString();

                birthdateFinal.Add(dateOut);
            }

            using (var context = new MovieDbContext())
            {
                for (int i = 0; i < forCount; i++)
                {
                    var   actorKnownForMovieId = actorsKnownFor[i];
                    Movie isThereAmovie        = context.MovieSet.FirstOrDefault(t => t.ImdbLink == actorKnownForMovieId);

                    if (isThereAmovie != null) // Film var mı? : Film var.
                    {
                        // Peki aktör var mı?
                        string actorName      = actorsName[i];
                        Actor  isThereAnActor = context.ActorSet.FirstOrDefault(t => t.FullName == actorName);

                        if (isThereAnActor == null) // böyle bir aktör yok (map da olamaz). ama bu aktörün (known for) movie'si var.
                        {
                            var actorToDb = new Actor()
                            {
                                Biography = "",
                                BirthDate = birthdateFinal[i],
                                CreatedAt = isThereAmovie.CreatedAt,
                                DeathDate = null,
                                FirstName = firstLastNameSeperated[i].First,
                                LastName  = firstLastNameSeperated[i].Last,
                                FullName  = actorsName[i],
                                Gender    = Convert.ToBoolean(actorsIsMale[i]),
                                CountryId = 1,
                                CountyId  = 1,
                                StateId   = 1,
                                ImdbLink  = actorsConst[i],
                                Photo     = "null"
                            };
                            context.ActorSet.Add(actorToDb);
                            context.SaveChanges();

                            context.MovieActorMappingSet.Add(new MovieActorMapping()
                            {
                                MovieId = isThereAmovie.Id,
                                ActorId = actorToDb.Id
                            });
                            context.SaveChanges();
                        }
                        else
                        {
                            // böyle bir aktör var. Film de vardı. O zaman map yapma zamanı.
                            // Tabii hali hazırda map yoksa...

                            // önce gender ayarı


                            MovieActorMapping mp = context.MovieActorMappingSet
                                                   .FirstOrDefault(t => t.MovieId == isThereAmovie.Id && t.ActorId == isThereAnActor.Id);

                            if (mp == null) // map yok
                            {
                                context.MovieActorMappingSet.Add(new MovieActorMapping()
                                {
                                    MovieId = isThereAmovie.Id,
                                    ActorId = isThereAnActor.Id
                                });
                                context.SaveChanges();
                            }
                        }
                    }
                    else
                    {
                        // Actor için KnownFor FİLM YOK. Peki böyle bir Actor var mı?
                        string actorName      = actorsName[i];
                        Actor  isThereAnActor = context.ActorSet.FirstOrDefault(t => t.FullName == actorName);

                        if (isThereAnActor == null) // böyle bir aktör de YOK: ekle o zaman.
                        {
                            var actorToDb = new Actor()
                            {
                                Biography = "",
                                BirthDate = birthdateFinal[i],
                                CreatedAt = DateTime.Now,
                                DeathDate = null,
                                FirstName = firstLastNameSeperated[i].First,
                                LastName  = firstLastNameSeperated[i].Last,
                                FullName  = actorsName[i],
                                Gender    = Convert.ToBoolean(actorsIsMale[i]),
                                CountryId = 1,
                                CountyId  = 1,
                                StateId   = 1,
                                ImdbLink  = actorsConst[i],
                                Photo     = "null"
                            };
                            context.ActorSet.Add(actorToDb);
                            context.SaveChanges();
                        }
                    }
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// Bu metot 246 filmde oynayan aktörlerin isimlerini alıyor
        /// Bu isimlerde veritabanında aktör var ise
        /// Bu aktörler ile ActorMovieMap tablosunu seed'liyor.
        /// Aktör yok ise bir şey yapmıyor
        /// DUPLICATE SORUNU YOK
        /// </summary>
        private static void Seed_RatedMoviesXML_MovieInfo_Actors()
        {
            var listXMContainer = new List <XMLContainer>();
            var xdocList        = new List <XDocument>();

            var xdocActors = new List <string>();

            var folderPath = @"C:\seed\xml\";

            foreach (string file in Directory.EnumerateFiles(folderPath, "*.xml"))
            {
                string contents = File.ReadAllText(file, Encoding.UTF8);
                xdocList.Add(XDocument.Parse(contents));
            }

            foreach (XDocument xDocument in xdocList)
            {
                var container = new XMLContainer();
                container.Actors = new List <string>();

                foreach (var xx in xDocument.Descendants("movie").Attributes())
                {
                    switch (xx.Name.ToString())
                    {
                    case "actors":
                        var splitted = xx.Value.Split(',');
                        foreach (var per in splitted)
                        {
                            if (per[0].ToString() == " ")
                            {
                                xdocActors.Add(per.Remove(0, 1));
                                container.Actors.Add(per.Remove(0, 1));
                            }
                            else
                            {
                                xdocActors.Add(per);
                                container.Actors.Add(per);
                            }
                        }
                        break;

                    case "plot":
                        container.Plot = xx.Value;
                        break;

                    case "language":
                        container.Language = xx.Value;
                        break;

                    case "imdbID":
                        container.ImdbId = xx.Value;
                        break;
                    }
                }
                listXMContainer.Add(container);
            }

            using (var context = new MovieDbContext())
            {
                foreach (var xmlContainer in listXMContainer)
                {
                    var movie = (from m in context.MovieSet
                                 where m.ImdbLink == xmlContainer.ImdbId
                                 select m).First();

                    movie.PlotOutline = xmlContainer.Plot;

                    foreach (var actor in xmlContainer.Actors)
                    {
                        var possibleNullActor = context.ActorSet.FirstOrDefault(t => t.FullName == actor);
                        if (possibleNullActor == null)
                        {
                            // aktör yoksa bir şey yapma
                        }
                        else
                        {
                            // aktör var
                            // peki hali hazırda map var mı?

                            MovieActorMapping possibleNullMap =
                                context.MovieActorMappingSet.FirstOrDefault(
                                    t => t.MovieId == movie.Id && t.ActorId == possibleNullActor.Id);

                            if (possibleNullMap == null) // map yok
                            {
                                context.MovieActorMappingSet.Add(new MovieActorMapping()
                                {
                                    ActorId = possibleNullActor.Id,
                                    MovieId = movie.Id,
                                });
                                context.SaveChanges();
                            }
                        }
                    }

                    string movieLanguage        = xmlContainer.Language.Split(',')[0];
                    var    possibleNullLanguage = context.LanguageSet.FirstOrDefault(t => t.Name == movieLanguage);

                    if (possibleNullLanguage == null)
                    {
                        var language = new Language()
                        {
                            Name = movieLanguage
                        };
                        context.LanguageSet.Add(language);
                        context.SaveChanges();

                        movie.LanguageId = language.Id;
                    }
                    else
                    {
                        movie.LanguageId = possibleNullLanguage.Id;
                        context.SaveChanges();
                    }
                }
            }
        }