public async Task Gerar(OperacaoBinariaDto dto)
        {
            ValidarContaDestino(dto.ContaOrigemId, dto.ContaDestinoId);
            operacaoServico.ValidarDescricao(dto.Descricao);

            int transferenciaSaidaId   = GerarPeloTipo(dto.ContaOrigemId, dto.Valor, dto.Descricao, TipoMovimentacao.Saida);
            int transferenciaEntradaId = GerarPeloTipo(dto.ContaDestinoId, dto.Valor, dto.Descricao, TipoMovimentacao.Entrada);

            await produtorClient.EnfileirarTransferencia(new EfetivarOperacaoBinariaDto(transferenciaSaidaId, transferenciaEntradaId));
        }
Ejemplo n.º 2
0
        public async Task Gerar(OperacaoUnariaDto dto)
        {
            operacaoServico.ValidarDescricao(dto.Descricao);

            var conta       = contaServico.ObterConta(dto.ContaId);
            var bonificacao = ObterBonificacao(conta.Id, dto.Valor);

            var cashIn = new CashIn(conta.Id, dto.Valor, dto.Descricao, conta.Saldo, bonificacao);

            cashInRepositorio.Post(cashIn);
            contaServico.VincularCashIn(conta, cashIn);

            await produtorClient.EnfileirarCashIn(new EfetivarOperacaoUnariaDto(cashIn.Id));
        }
Ejemplo n.º 3
0
        public async Task Gerar(OperacaoUnariaDto dto)
        {
            operacaoServico.ValidarDescricao(dto.Descricao);

            var conta     = contaServico.ObterConta(dto.ContaId);
            var valorTaxa = dto.Valor * configuracaoServico.ObterPercentualTaxa();

            var cashOut = new CashOut(conta.Id, dto.Valor, dto.Descricao, conta.Saldo, valorTaxa);

            cashOutRepositorio.Post(cashOut);
            contaServico.VincularCashOut(conta, cashOut);

            await produtorClient.EnfileirarCashOut(new EfetivarOperacaoUnariaDto(cashOut.Id));
        }