示例#1
0
        public async Task <ActionResult> Put([FromForm] CreateMovieDto createMovieDto, int id)
        {
            var movie = await _dbContext.Movies.
                        Include(x => x.MovieActors)
                        .Include(x => x.MovieGenders)
                        .FirstOrDefaultAsync(x => x.Id == id);

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

            movie = _mapper.Map(createMovieDto, movie);
            _dbContext.Entry(movie).State = EntityState.Modified;

            if (createMovieDto.Poster != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await createMovieDto.Poster.CopyToAsync(memoryStream);

                    var content   = memoryStream.ToArray();
                    var extension = Path.GetExtension(createMovieDto.Poster.FileName);
                    movie.Poster = await _fileStore.EditFile(content, extension, container,
                                                             movie.Poster, createMovieDto.Poster.ContentType);
                }
            }
            AssignActorsOrder(movie);
            await _dbContext.SaveChangesAsync();

            return(NoContent());
        }
示例#2
0
        public async Task <APIResponse> Post(CreateMovieDto createMovieDto)
        {
            try
            {
                if (createMovieDto.Image != null)
                {
                    string path = GetDefaultMoviePath();

                    using (var fileStream = new FileStream(path, FileMode.Create))
                    {
                        await createMovieDto.Image.CopyToAsync(fileStream);

                        createMovieDto.ImageURL = Path.GetRelativePath(_webHostEnvironment.WebRootPath, path);
                    }
                }

                var movie = _mapper.Map <Movie>(createMovieDto);

                _cinemaDbContext.Movies.Add(movie);
                await _cinemaDbContext.SaveChangesAsync();

                return(APIResponse.GetAPIResponse((int)HttpStatusCode.Created, "Movie Created Successfully", movie));
            }
            catch (Exception x)
            {
                return(APIResponse.GetAPIResponse((int)HttpStatusCode.BadRequest, x.InnerException?.Message ?? x.Message, null));
            }
        }
示例#3
0
        public async Task <ActionResult> Post([FromForm] CreateMovieDto createMovieDto)
        {
            var movie = _mapper.Map <Movie>(createMovieDto);

            if (createMovieDto != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await createMovieDto.Poster.CopyToAsync(memoryStream);

                    var content   = memoryStream.ToArray();
                    var extension = Path.GetExtension(createMovieDto.Poster.FileName);
                    movie.Poster = await _fileStore.SaveFile(content, extension, container,
                                                             createMovieDto.Poster.ContentType);
                }
            }

            AssignActorsOrder(movie);
            _dbContext.Add(movie);
            await _dbContext.SaveChangesAsync();

            var movieDto = _mapper.Map <MovieDto>(movie);

            return(new CreatedAtRouteResult("GetMovie", new { id = movie.Id }, movieDto));
        }
        public async Task CreateMovieWithExistinggActor_NoMovieCreated_ReturnsNotFound()
        {
            //Arrange
            int actorId = 1;

            _mockActorRepository.Setup(x => x.GetAsync(actorId)).Returns(Task.FromResult <Actor>(new Actor()
            {
                Id = actorId
            }));
            var request = new CreateMovieDto()
            {
                Title    = "Titanic",
                Year     = 1999,
                Genre    = "Melodrama",
                ActorIds = new[] { actorId }
            };

            //ACT
            ActionResult <MovieDto> result = await _controller.CreateMovieWithActors(request);

            //ASSERT
            _mockMovieRepository.Verify(x => x.AddAsync(It.Is <Movie>(a => a.Title == request.Title &&
                                                                      a.Year == request.Year &&
                                                                      a.Genre == request.Genre)), Times.Once);
            _mockMovieRoleRepository.Verify(x => x.AddAsync(It.Is <MovieRole>(a => a.ActorId == actorId)), Times.Once);
            _mockMovieRepository.Verify(x => x.SaveAsync(), Times.Once);

            CreatedAtActionResult createdAtActionResult = Assert.IsType <CreatedAtActionResult>(result.Result);
            MovieDto movieDto = Assert.IsType <MovieDto>(createdAtActionResult.Value);

            Assert.Equal(request.Title, movieDto.Title);
            Assert.Equal(request.Year, movieDto.Year);
            Assert.Equal(request.Genre, movieDto.Genre);
        }
示例#5
0
        public IActionResult Post([FromBody] CreateMovieDto model)
        {
            if (model == null)
            {
                return(BadRequest("No data"));
            }
            if (string.IsNullOrEmpty(model.Title))
            {
                return(BadRequest("No name"));
            }
            if (string.IsNullOrEmpty(model.Director))
            {
                return(BadRequest("No director"));
            }
            if (model.Year == 0)
            {
                return(BadRequest("No year"));
            }

            var movie = new Movies
            {
                Director = model.Director,
                Title    = model.Title,
                Year     = model.Year,
            };
            var entity = _crud.AddItem(movie);

            return(Ok(new { movie = entity }));
        }
        public async Task <ActionResult <MovieDto> > CreateMovieWithActors(CreateMovieDto request)
        {
            foreach (var actorId in request.ActorIds)
            {
                Actor actor = await _actorRepository.GetAsync(actorId);

                if (actor == null)
                {
                    return(NotFound("Actor: " + actorId));
                }
            }
            var newMovie = new Movie()
            {
                Title = request.Title, Year = request.Year, Genre = request.Genre
            };

            await _movieRepository.AddAsync(newMovie);

            foreach (var actorId in request.ActorIds)
            {
                await _movieRoleRepository.AddAsync(new MovieRole()
                {
                    Movie = newMovie, ActorId = actorId
                });
            }
            await _movieRepository.SaveAsync();

            return(CreatedAtAction(nameof(GetMovie), new { movieId = newMovie.Id }, newMovie.ToDto()));
        }
