Exemple #1
0
        public async Task <IActionResult> Edit(int filmId)  // Редактирование фильма
        {
            if (filmId <= 0)
            {
                return(BadRequest());
            }

            var film = await filmService.Get(filmId);

            if (film == null)
            {
                return(BadRequest());
            }

            var viewModel = new EditFilmViewModel();

            viewModel.CopyProperties(film);
            viewModel.ReturnUrl = Url.Action(nameof(Info), new { Id = filmId });

            return(View(viewModel));
        }
Exemple #2
0
        public async Task <IActionResult> Edit(PostEditFilmViewModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            var film = (model.Id > 0) ? await filmService.Get(model.Id) : new Film();

            // Если в БД фильма с таким идентификатором уже нет
            if (model.Id > 0 && film == null)
            {
                return(NotFound());
            }

            var userId = userManager.GetUserId(User);

            // Если редактирует не тот пользователь, который создавал
            if (model.Id > 0 && userId != film.UserId)
            {
                return(BadRequest());
            }

            byte[] imageData = ReadPoster(model.PosterFile);

            if (model.Year < 1900 || model.Year > DateTime.Now.Year)
            {
                ModelState.AddModelError("Year", "Некорректный год");
            }

            if (!ModelState.IsValid)
            {
                var viewModel = new EditFilmViewModel();
                viewModel.CopyProperties(model);
                if (model.Id > 0)
                {
                    viewModel.Poster = film.Poster;
                }
                return(View(viewModel));
            }
            try
            {
                film.CopyProperties(model);
                film.UserId = userId;
                if (imageData != null)
                {
                    film.Poster = imageData;
                }

                var newFilm = film;
                if (model.Id == 0)
                {
                    newFilm = await filmService.Insert(film);
                }

                await filmService.Save();  // тут в newFilm.Id записывается новый идентификатор

                if (newFilm.Id == 0)
                {
                    return(BadRequest());
                }

                return(RedirectToAction(nameof(Info), new { filmId = newFilm.Id }));
            }
            catch
            {
                return(StatusCode(500));
            }
        }