private void InitializeFields()
        {
            this.firstGenre = new Genre
            {
                Name = "Drama",
            };

            this.firstCountry = new Country
            {
                Name = "USA",
            };

            this.firstDirector = new Director
            {
                FirstName = "Peter",
                LastName  = "Kirilov",
            };

            this.firstMovie = new Movie
            {
                Name           = "Titanic",
                DateOfRelease  = DateTime.UtcNow,
                Resolution     = "HD",
                Rating         = 7.50m,
                Description    = "Test description here",
                Language       = "English",
                CinemaCategory = CinemaCategory.B,
                TrailerPath    = "test trailer path",
                CoverPath      = TestCoverImageUrl,
                WallpaperPath  = TestWallpaperImageUrl,
                IMDBLink       = "test imdb link",
                Length         = 120,
                DirectorId     = 1,
            };

            this.firstMovieGenre = new MovieGenre
            {
                GenreId = 1,
                MovieId = 1,
            };

            this.firstMovieCountry = new MovieCountry
            {
                CountryId = 1,
                MovieId   = 1,
            };
        }
        private async Task UpdateMovieCountries(MovieEditViewModel model, Movie movie)
        {
            for (int i = 0; i < model.SelectedCountries.Count; i++)
            {
                var movieCountry = new MovieCountry
                {
                    MovieId   = movie.Id,
                    CountryId = model.SelectedCountries[i],
                };

                await this.movieCountriesRepository.AddAsync(movieCountry);

                movie.MovieCountries.Add(movieCountry);
            }

            await this.movieCountriesRepository.SaveChangesAsync();

            await this.moviesRepository.SaveChangesAsync();
        }
        //----------------------------------------------------------------//

        public async Task <List <MovieCountry> > SaveMovieCountriesAsync(Movie movie, IEnumerable <ProductionCountry> countries)
        {
            List <MovieCountry> movieCountries = new List <MovieCountry>();

            foreach (ProductionCountry country in countries)
            {
                MovieCountry movieCountry = new MovieCountry(movie, country);
                movie.ProductionCountries.Add(country);
                country.Movies.Add(movieCountry);
                if (await _movieCountryCommand.SaveIfNotExist(_movieCountryQuery, movieCountry))
                {
                    movieCountries.Add(movieCountry);
                }
            }

            string countriesBinded = String.Join(StringConstants.COMA_SPACE, countries.Select(c => c.Name));

            Logger.Log.Info($"Binded countries ({countriesBinded} for movie with id = {movie.Id}");
            return(movieCountries);
        }
        public Movie CollectAndAddMovieToDb(Movie movie2, string moviePage = null, bool collectKeyword = true)
        {
            if (string.IsNullOrEmpty(moviePage))
            {
                InvokeOnNotificationFired("Started collecting movie: " + movie2.Title);
                moviePage = HttpHelper.FetchWebPage(ImdbTitle + movie2.ImdbId);
            }

            var parseMovieInfo = ParseMovieInfo(moviePage);

            if (parseMovieInfo == null)
            {
                return(null);
            }



            var movie = _entities.Movies.Where(o => o.ImdbId == parseMovieInfo.ImdbId).FirstOrDefault();

            if (movie == null)
            {
                movie           = parseMovieInfo;
                movie.IsUpdated = false;
                _entities.AddToMovies(movie);
                _entities.SaveChanges();
            }
            else
            {
                movie.CopyFromMovie(parseMovieInfo);
                _entities.SaveChanges();
            }

            foreach (var g in parseMovieInfo.Genres)
            {
                var genre      = GetGenre(g);
                var movieGenre = _entities.MovieGenres.Where(o => o.Movie.Id == movie.Id && o.Genre.Id == genre.Id).FirstOrDefault();

                if (movieGenre != null)
                {
                    continue;
                }
                movieGenre = new MovieGenre {
                    Movie = movie, Genre = genre
                };
                _entities.AddToMovieGenres(movieGenre);
                _entities.SaveChanges();
            }

            foreach (var g in parseMovieInfo.Languages)
            {
                var language      = GetLanguage(g);
                var movieLanguage = _entities.MovieLanguages.Where(o => o.Movie.Id == movie.Id && o.Language.Id == language.Id).FirstOrDefault();

                if (movieLanguage != null)
                {
                    continue;
                }
                movieLanguage = new MovieLanguage {
                    Movie = movie, Language = language
                };
                _entities.AddToMovieLanguages(movieLanguage);
                _entities.SaveChanges();
            }

            foreach (var g in parseMovieInfo.Countries)
            {
                var country      = GetCountry(g);
                var movieCountry = _entities.MovieCountries.Where(o => o.Movie.Id == movie.Id && o.Country.Id == country.Id).FirstOrDefault();

                if (movieCountry != null)
                {
                    continue;
                }
                movieCountry = new MovieCountry {
                    Movie = movie, Country = country
                };
                _entities.AddToMovieCountries(movieCountry);
                _entities.SaveChanges();
            }

            foreach (var g in parseMovieInfo.PersonDirectors)
            {
                var person   = GetPerson(g);
                var director = _entities.Directors.Where(o => o.Movie.Id == movie.Id && o.Person.Id == person.Id).FirstOrDefault();

                if (director != null)
                {
                    continue;
                }
                director = new Director {
                    Movie = movie, Person = person
                };
                _entities.AddToDirectors(director);
                _entities.SaveChanges();
            }

            foreach (var g in parseMovieInfo.PersonStars)
            {
                var person = GetPerson(g);
                var star   = _entities.Stars.Where(o => o.Movie.Id == movie.Id && o.Person.Id == person.Id).FirstOrDefault();

                if (star != null)
                {
                    continue;
                }
                star = new Star {
                    Movie = movie, Person = person
                };
                _entities.AddToStars(star);
                _entities.SaveChanges();
            }

            foreach (var g in parseMovieInfo.PersonWriters)
            {
                var person = GetPerson(g);
                var writer = _entities.Writers.Where(o => o.Movie.Id == movie.Id && o.Person.Id == person.Id).FirstOrDefault();

                if (writer != null)
                {
                    continue;
                }
                writer = new Writer {
                    Movie = movie, Person = person
                };
                _entities.AddToWriters(writer);
                _entities.SaveChanges();
            }


            if (collectKeyword)
            {
                var keywordPage = HttpHelper.FetchWebPage(string.Format(ImdbKeywordUrl, parseMovieInfo.ImdbId));
                parseMovieInfo.Keywords = ImdbParser.ParseKeywords(keywordPage);

                foreach (var g in parseMovieInfo.Keywords)
                {
                    var keyword      = GetKeyword(g);
                    var movieKeyword =
                        _entities.MovieKeywords.Where(o => o.Movie.Id == movie.Id && o.Keyword.Id == keyword.Id).
                        FirstOrDefault();

                    if (movieKeyword != null)
                    {
                        continue;
                    }
                    movieKeyword = new MovieKeyword {
                        Movie = movie, Keyword = keyword
                    };
                    _entities.AddToMovieKeywords(movieKeyword);
                    _entities.SaveChanges();
                }
            }
            InvokeOnNotificationFired("Fiished collecting movie: " + movie.Title);

            movie.IsUpdated = true;
            _entities.SaveChanges();

            return(movie);
        }
        public async Task <MovieDetailsViewModel> CreateAsync(MovieCreateInputModel movieCreateInputModel)
        {
            if (!Enum.TryParse(movieCreateInputModel.CinemaCategory, true, out CinemaCategory cinemaCategory))
            {
                throw new ArgumentException(
                          string.Format(ExceptionMessages.InvalidCinemaCategoryType, movieCreateInputModel.CinemaCategory));
            }

            var director = await this.directorsRepository
                           .All()
                           .FirstOrDefaultAsync(d => d.Id == movieCreateInputModel.DirectorId);

            if (director == null)
            {
                throw new NullReferenceException(
                          string.Format(ExceptionMessages.DirectorNotFound, movieCreateInputModel.DirectorId));
            }

            var coverUrl = await this.cloudinaryService
                           .UploadAsync(movieCreateInputModel.CoverImage, movieCreateInputModel.Name);

            var wallpaperUrl = await this.cloudinaryService
                               .UploadAsync(movieCreateInputModel.Wallpaper, movieCreateInputModel.Name + Suffixes.WallpaperSuffix);

            var movie = new Movie
            {
                Name           = movieCreateInputModel.Name,
                DateOfRelease  = movieCreateInputModel.DateOfRelease,
                Resolution     = movieCreateInputModel.Resolution,
                Rating         = movieCreateInputModel.Rating,
                Description    = movieCreateInputModel.Description,
                Language       = movieCreateInputModel.Language,
                CinemaCategory = cinemaCategory,
                TrailerPath    = movieCreateInputModel.TrailerPath,
                CoverPath      = coverUrl,
                WallpaperPath  = wallpaperUrl,
                IMDBLink       = movieCreateInputModel.IMDBLink,
                Length         = movieCreateInputModel.Length,
                Director       = director,
            };

            bool doesMovieExist = await this.moviesRepository.All().AnyAsync(x => x.Name == movieCreateInputModel.Name);

            if (doesMovieExist)
            {
                throw new ArgumentException(
                          string.Format(ExceptionMessages.MovieAlreadyExists, movieCreateInputModel.Name));
            }

            foreach (var genreId in movieCreateInputModel.SelectedGenres)
            {
                var movieGenre = new MovieGenre
                {
                    MovieId = movie.Id,
                    GenreId = genreId,
                };

                await this.movieGenresRepository.AddAsync(movieGenre);

                movie.MovieGenres.Add(movieGenre);
            }

            foreach (var countryId in movieCreateInputModel.SelectedCountries)
            {
                var movieCountry = new MovieCountry
                {
                    MovieId   = movie.Id,
                    CountryId = countryId,
                };

                await this.movieCountriesRepository.AddAsync(movieCountry);

                movie.MovieCountries.Add(movieCountry);
            }

            await this.moviesRepository.AddAsync(movie);

            await this.moviesRepository.SaveChangesAsync();

            await this.movieGenresRepository.SaveChangesAsync();

            await this.movieCountriesRepository.SaveChangesAsync();

            var viewModel = await this.GetViewModelByIdAsync <MovieDetailsViewModel>(movie.Id);

            return(viewModel);
        }
