Ejemplo n.º 1
0
        public void CorrecaoFinanceira(ContasCorrentes contaCorrente)
        {
            if (contaCorrente.UltimaMovimentacao.Date == DateTime.Now.Date || contaCorrente.Saldo == 0)
            {
                return;
            }

            var diasUteisPeriodo = GetDiferencaDias(contaCorrente.UltimaMovimentacao.Date, DateTime.Now.Date);

            if (diasUteisPeriodo == 0)
            {
                return;
            }

            var taxaJrs         = Math.Round(taxaJurosCDIDia, 4);
            var baseDeCalculo   = Math.Pow(1 + taxaJrs, diasUteisPeriodo) - 1;
            var saldoAtualizado = contaCorrente.Saldo * Convert.ToDecimal(baseDeCalculo);

            contaCorrente.Saldo = contaCorrente.Saldo + saldoAtualizado;
            contaCorrente.UltimaMovimentacao = DateTime.Now;
            _contaCorrenteRepositorio.Atualizar(contaCorrente);

            _operacoesServico.Rentabilizar(contaCorrente.Id, saldoAtualizado);

            return;
        }
Ejemplo n.º 2
0
        public void TestarAdicionarContaSucesso()
        {
            var             PessoaIdAux          = Guid.NewGuid();
            var             ContaIdAux           = Guid.NewGuid();
            ContasCorrentes ContaCorrente_Valida = new ContasCorrentes()
            {
                Id                 = ContaIdAux,
                Agencia            = 123,
                Conta              = 123,
                UltimaMovimentacao = DateTime.Now,
                PessoaId           = PessoaIdAux,
                Pessoa             = new Pessoas
                {
                    Id   = PessoaIdAux,
                    Nome = "Vainer",
                    CPF  = "1234"
                }
            };

            mock.Setup(cc => cc.Adicionar(ContaCorrente_Valida))
            .Returns(() => new ContasCorrentes());

            List <ItemValidacao>?validacoes = ValidacoesAdicionarFake(ContaCorrente_Valida);

            validacoes.Should().BeNullOrEmpty("As regras de validações não foram atendidas");
        }
Ejemplo n.º 3
0
        private List <ItemValidacao>?ValidacoesAdicionarFake(ContasCorrentes contasCorrentes)
        {
            ContasCorrentesServico contasCorrentesServico = new ContasCorrentesServico(mock.Object);

            var retorno = contasCorrentesServico.Adicionar(contasCorrentes);

            return(retorno.Validacoes);
        }
Ejemplo n.º 4
0
        public virtual ContasCorrentes ContaValidada(ref ContasCorrentes contaCorrente)
        {
            NenhumaContaAberta(ref contaCorrente);
            ObrigatorioPessoaVinculada(ref contaCorrente);
            AgenciaNaoPodeSerZero(ref contaCorrente);
            ContaNaoPodeSerZero(ref contaCorrente);

            return(contaCorrente);
        }
Ejemplo n.º 5
0
        public ContasCorrentes Atualizar(ContasCorrentes contaCorrente)
        {
            var validacao = new ContasCorrentesValidadas(_contaCorrenteRepositorio);

            contaCorrente = validacao.ContaValidada(ref contaCorrente);

            if (!contaCorrente.Validacoes.Any())
            {
                contaCorrente.UltimaMovimentacao = DateTime.Now;
                contaCorrente = _contaCorrenteRepositorio.Atualizar(contaCorrente);
            }

            return(contaCorrente);
        }
Ejemplo n.º 6
0
        private ContasCorrentes ContaNaoPodeSerZero(ref ContasCorrentes contaCorrente)
        {
            var ContaZero = contaCorrente.Conta == 0;

            if (ContaZero)
            {
                contaCorrente.Validacoes.Add(new ItemValidacao()
                {
                    NomePropriedade = "Conta",
                    Mensagem        = "A Conta precisa conter um registro válido!"
                });
            }

            return(contaCorrente);
        }
Ejemplo n.º 7
0
        private ContasCorrentes ObrigatorioPessoaVinculada(ref ContasCorrentes contaCorrente)
        {
            var ExistePessoa = contaCorrente.Pessoa != null;

            if (!ExistePessoa)
            {
                contaCorrente.Validacoes.Add(new ItemValidacao()
                {
                    NomePropriedade = "Pessoa.Nome",
                    Mensagem        = "Uma Pessoa não foi vinculada à conta!"
                });
            }

            return(contaCorrente);
        }
