コード例 #1
0
        public bool Deposito(int agencia, int conta, decimal valor, out string mensagemErro)
        {
            mensagemErro = "";
            var ag = AgenciaRepository.GetById(agencia);

            if (ag == null)
            {
                mensagemErro = "Agência Invalida";
                return(false);
            }

            var cc = ContaRepository.GetById(agencia, conta);

            if (cc == null)
            {
                mensagemErro = "Conta Invalida";
                return(false);
            }

            if (valor <= 0)
            {
                mensagemErro = "O valor do deposito for maior que zero!";
                return(false);
            }

            cc.Saldo = cc.Saldo + valor;

            var extrato = new Extrato()
            {
                DataRegistro = DateTime.Now,
                AgenciaId    = agencia,
                ContaId      = conta,
                Valor        = valor,
                Saldo        = cc.Saldo,
                Descricao    = "Deposito"
            };

            try
            {
                using (var t = new TransactionScope())
                {
                    ContaRepository.Save(cc);
                    ExtratoRepository.Save(extrato);
                    t.Complete();
                }
            }
            catch (Exception ex)
            {
                mensagemErro = "Ocorreu um problema ao fazer o depósito!";
                return(false);
            }

            return(true);
        }
コード例 #2
0
        public IList <Extrato> Extrato(int agencia, int conta, DateTime dataInicio, DateTime dataFim, out string mensagemErro)
        {
            mensagemErro = "";
            var ag = AgenciaRepository.GetById(agencia);

            if (ag == null)
            {
                mensagemErro = "Agencia Invalida";
                return(null);
            }

            var cc = ContaRepository.GetById(agencia, conta);

            if (cc == null)
            {
                mensagemErro = "Conta Invalida";
                return(null);
            }

            if (dataInicio > dataFim)
            {
                mensagemErro = "Data inicio deve ser menor que a data de fim!";
                return(null);
            }

            if ((dataFim - dataInicio).Days > 120)
            {
                mensagemErro = "O perido nao deve ser superior a 120 dias!";
                return(null);
            }

            try
            {
                var extrato = ExtratoRepository.GetByPeriodo(agencia, conta, dataInicio, dataFim);

                var linhaSaldo = new Extrato()
                {
                    Descricao = "Saldo anterior",
                    Saldo     = ExtratoRepository.GetSaldoAnterior(agencia, conta, dataInicio, dataFim)
                };

                extrato.Insert(0, linhaSaldo);

                return(extrato);
            }
            catch (Exception ex)
            {
                mensagemErro = "Ocorreu um problema ao obter o extrato!";
                return(null);
            }
        }
コード例 #3
0
        public bool Transferencia(int agenciaOrigem, int contaOrigem, decimal valor, int agenciaDestino, int contaDestino, out string mensagemErro)
        {
            mensagemErro = "";
            var ag = AgenciaRepository.GetById(agenciaOrigem);

            if (ag == null)
            {
                mensagemErro = "Agencia de origem Invalida";
                return(false);
            }

            var cc = ContaRepository.GetById(agenciaOrigem, contaOrigem);

            if (cc == null)
            {
                mensagemErro = "Conta de Origem Invalida";
                return(false);
            }

            if (valor <= 0)
            {
                mensagemErro = "O valor deve ser maior que zero!";
                return(false);
            }

            if (valor > cc.Saldo)
            {
                mensagemErro = "O valor deve ser menor ou igual ao saldo da conta de origem!";
                return(false);
            }

            var ag2 = AgenciaRepository.GetById(agenciaDestino);

            if (ag2 == null)
            {
                mensagemErro = "Agencia de destino invalida";
                return(false);
            }

            var cc2 = ContaRepository.GetById(agenciaDestino, contaDestino);

            if (cc2 == null)
            {
                mensagemErro = "Conta de destino inválida!";
                return(false);
            }



            cc.Saldo = cc.Saldo - valor;

            var extratoOrigem = new Extrato()
            {
                DataRegistro = DateTime.Now,
                AgenciaId    = agenciaOrigem,
                ContaId      = contaOrigem,
                Valor        = valor * -1,
                Saldo        = cc.Saldo,
                Descricao    = $"Transferencia para AG {agenciaDestino} CC {contaDestino}"
            };

            cc2.Saldo = cc2.Saldo + valor;

            var extratoDestino = new Extrato()
            {
                DataRegistro = DateTime.Now,
                AgenciaId    = agenciaDestino,
                ContaId      = contaDestino,
                Valor        = valor,
                Saldo        = cc2.Saldo,
                Descricao    = $"Transferencia de AG {agenciaOrigem} CC {contaOrigem}"
            };

            try
            {
                using (var t = new TransactionScope())
                {
                    ContaRepository.Save(cc);
                    ContaRepository.Save(cc2);
                    ExtratoRepository.Save(extratoOrigem);
                    ExtratoRepository.Save(extratoDestino);
                    t.Complete();
                }
            }
            catch (Exception ex)
            {
                mensagemErro = "Ocorreu um problema ao fazer o transferencia!";
                return(false);
            }

            return(true);
        }