Example #6
0
        //--------------------------------------------------------------------------------------------- /Добавление фильма
        private void button2_Click(object sender, EventArgs e)
        {
            Movie movie = new Movie
            {
                Name        = null,
                Genres      = null,
                Date        = DateTime.Now,
                Category    = null,
                Actors      = null,
                Producers   = null,
                Contries    = null,
                Description = null
            };

            My.Movies.Add(movie);
            My.SaveChanges();
            //--------------------------------------------------------------------------------------------- //Жанр фильма
            var genres = new Collection <KinoSoft.MovieGenre>();

            if (GenreAdd.id != null)
            {
                foreach (Genre genre in GenreAdd.id)
                {
                    MovieGenre mGenre = new MovieGenre
                    {
                        MovieId = movie.Id,
                        GenreId = genre.Id
                    };
                    My.MovieGenre.Add(mGenre);
                    genres.Add(mGenre);
                }
            }
            //--------------------------------------------------------------------------------------------- //Название фильма
            string name = MovieName.Text;
            //--------------------------------------------------------------------------------------------- //Дата выпуска фильма
            DateTime date = Convert.ToDateTime(Data.Text);
            //--------------------------------------------------------------------------------------------- //Категория фильма
            string category = Category.Text;
            //--------------------------------------------------------------------------------------------- //Режиссёр(-ы) фильма
            var producers = new Collection <KinoSoft.MovieProducer>();

            if (ProducerAdd.id != null)
            {
                foreach (Producer producer in ProducerAdd.id)
                {
                    MovieProducer mProducer = new MovieProducer
                    {
                        MovieId    = movie.Id,
                        ProducerId = producer.Id
                    };
                    My.MoviMovieProducere.Add(mProducer);
                    producers.Add(mProducer);
                }
            }
            //--------------------------------------------------------------------------------------------- //Актёр(-ы) фильма
            var actors = new Collection <KinoSoft.MovieActor>();

            if (ActorAdd.id != null)
            {
                foreach (Actor actor in ActorAdd.id)
                {
                    MovieActor mActor = new MovieActor
                    {
                        MovieId = movie.Id,
                        ActorId = actor.Id
                    };
                    My.MovieActors.Add(mActor);
                    actors.Add(mActor);
                }
            }
            //--------------------------------------------------------------------------------------------- //Страна(-ы), в котором(-ых) снимали фильм
            var countrys = new Collection <KinoSoft.MovieCountry>();

            if (CountryAdd.id != null)
            {
                foreach (Country country in CountryAdd.id)
                {
                    MovieCountry mCountry = new MovieCountry
                    {
                        MovieId   = movie.Id,
                        CountryId = country.Id
                    };
                    My.MovieCountry.Add(mCountry);
                    countrys.Add(mCountry);
                }
            }
            //--------------------------------------------------------------------------------------------- // Описание фильма
            string opisanie = Opisanie.Text;

            movie.Name        = name;
            movie.Genres      = genres;
            movie.Date        = date;
            movie.Category    = category;
            movie.Actors      = actors;
            movie.Producers   = producers;
            movie.Contries    = countrys;
            movie.Description = opisanie;
            My.SaveChanges();

            ProducerAdd.id = null;
            ActorAdd.id    = null;
            CountryAdd.id  = null;
            GenreAdd.id    = null;
            this.Close();
            ////--------------------------------------------------------------------------------------------- //Жанр фильма
            //var genre = new Collection<KinoSoft.MovieGenre>();
            //if (GenreAdd.id != null)
            //    foreach (Genre c in GenreAdd.id)
            //    {
            //        int genId = c.Id;
            //        MovieGenre mGen = My.MovieGenre.Where(k => k.Id == genId).FirstOrDefault();
            //        mGenres.Add(mGen);
            //    }
            ////--------------------------------------------------------------------------------------------- //Название фильма
            //string name = MovieName.Text;
            ////--------------------------------------------------------------------------------------------- //Дата выпуска фильма
            //DateTime god = Convert.ToDateTime(Data.Text);
            ////--------------------------------------------------------------------------------------------- //Категория фильма
            //string category = Category.Text;
            ////--------------------------------------------------------------------------------------------- //Режиссёр(-ы) фильма
            //var producers = new Collection<KinoSoft.MovieProducer>();
            //if (ProducerAdd.id != null)
            //    foreach (Producer c in ProducerAdd.id)
            //    {
            //        int proId = c.Id ;
            //        MovieProducer MPro = My.MoviMovieProducere.Where(k => k.Id == proId).FirstOrDefault();
            //        producers.Add(MPro);
            //    }
            ////--------------------------------------------------------------------------------------------- //Актёр(-ы) фильма
            //var actors = new Collection<KinoSoft.MovieActor>();
            //if (ActorAdd.id != null)
            //    foreach (Actor c in ActorAdd.id)
            //    {
            //        int actId = c.Id;
            //        MovieActor MAct = My.MovieActors.Where(k => k.Id == actId).FirstOrDefault();
            //        actors.Add(MAct);
            //    }
            ////--------------------------------------------------------------------------------------------- //Страна(-ы), в котором(-ых) снимали фильм
            //var countrys = new Collection<KinoSoft.MovieCountry>();
            //if (CountryAdd.id != null)
            //    foreach (Country c in CountryAdd.id)
            //    {
            //        int couId = c.Id;
            //        MovieCountry MCou = My.MovieCountry.Where(k => k.Id == couId).FirstOrDefault();
            //        countrys.Add(MCou);
            //    }
            ////--------------------------------------------------------------------------------------------- // Описание фильма
            //string opisanie = Opisanie.Text;
            ////--------------------------------------------------------------------------------------------- //Функция добавления фильма
            //LogicMovie LM = new LogicMovie();
            //LM.AddMovie(name, god, category, countrys, producers, actors, genre, opisanie);
            ////--------------------------------------------------------------------------------------------- //Обнуление
            //ProducerAdd.id = null;
            //ActorAdd.id = null;
            //CountryAdd.id = null;
            //GenreAdd.id = null;
            //this.Close();
        }