示例#7
0
 public async Task <MovieDto> CreateMovieAsync([FromBody] CreateMovieDto createMovie, CancellationToken cancellationToken)
 {
     return(await _createMovieCommandHandler.HandleResult(new CreateMovieCommand
     {
         MovieData = createMovie
     }, cancellationToken));
 }
示例#8
0
        public async Task <ActionResult <CreateMovieCommand.Result> > CreateMovie([FromBody] CreateMovieDto movie, [FromHeader] Guid userId, CancellationToken cancellationToken)
        {
            var command = Mapping.Map <CreateMovieDto, CreateMovieCommand.Command>(movie);

            command.UserId = userId;

            var result = await _commandBus.Send(command, cancellationToken);

            return(Created("{id}", new { id = result.Id }));
        }
示例#9
0
        public IActionResult Create(CreateMovieDto movie)
        {
            try
            {
                _service.Create(movie);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(Ok());
        }
        public void Execute(CreateMovieDto request)
        {
            _validator.ValidateAndThrow(request);

            var movie = new Movie
            {
                Budget      = request.Budget,
                Description = request.Description,
                Title       = request.Title,
                Price       = request.Price,
                Quantity    = request.Quantity,
                GenreId     = request.GenreId,
                Oscars      = request.Oscars,
                Year        = request.Year
            };

            //add into ActorMovie
            foreach (var item in request.MovieActors)
            {
                movie.MovieActors.Add(new ActorMovie
                {
                    MovieId             = movie.Id,
                    ActorId             = item.ActorId,
                    ActorCharachterName = item.ActorCharacterName
                });
            }

            //DirectorMovie
            foreach (var item in request.MovieDirectors)
            {
                movie.MovieDirectors.Add(new DirectorMovie
                {
                    MovieId    = movie.Id,
                    DirectorId = item.DirectorId
                });
            }
            //WriterMovie
            foreach (var item in request.MovieWriters)
            {
                movie.MovieWriters.Add(new WriterMovie
                {
                    MovieId  = movie.Id,
                    WriterId = item.WriterId
                });
            }

            _context.Movies.Add(movie);
            _context.SaveChanges();
        }
示例#11
0
        public async ValueTask <ActionResult> PostMovie(CreateMovieDto createMovieDto)
        {
            if (!string.IsNullOrWhiteSpace(createMovieDto.Poster))
            {
                var moviePoster = Convert.FromBase64String(createMovieDto.Poster);
                createMovieDto.Poster = await _fileStorageService.SaveFile(moviePoster, "jpg", "movies");
            }

            Movie movie = _mapper.Map <Movie>(createMovieDto);

            _repo.CreateMovie(movie);
            _repo.SaveChanges();

            ReadMovieDto readMovieDto = _mapper.Map <ReadMovieDto>(movie);

            return(CreatedAtRoute(nameof(GetMovieById), new { id = movie.Id }, readMovieDto));
        }
示例#12
0
        private List <MovieActors> MapMovieActors(CreateMovieDto createMovieDto, Movie movie)
        {
            var result = new List <MovieActors>();

            if (createMovieDto.Actors == null)
            {
                return(result);
            }

            foreach (var actor in createMovieDto.Actors)
            {
                result.Add(new MovieActors()
                {
                    ActorId = actor.ActorId, Personage = actor.Personage
                });
            }

            return(result);
        }
示例#13
0
        private List <MovieGenders> MapMovieGenders(CreateMovieDto createMovieDto, Movie movie)
        {
            var result = new List <MovieGenders>();

            if (createMovieDto.GendersId == null)
            {
                return(result);
            }

            foreach (var id in createMovieDto.GendersId)
            {
                result.Add(new MovieGenders()
                {
                    GenderId = id
                });
            }

            return(result);
        }
        public async Task <ActionResult> CreateMovie(CreateMovieDto createMovie)
        {
            var movie = new Movie {
                MovieName = createMovie.Name,
                Year      = createMovie.Year,
                Genre     = createMovie.Genre,
            };

            if (createMovie.ActorIds != null)
            {
                movie.MovieActors = new List <MovieActor>();
                foreach (var actor in createMovie.ActorIds)
                {
                    var actorToAdd = new MovieActor {
                        MovieId = movie.Id, ActorId = actor
                    };
                    movie.MovieActors.Add(actorToAdd);
                }
            }
            context.Add(movie);
            await context.SaveChangesAsync();

            return(CreatedAtAction("GetMovie", new { id = movie.Id }, movie));
        }
示例#15
0
 public async Task <APIResponse> Post([FromForm] CreateMovieDto createMovieDto)
 {
     return(await _moviesService.Post(createMovieDto));
 }
 public IActionResult Post([FromBody] CreateMovieDto dto, [FromServices] ICreateMovieCommand command)
 {
     _executor.ExecuteCommand(command, dto);
     return(StatusCode(StatusCodes.Status201Created));
 }