public bool Depositar(int idConta, decimal valor) { try { var conta = _contaRepository.FindBy(p => p.Id == idConta).FirstOrDefault(); if (conta == null) { throw new Exception("Conta não localizada!"); } using (TransactionScope ts = new TransactionScope()) { conta.Saldo += valor; _contaRepository.Update(conta); _transacaoRepository.Add(new Transacao { ContaId = conta.Id, DataHora = DateTime.Now, TipoMovimento = (int)EnumTrasacao.Deposito, valor = valor }); ts.Complete(); } return(true); } catch (Exception ex) { throw new Exception(ex.Message); } }
public void Execute(TransacaoDto transacao) { var conta = _contaRepository.ObterPorId(transacao.IdConta); if (conta == null) { throw new Exception("Conta não encontrada."); } if (!conta.TemSaldoSuficiente(transacao.Valor)) { throw new Exception("Saldo da conta insuficiente."); } conta.Saldo -= transacao.Valor; _contaRepository.Update(conta); _transacaoRepository.Add(new Transacao { Tipo = transacao.Tipo, Valor = transacao.Valor, Data = DateTime.Now, Descricao = transacao.Descricao, Conta = conta }); }
public async Task <IActionResult> AddAsync([FromBody] Transacao trans) { if (trans == null) { return(BadRequest()); } var loja_config = _config.FindByIdLojista(trans.IdLojista); if (trans.Visa == "S") { //valida para qual adquirente encaminhar if (loja_config.RuleVisa == "S") //SE STONE { trans.Stone = "S"; // SIM if (loja_config.Antifraude == "S") { bool validPay = await ValidPaymentAsync("2018-08-06T22:10:00", trans.CreditCard); if (!validPay) { return(BadRequest("Pagamento inválido")); } } Stone adiquirenteStone = await AdiquirenteAsync(loja_config, "visa"); if (adiquirenteStone.ErrorReport != null) { return(BadRequest("Adiquirente Inválido")); } } else { trans.Cielo = "S"; // SIM } } else //se transação for MASTER { //MASTER if (loja_config.RuleMaster == "S") //SE STONE { trans.Stone = "S"; //SIM if (loja_config.Antifraude == "S") { bool validPay = await ValidPaymentAsync("2018-08-06T22:10:00", trans.CreditCard); if (!validPay) { return(BadRequest("Pagamento inválido")); } } Stone adiquirenteStone = await AdiquirenteAsync(loja_config, "master"); if (adiquirenteStone.MerchantKey == "" || adiquirenteStone.MerchantKey == null) { return(BadRequest("Adiquirente Inválido")); } } else { trans.Cielo = "S"; //SIM } } _transacao.Add(trans); return(CreatedAtRoute("GetTransacao", new { id = trans.IdTransacao }, trans)); }