Exemple #1
0
        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));
        }
Exemple #2
0
        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"));
        }