public async Task <IActionResult> Create() { TVShowCreateViewModel createModel = new TVShowCreateViewModel(); var genres = await _mediaWebDbContext.Genres.Select(genre => new SelectListItem() { Value = genre.Id.ToString(), Text = genre.Name }).ToListAsync(); createModel.Genres = genres; return(View(createModel)); }
public async Task <IActionResult> Create(TVShowCreateViewModel createModel) { List <string> tvshowTitlesFromDb = await _mediaWebDbContext.TVShows.Select(tvs => tvs.Name).ToListAsync(); if (tvshowTitlesFromDb.Contains(StringEdits.FirstLettterToUpper(createModel.Name))) { return(RedirectToAction("Index")); } TVshow newTvshow = new TVshow() { Name = StringEdits.FirstLettterToUpper(createModel.Name), ReleaseDate = createModel.ReleaseDate, Summary = createModel.Summary, Picture = UploadUtility.UploadFile(createModel.Picture, "tvshows", _hostingEnvironment) }; //Add genres to tvshow var tvshowGenres = new List <TVShowGenre>(); //Select from existing genres if (createModel.SelectedGenres != null) { foreach (var selectedGenre in createModel.SelectedGenres) { tvshowGenres.Add(new TVShowGenre() { GenreId = selectedGenre }); } } //create only if new genres if (createModel.createdGenres != null) { var createdGenres = StringEdits.FirstLettterToUpper(createModel.createdGenres); var createdGenresArray = createdGenres.Split(", "); var newGenres = new List <Genre>(); var genresFromDb = await _mediaWebDbContext.Genres.ToListAsync(); foreach (var createdGenre in createdGenresArray) { if (!genresFromDb.Select(g => g.Name).Contains(createdGenre)) { newGenres.Add(new Genre() { Name = createdGenre }); } else { tvshowGenres.Add(new TVShowGenre() { Genre = genresFromDb.Find(g => g.Name == createdGenre) }); } } foreach (var newGenre in newGenres) { tvshowGenres.Add(new TVShowGenre() { Genre = newGenre }); } } newTvshow.TVShowGenres = tvshowGenres; //add actors to tvshow var tvshowActors = new List <TVShowActor>(); //create only if new actors if (createModel.createdActors != null) { var createdActors = StringEdits.FirstLettterToUpper(createModel.createdActors); var createdActorsArray = createdActors.Split(", "); var newActors = new List <Actor>(); var actorsFromDb = await _mediaWebDbContext.Actors.ToListAsync(); foreach (var createdActor in createdActorsArray) { if (!actorsFromDb.Select(g => g.Name).Contains(createdActor)) { newActors.Add(new Actor() { Name = createdActor }); } else { tvshowActors.Add(new TVShowActor() { Actor = actorsFromDb.Find(g => g.Name == createdActor) }); } } foreach (var newActor in newActors) { tvshowActors.Add(new TVShowActor() { Actor = newActor }); } } newTvshow.TVShowActors = tvshowActors; //add directors to tvshow var tvshowDirectors = new List <TVShowDirector>(); //create only if new directors if (createModel.createdDirectors != null) { var createdDirectors = StringEdits.FirstLettterToUpper(createModel.createdDirectors); var createdDirectorsArray = createdDirectors.Split(", "); var newDirectors = new List <Director>(); var directorsFromDb = await _mediaWebDbContext.Directors.ToListAsync(); foreach (var createdDirector in createdDirectorsArray) { if (!directorsFromDb.Select(g => g.Name).Contains(createdDirector)) { newDirectors.Add(new Director() { Name = createdDirector }); } else { tvshowDirectors.Add(new TVShowDirector() { Director = directorsFromDb.Find(g => g.Name == createdDirector) }); } } foreach (var newDirector in newDirectors) { tvshowDirectors.Add(new TVShowDirector() { Director = newDirector }); } } newTvshow.TVShowDirectors = tvshowDirectors; _mediaWebDbContext.Update(newTvshow); await _mediaWebDbContext.SaveChangesAsync(); return(RedirectToAction("Index")); }