コード例 #1
0
        public async Task <Response <Exception, Movie> > Handle(MovieCreateCommand request, CancellationToken cancellationToken)
        {
            // Verifica se o genero enviado existe na base
            var genreCallback = await _genreRepository.GetByIdAsync(request.GenreId);

            if (genreCallback.HasError)
            {
                return(genreCallback.Error);
            }

            // Checa se o gênero escolhido está inativo
            if (!genreCallback.Success.Active)
            {
                return(new InactiveEntityException("Gênero"));
            }

            // Faz o mapeamento do command para a entidade
            var movieMap = Mapper.Map <MovieCreateCommand, Movie>(request);

            // Cria o filme
            var newMovieCallback = await _movieRepository.CreateAsync(movieMap);

            // Verifica algum erro
            if (newMovieCallback.HasError)
            {
                return(newMovieCallback.Error);
            }

            // Retorna o filme criado
            return(newMovieCallback.Success);
        }
コード例 #2
0
        private MovieCreateCommand MovieCreateCommandData()
        {
            var movieCreateCommand = new MovieCreateCommand()
            {
                Title       = "X-Men",
                ReleaseDate = new DateTime(2020, 10, 1)
            };

            return(movieCreateCommand);
        }
コード例 #3
0
        // Generate Json for Testing Api on Postman
        public MovieCreateCommand MovieCreateCommandData()
        {
            var movieCreateCommand = new MovieCreateCommand()
            {
                Title       = "Hacker",
                ReleaseDate = new System.DateTime(1995, 1, 1),
                AggregateId = Guid.NewGuid(),
                StateId     = Guid.NewGuid()
            };

            return(movieCreateCommand);
        }
コード例 #4
0
        public async Task <int> CreateAsync(MovieCreateCommand command)
        {
            var moviesCountByName = await _repository.CountAsync(x => x.Title.Equals(command.Title));

            Guard.Against(moviesCountByName > 0, ErrorType.Duplicating);

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

            movie.ImagePath = $"{Environment.CurrentDirectory}\\wwwroot\\movies-imgs\\default.png";

            var createdMovie = await _repository.CreateAsync(movie);

            return(await CommitAsync() > 0 ? createdMovie.ID : 0);
        }
コード例 #5
0
        public async Task <IActionResult> Create([Bind("Id,Title,Director,Actors,Image, Year")] MovieViewModel movie, CancellationToken cancellationToken = default)
        {
            if (ModelState.IsValid)
            {
                var request = new MovieCreateCommand {
                    MovieViewModel = movie
                };

                var createdMovie = await _mediator.Send(request, cancellationToken);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(movie));
        }
コード例 #6
0
        async Task <IActionResult> IApiCommandHandler <MovieCreateCommand> .HandleAsync(ControllerBase controllerBase, MovieCreateCommand command)
        {
            try
            {
                if (command == null)
                {
                    return(controllerBase.BadRequest());
                }

                return(controllerBase.Ok(await movieCreateCommandHandler?.HandleAsync(command)));
            }
            catch
            {
                throw;
            }
        }
コード例 #7
0
 public async Task <IActionResult> CreateAsync(MovieCreateCommand command)
 {
     return(Ok(await _movieService.CreateAsync(command)));
 }
コード例 #8
0
 public async Task <Object> OnMovieCreateAsync([FromBody] MovieCreateCommand movieCreateCommand)
 => await mediator.Send <Object>(movieCreateCommand);
コード例 #9
0
 public Task <IActionResult> CreateMovieAsync(
     [FromBody] MovieCreateCommand command,
     [FromServices] IMovieCreateApiCommandHandler movieCreateApiCommandHandler
     ) => movieCreateApiCommandHandler.HandleAsync(this, command);
コード例 #10
0
 public async Task <IActionResult> Create([FromBody] MovieCreateCommand movieCreateCommand)
 {
     return(HandleCommand(await _mediator.Send(movieCreateCommand)));
 }
コード例 #11
0
        async Task <object> ICommandHandler <MovieCreateCommand, object> .HandleAsync(MovieCreateCommand command)
        {
            try
            {
                movieCreateRepository.DataEventStoreHandler += MovieCreateRepository_DataEventStoreHandler;
                var repositoryResponse = await movieCreateRepository?.CreateAsync(mapper.Map <MovieModel>(command));

                if (repositoryResponse == false)
                {
                    return(await base.MovieExistMessageAsync());
                }

                return(repositoryResponse);
            }
            catch
            {
                throw;
            }
            finally
            {
                movieCreateRepository.DataEventStoreHandler -= MovieCreateRepository_DataEventStoreHandler;
            }
        }