예제 #1
0
        public async Task <IActionResult> Edit(FilmEditViewModel model, CancellationToken token, string returnUrl = null)
        {
            AddBreadcrumb("Films", "/Film/All");
            AddBreadcrumb("Edit", "/Film/Edit");
            ViewData["ReturnUrl"] = returnUrl;

            if (ModelState.IsValid)
            {
                var film = await GetFilm(token);

                film.Title       = model.Title;
                film.Description = model.Description;
                film.Genre       = model.Genre;
                film.Duration    = TimeSpan.FromSeconds(long.Parse(model.Duration));
                film.ReleaseDate = DateTime.ParseExact(model.ReleaseDate, "MM\\/dd\\/yyyy", CultureInfo.InvariantCulture);
                film.TrailerUrl  = model.TrailerUrl;
                film.IsActive    = model.IsActive;

                var updatedFilm = await _filmRepository.UpdateAsync(film, token);

                if (model.PosterImage != null)
                {
                    await _blobRepository.Upload(updatedFilm.Id, model.PosterImage);
                }

                return(RedirectToAction(nameof(All), "Film"));
            }

            return(View(model));
        }
예제 #2
0
        public IActionResult Edit(int id)
        {
            FilmEditViewModel model = new FilmEditViewModel();
            Film filmFromDb         = _context.Films.Include(genre => genre.Genres).Include(reg => reg.Regisseurs).FirstOrDefault(x => x.Id == id);

            model.Id           = filmFromDb.Id;
            model.Speelduur    = filmFromDb.Speelduur;
            model.Beschrijving = filmFromDb.Beschrijving;
            model.Titel        = filmFromDb.Titel;
            model.Foto         = filmFromDb.Foto;
            model.Regisseurs   = new List <SelectListItem>();
            model.Genres       = new List <CheckboxViewModel>();
            foreach (var item in _context.Regisseurs)
            {
                SelectListItem listItem = new SelectListItem(item.Naam, item.Id.ToString());
                model.Regisseurs.Add(listItem);
                if (_context.FilmRegisseurs.Where(x => x.FilmId == filmFromDb.Id).FirstOrDefault(y => y.RegisseurId == item.Id) != null)
                {
                    listItem.Selected = true;
                }
            }
            foreach (var item in _context.GenreFilms)
            {
                model.Genres.Add(new CheckboxViewModel()
                {
                    Id = item.Id, Naam = item.Genrenaam
                });
                if (_context.FilmGenres.Where(x => x.FilmId == filmFromDb.Id).FirstOrDefault(y => y.GenreId == item.Id) != null)
                {
                    model.Genres.Last().Checked = true;
                }
            }
            return(View(model));
        }
예제 #3
0
        public IActionResult Edit(FilmEditViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var userId = User.UserId();

            if (!_filmService.CheckOwner(model.Id, userId))
            {
                return(Forbid("Отказано в доступе"));
            }

            var film = _filmService.GetById(model.Id);

            film.Description = model.Description;
            film.Director    = film.Director.Name.Equals(model.Director)
                ? film.Director
                : new Director {
                Name = model.Director
            };
            film.Year = model.Year;
            if (model.Poster is not null)
            {
                _fileHelper.DeleteFile(film.Poster);
                film.Poster = _fileHelper.SaveUploadedFile(model.Poster);
            }

            _filmService.Update(film);
            return(RedirectToAction("Details", new { model.Id }));
        }
예제 #4
0
        public IActionResult Edit(int Id)
        {
            Film filmFromDb            = _context.Film.Include(f => f.Regisseurs).Include(f => f.Genres).FirstOrDefault(f => f.Id == Id);
            FilmEditViewModel fevModel = new FilmEditViewModel()
            {
                Id             = Id,
                Beschrijving   = filmFromDb.Beschrijving,
                Titel          = filmFromDb.Titel,
                HuidigeFoto    = filmFromDb.Foto,
                GenresList     = _genreList,
                SelectedGenres = new List <string>(),
                Lengte         = filmFromDb.Lengte,
                Regisseurs     = new List <string>()
            };

            foreach (var genr in filmFromDb.Genres)
            {
                fevModel.SelectedGenres.Add(_context.FilmGenre.FirstOrDefault(fg => fg.Id == genr.GenreId).Genre);
            }
            foreach (var regi in filmFromDb.Regisseurs)
            {
                FilmRegisseur freg = _context.FilmRegisseur.FirstOrDefault(fr => fr.Id == regi.RegisseurId);
                fevModel.Regisseurs.Add(freg.Naam);
            }
            return(View(fevModel));
        }
