Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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));
            }
        }
Ejemplo n.º 5
0
        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}");
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public void Transferir(TransferenciaCommand transferenciaCommand)
 {
     _movimentacaoDominioServico.Transferir(transferenciaCommand);
     Save();
 }