Ejemplo n.º 1
0
        public async Task <ValidationResult> Handle(UpdateProdutoCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                return(request.ValidationResult);
            }

            var produto         = new Produto(request.Id, request.Codigo, request.Nome, request.Preco, request.Quantidade);
            var existingProduto = await _produtorepository.GetCodigo(produto.Codigo);

            if (existingProduto is null)
            {
                AddError("O produto não existe.");
                return(ValidationResult);
            }

            _produtorepository.Update(produto);

            var validation = await Commit(_produtorepository.UnitOfWork);

            if (validation.IsValid)
            {
                produto.AddDomainEvent(new ProdutoUpdateEvent(produto.Id, produto.Codigo, produto.Nome, produto.Preco, produto.Quantidade));
            }

            return(validation);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Cadastrar([FromRoute] Guid id, [FromBody] UpdateProdutoCommand command)
        {
            var(success, result) = await _service.Update(command.AtribuirId(id));

            if (!success)
            {
                return(BadRequest(new FailViewModel(result as string)));
            }

            return(Ok(result as ProdutoViewModel));
        }
Ejemplo n.º 3
0
        public async Task UpdateProdutoCommandValorInvalido()
        {
            //Arrange
            var moqMediator          = MoqValidationTests.NewMediator();
            var moqProdutoRepository = new ProdutoRepositoryFake();

            //Act
            var handler = new Handler(moqMediator.Object, moqProdutoRepository);
            var command = new UpdateProdutoCommand(new Produto(2, "Produto B", 0m));
            var result  = await handler.Handle(command);

            //Assert
            Assert.IsFalse(command.IsValid());
            Assert.IsTrue(result.HasErrors);
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Put(UpdateProdutoCommand command)
        {
            try
            {
                await produtoApplicationService.Update(command);

                return(Ok(new { Message = "Produto ataulizado com sucesso" }));
            }
            catch (ValidationException e)
            {
                return(BadRequest(ValidationAdapter.Parse(e.Errors)));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }
Ejemplo n.º 5
0
        public async Task <(bool result, object res)> Update(UpdateProdutoCommand command)
        {
            var produto = await ObterPorId(command.Id);

            if (produto == null)
            {
                return(false, "Produto não existe");
            }

            produto.Nome              = command.Nome;
            produto.LinkFoto          = command.LinkFoto;
            produto.ValorUnitario     = command.ValorUnitario;
            produto.EmFalta           = command.EmFalta;
            produto.DescricaoBreve    = command.DescricaoBreve;
            produto.DescricaoCompleta = command.DescricaoCompleta;

            _context.Produtos.Atualizar(produto);

            return(true, await ObterPorIdView(command.Id));
        }
Ejemplo n.º 6
0
        public async Task <Unit> Handle(UpdateProdutoCommand request, CancellationToken cancellationToken)
        {
            var produto = mapper.Map <Produto>(request);

            var validation = new ProdutoValidation().Validate(produto);

            if (!validation.IsValid)
            {
                throw new ValidationException(validation.Errors);
            }

            produtoDomainService.Update(produto);

            await mediator.Publish(new ProdutoNotification
            {
                Produto = produto,
                Action  = ActionNotification.Atualizar
            });

            return(Unit.Value);
        }
Ejemplo n.º 7
0
        public Task <CommandResult> Handle(UpdateProdutoCommand command, CancellationToken cancellationToken)
        {
            if (!command.IsValid())
            {
                NotifyCommandErrors(command);
                return(Response());
            }

            Marca   marca   = _marcaRepository.GetById(command.MarcaId, loadRelatedData: false);
            Produto produto = new Produto(command.ProdutoId, command.Nome, command.Unidade, command.Estoque, command.EstoqueMinimo, command.EstoqueIdeal, command.PrecoVenda, marca);

            produto.AdicionarReferencias(command.ReferenciaFabricante, command.ReferenciaOriginal, command.ReferenciaAuxiliar);

            _produtoRepository.Update(produto);

            if (Commit())
            {
                _mediator.Publish(new UpdatedProdutoEvent());
            }

            return(Response());
        }
Ejemplo n.º 8
0
        public async Task <Result> Handle(UpdateProdutoCommand request, CancellationToken cancellationToken = default)
        {
            var result = new Result();

            if (request.IsValid())
            {
                var produto = await _produtoRepository.GetById(request.Id);

                if (produto != null)
                {
                    produto.Nome      = request.Nome;
                    produto.Valor     = request.Valor;
                    produto.ImagemURL = request.ImagemURL;
                    if (!produto.DataCriacao.Equals(request.DataCriacao))
                    {
                        produto.DataCriacao = request.DataCriacao;
                    }
                    produto = await _produtoRepository.Update(produto);

                    result.DefineObjetoRetorno(produto);
                }
                else
                {
                    var message = "O Produto não foi encontrado.";
                    await _mediator.Publish(new Notification(message), cancellationToken);

                    result.AddError(message);
                }
            }
            else
            {
                await _mediator.Publish(new Notification(request.ValidationResult), cancellationToken);

                result.AddErrors(GetErrors(request));
            }

            return(result);
        }
Ejemplo n.º 9
0
 public async Task Update(UpdateProdutoCommand command)
 {
     await mediator.Send(command);
 }