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); }