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 }); } }
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))); }