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); }
//--------------------------------------------------------------------------------------------- /Добавление фильма 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(); }
//--------------------------------------------------------------------------------------------- /Редактирование фильма 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); } }