Ejemplo n.º 8
0
        private ContasCorrentes NenhumaContaAberta(ref ContasCorrentes contaCorrente)
        {
            var ExisteRegistro = _contaRepositorio.Listar().Count() > 0;

            if (ExisteRegistro)
            {
                contaCorrente.Validacoes.Add(new ItemValidacao()
                {
                    NomePropriedade = "Conta",
                    Mensagem        = "Já existe Conta aberta!"
                });
            }

            return(contaCorrente);
        }
Ejemplo n.º 9
0
        public ValidacoesContasCorrentesTeste()
        {
            mock = new Mock <IContasCorrentesRepositorio>(MockBehavior.Default);

            ContasCorrentes contaCorrenteComErro = new ContasCorrentes()
            {
                Agencia            = 123,
                Conta              = 123,
                UltimaMovimentacao = DateTime.Now,
                PessoaId           = Guid.NewGuid()
            };

            contaCorrenteComErro.Validacoes.Add(new ItemValidacao()
            {
                NomePropriedade = "Agencia",
                Mensagem        = "A Agência precisa conter um registro válido!"
            });
            contaCorrenteComErro.Validacoes.Add(new ItemValidacao()
            {
                NomePropriedade = "Conta",
                Mensagem        = "A Conta precisa conter um registro válido!"
            });

            mock.Setup(cc => cc.Adicionar(ContaCorrente_AgenciaEContaComZero))
            .Returns(() => contaCorrenteComErro);


            ContasCorrentes contaCorrenteSemPessoa = new ContasCorrentes()
            {
                Agencia            = 123,
                Conta              = 123,
                UltimaMovimentacao = DateTime.Now,
                PessoaId           = Guid.NewGuid()
            };

            contaCorrenteSemPessoa.Validacoes.Add(new ItemValidacao()
            {
                NomePropriedade = "Pessoa.Nome",
                Mensagem        = "Uma Pessoa não foi vinculada à conta!"
            });

            mock.Setup(cc => cc.Adicionar(ContaCorrente_SemPessoaInformado))
            .Returns(() => contaCorrenteSemPessoa);
        }
Ejemplo n.º 10
0
        public DepositoTeste()
        {
            mock = new Mock <IOperacoesRepositorio>(MockBehavior.Default);
            mockContaCorrente = new Mock <IContasCorrentesRepositorio>(MockBehavior.Strict);
            mockService       = new Mock <IOperacoesServico>(MockBehavior.Strict);

            var PessoaIdAux = Guid.NewGuid();
            var ContaIdAux  = Guid.NewGuid();

            ContaCorrente_Valida = new ContasCorrentes()
            {
                Id                 = ContaIdAux,
                Agencia            = 123,
                Conta              = 123,
                UltimaMovimentacao = DateTime.Now,
                PessoaId           = PessoaIdAux,
                Pessoa             = new Pessoas
                {
                    Id   = PessoaIdAux,
                    Nome = "Vainer",
                    CPF  = "1234"
                }
            };

            depositoNegativo = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Deposito,
                Valor        = -1000
            };

            depositoPositivo = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Deposito,
                Valor        = 1000
            };
        }
Ejemplo n.º 11
0
        public ResgateValidoTeste()
        {
            mock = new Mock <IOperacoesRepositorio>(MockBehavior.Default);
            mockContaCorrente = new Mock <IContasCorrentesRepositorio>(MockBehavior.Default);
            mockService       = new Mock <IOperacoesServico>(MockBehavior.Strict);

            var ContaIdAux  = Guid.NewGuid();
            var PessoaIdAux = Guid.NewGuid();

            ContaCorrente_Valida = new ContasCorrentes()
            {
                Id                 = ContaIdAux,
                Agencia            = 123,
                Conta              = 123,
                UltimaMovimentacao = DateTime.Now,
                Saldo              = 5000,
                PessoaId           = PessoaIdAux,
                Pessoa             = new Pessoas
                {
                    Id   = PessoaIdAux,
                    Nome = "Vainer",
                    CPF  = "1234"
                }
            };

            mockContaCorrente.Setup(cc => cc.ObterPorId(ContaIdAux))
            .Returns(() => ContaCorrente_Valida);

            resgateValorZerado = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = 0
            };
            resgateValorNaoZerado = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = 1000
            };
            resgateValorNegativo = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = -1000
            };
            resgateValorPositivo = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = 1000
            };
            resgateSaldoInvalido = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = 10000
            };
            resgateSaldoValido = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = 1000
            };
            resgateValorPadraoInvalido = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = 50000
            };
            resgateValorPadraoValido = new Operacoes()
            {
                ContaCorrenteId = ContaIdAux,
                Data            = DateTime.Now,
                Id           = Guid.NewGuid(),
                TipoOperacao = TipoOperacao.Resgate,
                Valor        = 1000
            };
        }