Ejemplo n.º 1
0
        public async Task <ContaArgument> Criar(ContaArgument conta)
        {
            if (conta == null)
            {
                throw new ArgumentException("É necessário informar o nome do banco, agência, conta, dígito e o tipo de conta (corrente/poupança).");
            }

            if (string.IsNullOrEmpty(conta.Banco))
            {
                throw new ArgumentException("O nome do banco é requerido.");
            }

            if (conta.Agencia < 0 || conta.Agencia.ToString().Length != 4)
            {
                throw new ArgumentException("Número da agência esta inválido.");
            }

            if (conta.ContaNumero < 0 || conta.ContaNumero.ToString().Length > 8)
            {
                throw new ArgumentException("Número da conta esta inválido.");
            }

            if (conta.Digito < 0 || conta.Digito.ToString().Length != 1)
            {
                throw new ArgumentException("Número do digíto da conta esta inválido.");
            }

            if (string.IsNullOrEmpty(conta.Tipo.ToString()))
            {
                throw new ArgumentException("Deve ser informado o tipo de conta: Corrente ou Poupança.");
            }

            return(Mapper.Map <ContaArgument>(new Conta(conta.Banco, conta.Agencia, conta.ContaNumero, conta.Digito, conta.Tipo, conta.Saldo)));
        }
Ejemplo n.º 2
0
        public async Task <ContaArgument> Debitar(ContaArgument conta, decimal valor)
        {
            if (valor < 0)
            {
                throw new ArgumentException("Não é permitido depósito com valor negativo.");
            }

            conta.Saldo = conta.Saldo - valor;
            return(conta);
        }
Ejemplo n.º 3
0
        public async Task <OperacaoArgument> EfetuaLancamento(ContaArgument contaOrigem, ContaArgument contaDestino, TipoOperacao tipoOperacao, decimal valor)
        {
            ContaArgument origem  = new ContaArgument();
            ContaArgument destino = new ContaArgument();

            if (contaOrigem.Agencia == contaDestino.Agencia && contaOrigem.ContaNumero == contaDestino.ContaNumero)
            {
                throw new ArgumentException("Agencia de origem não pode ser a mesma de destino");
            }

            if (tipoOperacao == TipoOperacao.Credito)
            {
                origem = await _contaService.Creditar(contaOrigem, valor);

                destino = await _contaService.Debitar(contaDestino, valor);
            }

            if (tipoOperacao == TipoOperacao.Debito)
            {
                origem = await _contaService.Debitar(contaOrigem, valor);

                destino = await _contaService.Creditar(contaDestino, valor);
            }

            var operacao = new Operacao
            {
                ContaOrigem          = Mapper.Map <Conta>(origem),
                ContaDestino         = Mapper.Map <Conta>(destino),
                DataRegistroOperacao = DateTime.Now,
                Tipo = tipoOperacao
            };


            await _lancamentoRepository.RegistraLancamento(operacao);

            return(Mapper.Map <OperacaoArgument>(operacao));
        }
Ejemplo n.º 4
0
        public MainTest()
        {
            try
            {
                Mapper.Initialize(cfg =>
                {
                    cfg.CreateMap <Conta, ContaArgument>();
                    cfg.CreateMap <Operacao, OperacaoArgument>();
                });
            }
            catch (InvalidOperationException)
            {
                //Mapper já inicializado!!! Segue a vida!
            }

            _lancamentoRepository = new LancamentoRepository();
            _contaService         = new ContaService();
            _lancamentoService    = new LancamentoService(_contaService, _lancamentoRepository);


            //CRIA AS CONTAS E GERA UM SALDO INICIAL PARA TESTE
            _dadosContaOrigem  = CriaConta("Santander", 2300, 10000001, 1, TipoConta.Corrente, 1000);
            _dadosContaDestino = CriaConta("Santander", 2300, 20000002, 3, TipoConta.Corrente, 1500);
        }
Ejemplo n.º 5
0
 public async Task <ContaArgument> SetaSaldoInicial(ContaArgument conta, decimal valor)
 {
     conta.Saldo = valor;
     return(conta);
 }