Exemplo n.º 1
0
        public async Task <ActionResult> CreateNewMovieWithHisTags([FromBody] CreateMovieModel movieModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            MovieDomainModel domainModel = new MovieDomainModel
            {
                Current = movieModel.Current,
                Rating  = movieModel.Rating,
                Title   = movieModel.Title,
                Year    = movieModel.Year
            };

            MovieCreateTagDomainModel movieCreateTagDomainModel = new MovieCreateTagDomainModel
            {
                Duration          = movieModel.Duration,
                tagsForMovieToAdd = movieModel.listOfTags
            };

            MovieDomainModel createMovie;

            try
            {
                createMovie = await _movieService.AddMovie(domainModel, movieCreateTagDomainModel);
            }
            catch (DbUpdateException e)
            {
                ErrorResponseModel errorResponse = new ErrorResponseModel
                {
                    ErrorMessage = e.InnerException.Message ?? e.Message,
                    StatusCode   = System.Net.HttpStatusCode.BadRequest
                };

                return(BadRequest(errorResponse));
            }

            if (createMovie == null)
            {
                ErrorResponseModel errorResponse = new ErrorResponseModel
                {
                    ErrorMessage = Messages.MOVIE_CREATION_ERROR,
                    StatusCode   = System.Net.HttpStatusCode.InternalServerError
                };

                return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError, errorResponse));
            }

            return(Created("movies//" + createMovie.Id, createMovie));
        }
Exemplo n.º 2
0
        public void MovieService_AddMovie_ReturnNull()
        {
            //Arrange
            MovieDomainModel          movieDomainModel = _movieDomainModel;
            MovieCreateTagDomainModel movieCreate      = new MovieCreateTagDomainModel();

            Movie movie = null;

            _mockMoviesRepository = new Mock <IMoviesRepository>();
            _mockMoviesRepository.Setup(x => x.Insert(It.IsAny <Movie>())).Returns(movie);

            MovieService movieController = new MovieService(_mockMoviesRepository.Object, _mockProjectionsRepository.Object, _mockMovieTagsRepository.Object, _mockTicketRepository.Object, _mockTagRepository.Object);
            //Act
            var resultAction = movieController.AddMovie(movieDomainModel, movieCreate).ConfigureAwait(false).GetAwaiter().GetResult();

            //Assert
            Assert.IsNull(resultAction);
        }
Exemplo n.º 3
0
        public void MovieService_AddMovie_ReturnMovieDomainModel()
        {
            //Arrange
            MovieDomainModel          movieDomainModel = _movieDomainModel;
            MovieCreateTagDomainModel movieCreate      = new MovieCreateTagDomainModel();
            Movie movie = _movie;

            //MovieDomainModel repositoryResponse = _mov;
            _mockMoviesRepository = new Mock <IMoviesRepository>();
            _mockMoviesRepository.Setup(x => x.Insert(It.IsAny <Movie>())).Returns(movie);

            MovieService movieController = new MovieService(_mockMoviesRepository.Object, _mockProjectionsRepository.Object, _mockMovieTagsRepository.Object, _mockTicketRepository.Object, _mockTagRepository.Object);
            //Act
            var resultAction = movieController.AddMovie(movieDomainModel, movieCreate).ConfigureAwait(false).GetAwaiter().GetResult();

            //Assert
            Assert.IsNotNull(resultAction);
            Assert.IsInstanceOfType(resultAction, typeof(MovieDomainModel));
            Assert.AreEqual(resultAction.Rating, movieDomainModel.Rating);
            Assert.AreEqual(resultAction.Id, movieDomainModel.Id);
        }
Exemplo n.º 4
0
        public async Task <MovieDomainModel> AddMovie(MovieDomainModel newMovie, MovieCreateTagDomainModel movieCreateTagDomainModel)
        {
            Movie movieToCreate = new Movie()
            {
                Title   = newMovie.Title,
                Current = newMovie.Current,
                Year    = newMovie.Year,
                Rating  = newMovie.Rating
            };

            var data = _moviesRepository.Insert(movieToCreate);

            if (data == null)
            {
                return(null);
            }

            if (movieCreateTagDomainModel.Duration > 0)
            {
                var durationIntToString = movieCreateTagDomainModel.Duration.ToString();
                Tag durationTag         = new Tag
                {
                    Name = durationIntToString,
                    Type = "duration",
                };

                var newTagAdded = _tagRepository.Insert(durationTag);

                MovieTag movieTag = new MovieTag()
                {
                    MovieId = data.Id,
                    Tag     = newTagAdded
                };

                _movieTagsRepository.Insert(movieTag);
            }

            if (movieCreateTagDomainModel.tagsForMovieToAdd != null && movieCreateTagDomainModel.tagsForMovieToAdd.Count > 0)
            {
                foreach (var item in movieCreateTagDomainModel.tagsForMovieToAdd)
                {
                    var findTag = _tagRepository.GetByIdName(item);
                    if (findTag != null)
                    {
                        MovieTag moviTagToAdd = new MovieTag
                        {
                            MovieId = data.Id,
                            TagId   = findTag.Id
                        };
                        _movieTagsRepository.Insert(moviTagToAdd);
                    }
                }
            }

            _moviesRepository.Save();

            MovieDomainModel domainModel = new MovieDomainModel()
            {
                Id      = data.Id,
                Title   = data.Title,
                Current = data.Current,
                Year    = data.Year,
                Rating  = data.Rating ?? 0
            };

            return(domainModel);
        }