public OperacaoDTO Sacar(ContaDTO conta, decimal valorSacar)
        {
            var caixaEletronico = _commonDbContext.Caixas.FirstOrDefault();

            var contaUsuario = _commonDbContext.Contas.Where(x => x.NumeroContaCli == conta.NumeroContaCli).FirstOrDefault();

            OperacaoDTO operacao = new OperacaoDTO();

            if (_caixaEletronicoDAO.ValidarSaque(valorSacar, contaUsuario, caixaEletronico))
            {
                contaUsuario.SaldoConta -= valorSacar;
                conta.SaldoConta         = contaUsuario.SaldoConta;

                _commonDbContext.Update(contaUsuario);
                _commonDbContext.Update(caixaEletronico);
                _commonDbContext.SaveChanges();

                operacao.Conta     = conta;
                operacao.Realizada = true;

                var notasParaSaque = _caixaEletronicoDAO.RetornarNotasNecessarias(valorSacar);

                caixaEletronico.NotasCem         -= notasParaSaque[0];
                caixaEletronico.NotasCinquenta   -= notasParaSaque[1];
                caixaEletronico.NotasVinte       -= notasParaSaque[2];
                caixaEletronico.NotasCem         -= notasParaSaque[3];
                caixaEletronico.Valor_Disponivel -= valorSacar;

                contaUsuario.SaldoConta -= valorSacar;
                conta.SaldoConta         = contaUsuario.SaldoConta;

                _commonDbContext.Update(contaUsuario);
                _commonDbContext.Update(caixaEletronico);
                _commonDbContext.SaveChanges();

                operacao.NotasUtilizadas = new int[4] {
                    notasParaSaque[0], notasParaSaque[1], notasParaSaque[2], notasParaSaque[3]
                };
                operacao.ValorSacado = valorSacar;
                operacao.Conta       = conta;
                operacao.Realizada   = true;

                return(operacao);
            }
            return(operacao);
        }
        public OperacaoDTO Sacar(ContaDTO conta, decimal valorSacar)
        {
            OperacaoDTO operacao = new OperacaoDTO();

            var caixaEletronico = _commonDbContext.Caixas.FirstOrDefault();

            var contaUsuario = _commonDbContext.Contas.Where(x => x.Banco == conta.BancoContaCli && x.Agencia == conta.AgenciaContaCli && x.NumeroContaCli == conta.NumeroContaCli && x.CpfCliente == conta.CpfCli).FirstOrDefault();

            if (_caixaEletronicoDAO.ValidarSaque(valorSacar, contaUsuario, caixaEletronico))
            {
                var notasParaSaque = _caixaEletronicoDAO.RetornarNotasNecessarias(valorSacar);

                caixaEletronico.NotasCem         -= notasParaSaque[0];
                caixaEletronico.NotasCinquenta   -= notasParaSaque[1];
                caixaEletronico.NotasVinte       -= notasParaSaque[2];
                caixaEletronico.NotasDez         -= notasParaSaque[3];
                caixaEletronico.Valor_Disponivel -= valorSacar;

                contaUsuario.SaldoConta -= valorSacar;
                conta.SaldoConta         = contaUsuario.SaldoConta.ToString().Length < 12 ? Convert.ToDecimal(contaUsuario.SaldoConta.ToString().PadRight(12, '0')) : contaUsuario.SaldoConta;

                _commonDbContext.Update(contaUsuario);
                _commonDbContext.Update(caixaEletronico);
                _commonDbContext.SaveChanges();

                operacao.NotasUtilizadas = new int[4] {
                    notasParaSaque[0], notasParaSaque[1], notasParaSaque[2], notasParaSaque[3]
                };
                operacao.ValorSacado = valorSacar;
                operacao.Conta       = conta;
                operacao.Realizada   = true;

                return(operacao);
            }
            return(operacao);
        }