예제 #5
0
        public ActionResult Edit(int id = 0)
        {
            InitEditViewBag();
            string            currentUserId = User.Identity.GetUserId();
            FilmEditViewModel model         = new FilmEditViewModel();

            if (id > 0)
            {
                var entry = filmSrv[id];
                if (entry != null && entry.UserId == currentUserId)
                {
                    model.Name        = entry.Name;
                    model.Year        = entry.Year;
                    model.DateCreate  = entry.DateCreate;
                    model.Description = entry.Description;
                    model.CategoryIds = entry
                                        .Categories.Select(x => x.Id).ToArray();
                    model.ProducerIds = entry.Producer
                                        .Select(x => x.Id).ToArray();
                    model.ActorIds = entry.Actors
                                     .Select(x => x.Id).ToArray();
                }
                else
                {
                    ViewBag.Allowed = false;
                    return(Redirect("~/profile"));
                }
            }

            return(View(model));
        }
        public void SuccessMapFilmEditToFilmGenre(int filmId, int firstGenreId, int secondGenreId)
        {
            var source = new FilmEditViewModel()
            {
                Id              = filmId,
                Title           = "TestFilm",
                GenreViewModels = new List <FilmEditViewModel.Genre>()
                {
                    new FilmEditViewModel.Genre()
                    {
                        Id   = firstGenreId,
                        Name = "TestGenre"
                    },
                    new FilmEditViewModel.Genre()
                    {
                        Id   = secondGenreId,
                        Name = "TestGenre2"
                    }
                }
            };
            var result = _mapper.Map <FilmEditViewModel, List <FilmGenre> >(source);

            result.Should().Contain(fg => fg.FilmId == filmId && fg.GenreId == firstGenreId);
            result.Should().Contain(fg => fg.FilmId == filmId && fg.GenreId == secondGenreId);
        }
예제 #7
0
        public List <FilmGenre> Convert(FilmEditViewModel source, List <FilmGenre> destination, ResolutionContext context)
        {
            var result = context.Mapper.Map <List <FilmEditViewModel.Genre>, List <FilmGenre> >(source.GenreViewModels);

            result.ForEach(fg => fg.FilmId = source.Id);

            return(result);
        }
예제 #8
0
        // GET: Film/Create
        public IActionResult Create()
        {
            var filmViewModel = new FilmEditViewModel
            {
                GenreViewModels =
                    _mapper.Map <List <Genre>, List <FilmEditViewModel.Genre> >(_genreRepo.GetAll().ToList())
            };

            return(View(filmViewModel));
        }
