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); }
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)); }
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); }
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)); } }
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)); }
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); }
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()); }
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); }
public async Task Update(UpdateProdutoCommand command) { await mediator.Send(command); }