Example #7
0
        //--------------------------------------------------------------------------------------------- /Редактирование фильма
        private void button4_Click(object sender, EventArgs e)
        {
            //--------------------------------------------------------------------------------------------- //Жанр фильма
            var genre = new Collection <KinoSoft.MovieGenre>();

            if (GenreAdd.id != null)
            {
                foreach (Genre c in GenreAdd.id)
                {
                    int        genId = c.Id;
                    MovieGenre MGen  = My.MovieGenre.Where(k => k.Id == genId).FirstOrDefault();
                    genre.Add(MGen);
                }
            }
            //--------------------------------------------------------------------------------------------- //Название фильма
            string name = MovieName.Text;
            //--------------------------------------------------------------------------------------------- //Дата выпуска фильма
            DateTime god = Convert.ToDateTime(Data.Text);
            //--------------------------------------------------------------------------------------------- //Категория фильма
            string category = Category.Text;
            //--------------------------------------------------------------------------------------------- //Режиссёр(-ы) фильма
            var producers = new Collection <KinoSoft.MovieProducer>();

            if (ProducerAdd.id != null)
            {
                foreach (Producer c in ProducerAdd.id)
                {
                    int           proId = c.Id;
                    MovieProducer MPro  = My.MoviMovieProducere.Where(k => k.Id == proId).FirstOrDefault();
                    producers.Add(MPro);
                }
            }
            //--------------------------------------------------------------------------------------------- //Актёр(-ы) фильма
            var actors = new Collection <KinoSoft.MovieActor>();

            if (ActorAdd.id != null)
            {
                foreach (Actor c in ActorAdd.id)
                {
                    int        actId = c.Id;
                    MovieActor MAct  = My.MovieActors.Where(k => k.Id == actId).FirstOrDefault();
                    actors.Add(MAct);
                }
            }
            //--------------------------------------------------------------------------------------------- //Страна(-ы), в котором(-ых) снимали фильм
            var countrys = new Collection <KinoSoft.MovieCountry>();

            if (CountryAdd.id != null)
            {
                foreach (Country c in CountryAdd.id)
                {
                    int          couId = c.Id;
                    MovieCountry MCou  = My.MovieCountry.Where(k => k.Id == couId).FirstOrDefault();
                    countrys.Add(MCou);
                }
            }
            //--------------------------------------------------------------------------------------------- // Описание фильма
            string opisanie = Opisanie.Text;

            //--------------------------------------------------------------------------------------------- // Обновление данных
            this.movie.Actors      = actors;
            this.movie.Category    = category;
            this.movie.Contries    = countrys;
            this.movie.Date        = god;
            this.movie.Description = opisanie;
            this.movie.Genres      = genre;
            this.movie.Name        = name;
            this.movie.Producers   = producers;
            My.SaveChanges();
            //--------------------------------------------------------------------------------------------- // Обнуление
            ProducerAdd.id = null;
            ActorAdd.id    = null;
            CountryAdd.id  = null;
            GenreAdd.id    = null;
            this.Close();
        }
 public void AddToMovieCountries(MovieCountry movieCountry)
 {
     base.AddObject("MovieCountries", movieCountry);
 }
 public static MovieCountry CreateMovieCountry(long id)
 {
     MovieCountry movieCountry = new MovieCountry();
     movieCountry.Id = id;
     return movieCountry;
 }
        public async Task CheckIfEditAsyncWorksCorrectlyWithDifferentMovieGenresAndCountries()
        {
            this.SeedDatabase();
            await this.SeedMovies();

            await this.SeedMovieGenres();

            await this.SeedMovieCountries();

            var secondGenre = new Genre
            {
                Name = "Romance",
            };

            await this.genresRepository.AddAsync(secondGenre);

            await this.genresRepository.SaveChangesAsync();

            var secondCountry = new Country
            {
                Name = "Bulgaria",
            };

            await this.countriesRepository.AddAsync(secondCountry);

            await this.countriesRepository.SaveChangesAsync();

            var secondMovieGenre = new MovieGenre
            {
                MovieId = this.firstMovie.Id,
                GenreId = 2,
            };

            await this.movieGenresRepository.AddAsync(secondMovieGenre);

            await this.movieGenresRepository.SaveChangesAsync();

            var secondMovieCountry = new MovieCountry
            {
                MovieId   = this.firstMovie.Id,
                CountryId = 2,
            };

            await this.movieCountriesRepository.AddAsync(secondMovieCountry);

            await this.movieCountriesRepository.SaveChangesAsync();

            using (var stream = File.OpenRead(TestImagePath))
            {
                var file = new FormFile(stream, 0, stream.Length, null, Path.GetFileName(stream.Name))
                {
                    Headers     = new HeaderDictionary(),
                    ContentType = TestImageContentType,
                };

                var movieEditViewModel = new MovieEditViewModel()
                {
                    Id             = this.firstMovie.Id,
                    Name           = this.firstMovie.Name,
                    DateOfRelease  = this.firstMovie.DateOfRelease,
                    Resolution     = this.firstMovie.Resolution,
                    Rating         = this.firstMovie.Rating,
                    Description    = this.firstMovie.Description,
                    Language       = this.firstMovie.Language,
                    CinemaCategory = this.firstMovie.CinemaCategory.ToString(),
                    TrailerPath    = this.firstMovie.TrailerPath,
                    CoverImage     = file,
                    Wallpaper      = null,
                    IMDBLink       = this.firstMovie.IMDBLink,
                    Length         = this.firstMovie.Length,
                    DirectorId     = this.firstMovie.DirectorId,
                    SelectedGenres = new List <int> {
                        2,
                    },
                    SelectedCountries = new List <int> {
                        2,
                    },
                };

                await this.moviesService.EditAsync(movieEditViewModel);

                await this.cloudinaryService.DeleteImage(this.cloudinary, movieEditViewModel.Name);

                var movie = await this.moviesRepository.All().FirstOrDefaultAsync();

                Assert.Contains(movie.MovieGenres, x => x.GenreId == 2);
                Assert.Contains(movie.MovieCountries, x => x.CountryId == 2);
            }
        }