Exemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,Title,Release,Time,RateID,IsDub,Director,Actors,Plot,Trailer,PosterID")] Movie movie, int[] GenreList)
        {
            if (id != movie.ID)
            {
                TempData["Status"] = "We're sorry, an unexpected error has been accured." + Environment.NewLine + "If you keep getting this error please contact system administrator.";
                TempData["Color"]  = "danger";
                return(RedirectToAction(nameof(Index)));
            }
            MovieDBExist(movie.Title, movie.Trailer, movie.ID);
            if (GenreList.Count() == 0)
            {
                ModelState.AddModelError("Genres", "At least one genre need to be selected.");
            }
            if (ModelState.IsValid)
            {
                try
                {
                    db.Movies.Update(movie);
                    //Edit the genres
                    var selectedGenres = GenreList.ToHashSet();
                    var movieGenres    = db.MovGens.Where(mg => mg.MovieID == movie.ID).Select(g => g.GenreID).ToHashSet();
                    var dbGenres       = db.Genres.Select(g => g.ID).ToHashSet();
                    foreach (int item in dbGenres)
                    {
                        if (selectedGenres.Contains(item) && !movieGenres.Contains(item))
                        {
                            db.MovGens.Add(new MovGen {
                                MovieID = movie.ID, GenreID = item
                            });
                        }
                        else if (movieGenres.Contains(item) && !selectedGenres.Contains(item))
                        {
                            db.MovGens.Remove(db.MovGens.Single(mg => mg.MovieID == movie.ID && mg.GenreID == item));
                        }
                    }
                    await db.SaveChangesAsync();

                    TempData["Status"] = "The changes you made to the movie have been saved!";
                    TempData["Color"]  = "success";
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!MovieExists(movie.ID))
                    {
                        return(RedirectToAction("Page404", "Home"));
                    }
                    TempData["Status"] = "We're sorry, an unexpected error has been accured." + Environment.NewLine + "If you keep getting this error please contact system administrator.";
                    TempData["Color"]  = "danger";
                    return(RedirectToAction(nameof(Index)));
                }
                return(RedirectToAction(nameof(Info), new { id = movie.ID }));
            }
            var model = new NewMovieViewModel(db);

            model.Movie          = movie;
            model.Genres         = model.EditGenres(GenreList);
            ViewData["PosterID"] = new SelectList(db.Images.Where(i => i.Category == ImageCategory.Posters), "ID", "Name", movie.PosterID);
            ViewData["RateID"]   = new SelectList(db.Rates, "ID", "Code", movie.RateID);
            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Create([Bind("Title,Release,Time,RateID,IsDub,Director,Actors,Plot,Trailer,PosterID")] Movie movie, int[] GenreList)
        {
            MovieDBExist(movie.Title, movie.Trailer);
            if (GenreList.Count() == 0)
            {
                ModelState.AddModelError("Genres", "At least one genre need to be selected.");
            }
            if (ModelState.IsValid)
            {
                try
                {
                    db.Movies.Add(movie);
                    foreach (int item in GenreList)
                    {
                        db.MovGens.Add(new MovGen {
                            MovieID = movie.ID, GenreID = item
                        });
                    }
                    await db.SaveChangesAsync();

                    TempData["Status"] = "A new movie has been added.";
                    TempData["Color"]  = "success";
                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception)
                {
                    TempData["Status"] = "We're sorry, an unexpected error has been accured." + Environment.NewLine + "If you keep getting this error please contact system administrator.";
                    TempData["Color"]  = "danger";
                    var erModel = new NewMovieViewModel(db);
                    erModel.Movie        = movie;
                    erModel.Genres       = erModel.EditGenres(GenreList);
                    ViewData["PosterID"] = new SelectList(db.Images.Where(i => i.Category == ImageCategory.Posters), "ID", "Name", movie.PosterID);
                    ViewData["RateID"]   = new SelectList(db.Rates, "ID", "Code", movie.RateID);
                    return(View(erModel));
                }
            }
            var model = new NewMovieViewModel(db);

            model.Movie          = movie;
            model.Genres         = model.EditGenres(GenreList);
            ViewData["PosterID"] = new SelectList(db.Images.Where(i => i.Category == ImageCategory.Posters), "ID", "Name", movie.PosterID);
            ViewData["RateID"]   = new SelectList(db.Rates, "ID", "Code", movie.RateID);
            return(View(model));
        }