Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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));
        }