Ejemplo n.º 1
0
        public IActionResult AddMovie([FromForm] MovieSaveDto movie)
        {
            var result = _movieService.AddMovie(movie);

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

            return(Ok(result.Movie));
        }
Ejemplo n.º 2
0
        public MovieResponse AddMovie(MovieSaveDto 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 <MovieSaveDto, Movie>(movie);

            movieSave.Type = type;

            List <MovieToActors> actorListSave = new List <MovieToActors>();
            int i = 0;
            List <ActorInFilm>     actorListReturn = new List <ActorInFilm>();
            List <ActorAddToMovie> Actors          = new List <ActorAddToMovie>();

            foreach (var e in movie.ActorId)
            {
                Actor tmp = _context.Actors.FirstOrDefault(a => a.ActorId == e);

                var actorarray = movie.ActorName.ToArray();
                var tmpp       = new ActorAddToMovie
                {
                    ActorId    = e,
                    NameInFilm = actorarray[i]
                };
                i++;
                Actors.Add(tmpp);
            }

            if (Actors == null)
            {
                errors.Add("Actors", new[] { "Lista aktorów nie może być pusta" });
                return(new MovieResponse(errors));
            }

            foreach (var e in Actors)
            {
                Actor tmp = _context.Actors.FirstOrDefault(a => a.ActorId == e.ActorId);
                if (tmp == null)
                {
                    errors.Add(e.ActorId.ToString(), new[] { "Aktor o id = " + e.ActorId + " nie istnieje" });
                    continue;
                }
                string        namer = tmp.Name + " " + tmp.Surname;
                MovieToActors actor = new MovieToActors {
                    MovieId = movieSave.MovieId, Actor = e.ActorId, ActorNameInMovie = e.NameInFilm
                };
                actorListSave.Add(actor);
                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;

            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;

            _context.MoviesToActor.AddRange(actorListSave);
            _context.Movies.Add(movieSave);
            _context.MovieImages.AddRange(uploadedImagesModels);
            _context.SaveChanges();

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

            return(new MovieResponse(movieReturn));
        }