public IActionResult Transferir(TransferenciaViewModel model) { if (!ModelState.IsValid) { CarregarDropUsuario(); return(View(model)); } var transferenciaCommand = new TransferenciaCommand(model.ContaDebitoId, model.ContaCreditoId, model.Valor); _movimentacaoAppServico.Transferir(transferenciaCommand); return(RedirectToAction(nameof(Index), nameof(Usuario))); }
public IActionResult Transferencia([FromBody] TransferenciaCommand command) { if (command == null) { return(BadRequest()); } var result = _mediator.Send(command).Result; if (result.DomainValidationMessages?.Count() > 0) { return(UnprocessableEntity(result)); } return(Ok(result)); }
public void Transferir(TransferenciaCommand transferenciaCommand) { var contaDebito = _contaRepositorio.ObterPorId(transferenciaCommand.ContaDebitoId); if (contaDebito.Saldo.Valor < transferenciaCommand.Valor) { DomainEvent.RaiseEvent(new DomainNotification("SaldoInsuficiente", "Saldo insuficiente")); return; } var contaCredito = _contaRepositorio.ObterPorId(transferenciaCommand.ContaCreditoId); contaDebito.Debitar(transferenciaCommand.Valor); contaCredito.Creditar(transferenciaCommand.Valor); _contaRepositorio.Editar(contaDebito); _contaRepositorio.Editar(contaCredito); }
public IActionResult Transferencia([FromBody] TransferenciaCommand transferencia) { try { var retorno = _contaCorrenteAppService.Transferencia(transferencia.ContaOrigem, transferencia.ContaDestino, transferencia.Valor); if (retorno != "Transferência efetuada com sucesso!") { return(BadRequest(retorno)); } return(Ok(retorno)); } catch { return(StatusCode(500)); } }
public static void Executar() { var contraA = new ContaBancaria(); contraA.Depositar(100); var contaB = new ContaBancaria(); Console.WriteLine("\nRealizando transferência..."); var transferencia = new TransferenciaCommand(contraA, contaB, 100); transferencia.ChamarComando(); Console.WriteLine($"\nConta A => {contraA}"); Console.WriteLine($"Conta B => {contaB}"); Console.WriteLine("\nDesfazendo transferência..."); transferencia.DesfazerComando(); Console.WriteLine($"\nConta A => {contraA}"); Console.WriteLine($"Conta B => {contaB}"); }
public void Transeferir_valor_entre_contas() { var contaDebitoId = 1; var contaCreditoId = 2; var valor = 99.99M; var contaDebito = Fake.CriarConta(); var saldoAnteriorContaDebito = contaDebito.Saldo; var contaCredito = Fake.CriarConta(); var saldoAnteriorContaCredito = contaCredito.Saldo; var transferenciaCommand = new TransferenciaCommand(contaDebitoId, contaCreditoId, valor); var contaRepositorioMock = new Mock <IContaRepositorio>(); contaRepositorioMock.Setup(c => c.ObterPorId(contaDebitoId)).Returns(contaDebito); contaRepositorioMock.Setup(c => c.ObterPorId(contaCreditoId)).Returns(contaCredito); var contaServico = new MovimentacaoDominioServico(contaRepositorioMock.Object); contaServico.Transferir(transferenciaCommand); Assert.Equal(saldoAnteriorContaDebito.Valor - valor, contaDebito.Saldo.Valor); Assert.Equal(saldoAnteriorContaCredito.Valor + valor, contaCredito.Saldo.Valor); }
public void Transferir(TransferenciaCommand transferenciaCommand) { _movimentacaoDominioServico.Transferir(transferenciaCommand); Save(); }