예제 #9
0
        public async Task <IActionResult> Edit(FilmEditViewModel model, List <int> Genres, List <string> Regi)
        {
            Regi.RemoveAt(Regi.Count() - 1);
            Film film = _context.Film.Include(f => f.Regisseurs).FirstOrDefault(f => f.Id == model.Id);

            film.Lengte       = model.Lengte;
            film.Beschrijving = model.Beschrijving;
            film.Titel        = model.Titel;
            _context.GenreFilm.RemoveRange(_context.GenreFilm.Where(gf => gf.FilmId == model.Id));
            _context.RegisseurFilm.RemoveRange(_context.RegisseurFilm.Where(rf => rf.FilmId == model.Id));
            foreach (var genre in Genres)
            {
                _context.GenreFilm.Add(new GenreFilm()
                {
                    FilmId = model.Id, GenreId = genre
                });
            }
            foreach (var regisseur in Regi)
            {
                FilmRegisseur FR = _context.FilmRegisseur.FirstOrDefault(x => x.Naam == regisseur);
                if (FR != null)
                {
                    _context.RegisseurFilm.Add(new RegisseurFilm()
                    {
                        FilmId = model.Id, RegisseurId = FR.Id
                    });
                    _context.SaveChanges();
                }
                else
                {
                    _context.FilmRegisseur.Add(new FilmRegisseur()
                    {
                        Naam = regisseur
                    });
                    _context.SaveChanges();
                    _context.RegisseurFilm.Add(new RegisseurFilm()
                    {
                        FilmId = model.Id, RegisseurId = _context.FilmRegisseur.FirstOrDefault(x => x.Naam == regisseur).Id
                    });
                    _context.SaveChanges();
                }
            }
            if (model.Foto != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await model.Foto.CopyToAsync(memoryStream);

                    film.Foto = memoryStream.ToArray();
                }
            }
            _context.SaveChanges();
            return(RedirectToAction("Detail", new { model.Id }));
        }
예제 #10
0
        public async Task <IActionResult> Edit(int id)
        {
            Film filmFromDb = await _mediaDbContext.Films.FindAsync(id);

            FilmEditViewModel model = new FilmEditViewModel
            {
                Id          = filmFromDb.Id,
                Producer    = filmFromDb.Producer,
                ReleaseDate = filmFromDb.ReleaseDate,
                Title       = filmFromDb.Title,
                Url         = filmFromDb.Url
            };

            return(View(model));
        }
예제 #11
0
 public IActionResult Edit(FilmEditViewModel model, bool regisseur)
 {
     if (string.IsNullOrEmpty(model.RegisseurToevoegen))
     {
         if (model.RegisseurToevoegen != "")
         {
             _context.Regisseurs.Add(new Regisseur()
             {
                 Naam = model.RegisseurToevoegen
             });
             _context.SaveChanges();
         }
         return(RedirectToAction("Create", model));
     }
     else
     {
         Film aanTePassenFilm = _context.Films.FirstOrDefault(x => x.Id == model.Id);
         aanTePassenFilm.Speelduur    = model.Speelduur;
         aanTePassenFilm.Titel        = model.Titel;
         aanTePassenFilm.Beschrijving = model.Beschrijving;
         if (model.FotoAanpassen != null)
         {
             using (MemoryStream stream = new MemoryStream())
             {
                 model.FotoAanpassen.CopyTo(stream);
                 aanTePassenFilm.Foto = stream.ToArray();
             }
         }
         _context.FilmGenres.RemoveRange(_context.FilmGenres.Where(x => x.FilmId == model.Id));
         _context.FilmRegisseurs.RemoveRange(_context.FilmRegisseurs.Where(y => y.FilmId == model.Id));
         foreach (var item in model.Genres.Where(c => c.Checked == true))
         {
             _context.FilmGenres.Add(new FilmGenre()
             {
                 FilmId = model.Id, GenreId = item.Id
             });
         }
         foreach (var item in model.SelectedRegisseurs)
         {
             _context.FilmRegisseurs.Add(new FilmRegisseur()
             {
                 FilmId = model.Id, RegisseurId = int.Parse(item)
             });
         }
         _context.SaveChanges();
         return(RedirectToAction("Details", new { id = model.Id }));
     }
 }
예제 #12
0
        public IActionResult Create(FilmEditViewModel filmEditViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(filmEditViewModel));
            }

            var film = _mapper.Map <Film>(filmEditViewModel);

            filmEditViewModel.GenreViewModels.RemoveAll(gs => !gs.Checked);

            film.FilmGenres = _mapper.Map <FilmEditViewModel, List <FilmGenre> >(filmEditViewModel);

            _filmRepo.Create(film);
            _filmRepo.Save();

            return(RedirectToAction(nameof(Index)));
        }
