예제 #1
0
        public IActionResult EditMovie(int id, [FromBody] MovieEditDto movie)
        {
            var result = _movieService.EditMovie(id, movie);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            return(Ok(result.Movie));
        }
        public async Task EditPost(MovieEditDto movie)
        {
            var editedMovie = _mapper.Map <Movie>(movie);
            await _movieRepository.Update(editedMovie);

            await _movieRepository.UploadImage(movie.ImageFile, editedMovie);

            var movieActors = await _movieActorRepository.Search(ma => ma.MovieId == movie.Id);

            foreach (var ma in movieActors)
            {
                await _movieActorRepository.Remove(ma);
            }

            var movieCategories = await _movieCategoryRepository.Search(mc => mc.MovieId == movie.Id);

            foreach (var mc in movieCategories)
            {
                await _movieCategoryRepository.Remove(mc);
            }


            foreach (var actorId in movie.ActorIds)
            {
                await _movieActorRepository.Add(new MovieActor()
                {
                    ActorId = actorId, MovieId = movie.Id
                });
            }

            foreach (var categoryId in movie.CategoryIds)
            {
                await _movieCategoryRepository.Add(new MovieCategory()
                {
                    CategoryId = categoryId, MovieId = movie.Id
                });
            }

            foreach (var newActorDto in movie.NewActors)
            {
                var newActor = _mapper.Map <Actor>(newActorDto);
                await _actorRepository.Add(newActor);

                await _actorRepository.UploadImage(newActorDto.ImageFile, newActor);

                await _movieActorRepository.Add(new MovieActor()
                {
                    MovieId = editedMovie.Id, ActorId = newActor.Id
                });
            }
        }
예제 #3
0
        public MovieResponse EditMovie(int id, MovieEditDto movie)
        {
            Dictionary <string, string[]> errors = new Dictionary <string, string[]>();

            UserAccount user = _context.UserAccounts.FirstOrDefault(u => u.UserName == _userName);

            if (user == null)
            {
                errors.Add("User", new[] { "Podane konto nie istnieje" });
                return(new MovieResponse(errors));
            }

            if (user.Rola != "admin" && user.Rola != "moderator")
            {
                errors.Add("User", new[] { "Nie masz dostepu do tej czesci serwisu" });
                return(new MovieResponse(errors));
            }

            Models.Type type = _context.Types.FirstOrDefault(t => t.Name == movie.Type);
            if (type == null)
            {
                errors.Add("TypeName", new[] { "Gatunek filmu o takiej nazwie nie istnieje" });
                return(new MovieResponse(errors));
            }

            List <string>  ActorNames  = new List <string>();
            MovieReturnDto movieReturn = new MovieReturnDto();

            Movie movieSave = _mapper.Map <MovieEditDto, Movie>(movie);

            movieSave.Type = type;

            List <MovieToActors> actorListSave = new List <MovieToActors>();

            List <ActorInFilm> actorListReturn = new List <ActorInFilm>();

            if (movie.ActorsRemove != null)
            {
                foreach (var e in movie.ActorsRemove)
                {
                    var tmp = _context.MoviesToActor.FirstOrDefault(a => a.Actor == e && a.MovieId == id);
                    try
                    {
                        _context.MoviesToActor.Remove(tmp);
                    }
                    catch (Exception ex)
                    {
                        errors.Add("ActorsRemove", new[] { ex.Message });
                        return(new MovieResponse(errors));
                    }
                }
                _context.SaveChanges();
            }

            foreach (var e in movie.ActorsAdd)
            {
                Actor  tmp   = _context.Actors.FirstOrDefault(a => a.ActorId == e.ActorId);
                string namer = tmp.Name + " " + tmp.Surname;
                if (tmp == null)
                {
                    errors.Add(e.ActorId.ToString(), new[] { "Aktor o id = " + e.ActorId + " nie istnieje" });
                    continue;
                }
                var tmpp = _context.MoviesToActor.FirstOrDefault(a => a.Actor == e.ActorId && a.MovieId == id);
                if (tmpp != null)
                {
                    ActorInFilm existActor = new ActorInFilm
                    {
                        NameSurname       = namer,
                        NameSurnameInFilm = e.NameInFilm
                    };
                    actorListReturn.Add(existActor);
                    continue;
                }

                MovieToActors actorSave = new MovieToActors {
                    MovieId = movieSave.MovieId, Actor = e.ActorId, ActorNameInMovie = e.NameInFilm
                };
                actorListSave.Add(actorSave);
                ActorNames.Add(e.NameInFilm);
                ActorInFilm actorInFilm = new ActorInFilm
                {
                    NameSurname       = namer,
                    NameSurnameInFilm = e.NameInFilm
                };
                actorListReturn.Add(actorInFilm);
            }

            if (errors.Count() != 0)
            {
                return(new MovieResponse(errors));
            }
            movieSave.Actors = actorListSave;

            var listImageRemove = new List <ImageMovie>();

            if (movie.RemoveImages != null)
            {
                foreach (var fileName in movie.RemoveImages)
                {
                    var image = _context.ActorImages.FirstOrDefault(i => i.FileName == fileName);

                    if (image != null)
                    {
                        _imagesService.RemoveImages(movie.RemoveImages);
                    }
                }
            }

            List <ImageMovie> uploadedImagesModels = new List <ImageMovie>();

            if (movie.Images != null)
            {
                try
                {
                    uploadedImagesModels =
                        _imagesService.UploadImagesToServer(movie.Images, movieSave);
                }
                catch (Exception ex)
                {
                    errors.Add("Images", new[] { ex.Message });
                    return(new MovieResponse(errors));
                }
            }

            movieSave.Images  = uploadedImagesModels;
            movieSave.MovieId = id;
            _context.MovieImages.RemoveRange(listImageRemove);
            _context.MovieImages.AddRange(uploadedImagesModels);
            _context.MoviesToActor.AddRange(actorListSave);
            _context.Movies.Update(movieSave);
            _context.MovieImages.AddRange(uploadedImagesModels);
            _context.SaveChanges();

            movieReturn        = _mapper.Map <Movie, MovieReturnDto>(movieSave);
            movieReturn.Actors = actorListReturn;

            return(new MovieResponse(movieReturn));
        }
        public async Task <ActionResult> Edit(MovieEditDto editedMovie)
        {
            await _movieService.EditPost(editedMovie);

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