예제 #1
0
        public void TransferenciaInterna(TransferenciaApi transferenciaApi, OrigemOperacao origem)
        {
            var transferencia = transferenciaApi.ToModel(origem);

            Debito(transferencia);
            Credito(transferencia);
        }
예제 #2
0
 public static Transferencia ToTransferencia(this CreditoApi model, OrigemOperacao origem)
 {
     return(new Transferencia
     {
         ContaCredito = model.Credit.Idenfifier,
         Operacao = RetornaTipoOperacao(origem),
         DataOperacao = model.Date,
         Valor = model.Value
     });
 }
예제 #3
0
        private static string RetornaTipoOperacao(OrigemOperacao origemOperacao)
        {
            switch (origemOperacao)
            {
            case OrigemOperacao.Saque: return("S");

            case OrigemOperacao.Deposito: return("D");

            case OrigemOperacao.Pagamento: return("P");

            case OrigemOperacao.Transferencia: return("T");
            }
            return(null);
        }
예제 #4
0
        public void Credito(CreditoApi deposito, OrigemOperacao origem)
        {
            var contaCredito = _repoContaf.FindByConta(deposito.Credit.Idenfifier);

            if (contaCredito == null)
            {
                throw new Exception("Conta crédito  não encontrada!");
            }

            contaCredito.Saldo += deposito.Value;

            _repoContaf.Alterar(contaCredito);

            RegistraTransacao(deposito.ToTransferencia(origem));
        }
예제 #5
0
        public void Debito(DebitoApi debito, OrigemOperacao origem)
        {
            var contaDebito = _repoContaf.FindByConta(debito.Debit.Idenfifier);

            if (origem != OrigemOperacao.Pagamento)
            {
                ValidaDebito(debito.Value, contaDebito);
            }

            contaDebito.Saldo -= debito.Value;

            _repoContaf.Alterar(contaDebito);

            RegistraTransacao(debito.ToTransferencia(origem));
        }