예제 #13
0
        public async Task <IActionResult> Edit(CancellationToken token)
        {
            AddBreadcrumb("Films", "/Film/All");
            AddBreadcrumb("Edit", "/Film/Edit");

            var film = await GetFilm(token);

            var viewModel = new FilmEditViewModel
            {
                Title       = film.Title,
                Description = film.Description,
                ReleaseDate = film.ReleaseDate.ToString("MM\\/dd\\/yyyy"),
                Duration    = ((long)film.Duration.TotalSeconds).ToString(),
                Genre       = film.Genre,
                TrailerUrl  = film.TrailerUrl,
                IsActive    = film.IsActive
            };

            return(View(viewModel));
        }
예제 #14
0
        public async Task <IActionResult> Edit(int id, FilmEditViewModel vm)
        {
            if (!TryValidateModel(vm))
            {
                return(View(vm));
            }

            Film domainFilm = await _mediaDbContext.Films.FindAsync(id);

            domainFilm.Title       = vm.Title;
            domainFilm.Description = vm.Description;
            domainFilm.ReleaseDate = vm.ReleaseDate;
            domainFilm.Url         = vm.Url;
            domainFilm.Producer    = vm.Producer;

            _mediaDbContext.Update(domainFilm);

            await _mediaDbContext.SaveChangesAsync();

            return(RedirectToAction("Detail", new { Id = id }));
        }
예제 #15
0
        public IActionResult Edit(int id)
        {
            var userId = User.UserId();

            if (!_filmService.CheckOwner(id, userId))
            {
                return(Forbid("Отказано в доступе"));
            }

            var film      = _filmService.GetById(id);
            var viewModel = new FilmEditViewModel
            {
                Id          = id,
                Name        = film.Name,
                Description = film.Description,
                Director    = film.Director.Name,
                PosterImg   = _fileHelper.MakeUrlToFile(film.Poster),
                Year        = film.Year
            };

            return(View(viewModel));
        }
예제 #16
0
        public async Task <IActionResult> Edit(FilmEditViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Edit), new { id = model.Id }));
            }
            var item = await films.GetAsync(model.Id);

            if (item == null)
            {
                return(NotFound());
            }

            if (model.Producer != item.Producer?.Name)
            {
                item.ProducerId = producers.LoadOrCreate(model.Producer);
            }

            if (model.Poster != null)
            {
                int newPosterId = await posters.AddAsync(model.Poster);

                if (newPosterId > 0 && item.PosterId != null)
                {
                    await posters.DeleteAsync((int)item.PosterId);
                }
                item.PosterId = newPosterId;
            }

            item.Name        = model.Name;
            item.Description = model.Description;
            item.Producer    = null;
            item.Year        = model.Year;
            await films.SaveAsync(item);

            return(RedirectToAction(nameof(Edit), new { id = item.Id }));
        }
예제 #17
0
        public IActionResult Edit(int id, FilmEditViewModel filmEditViewModel)
        {
            if (id != filmEditViewModel.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var newFilmData = _mapper.Map <Film>(filmEditViewModel);

                filmEditViewModel.GenreViewModels.RemoveAll(gs => !gs.Checked);

                newFilmData.FilmGenres = _mapper.Map <FilmEditViewModel, List <FilmGenre> >(filmEditViewModel);

                try
                {
                    _filmRepo.Update(newFilmData);
                    _filmRepo.Save();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FilmExists(newFilmData.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(RedirectToAction(nameof(Index)));
            }

            return(View(filmEditViewModel));
        }
예제 #18
0
        public ActionResult Edit(FilmEditViewModel model)
        {
            InitEditViewBag();

            if (ModelState.IsValid)
            {
                try
                {
                    model.UserId = User.Identity.GetUserId();
                    var result = filmSrv.Edit(model);
                    if (result != null && result.Id > 0)
                    {
                        SavePoster(model.Files, result.Id);
                    }
                    return(Redirect("~/profile"));
                }
                catch
                {
                    ModelState.AddModelError("", "При редактировании произошли ошибки!");
                }
            }

            return(View(model));
        }
예제 #19
0
 public FilmEdit(Film film, ObservableCollection <Actor> actors)
 {
     //Setting BindingContext
     ViewModel = new FilmEditViewModel(film, actors);
     InitializeComponent();
 }