示例#1
0
        public async Task Handle(CartaoCreditoCriadoEvent notification, CancellationToken cancellationToken)
        {
            var cartaoCredito = await _cartaoCreditoRepository.FindAsync(Guid.Parse(notification.CartaoId));

            var cliente = await _clientesRepository.FindByCpfCnpjAsync(cartaoCredito.CpfCnpjProprietario);

            if (cliente && !cliente.CartaoCreditoPadraoDefinido)
            {
                cliente.DefinirCartaoCreditoPadrao(cartaoCredito.Id.ToString());
            }
        }
示例#2
0
        public async Task Handle(TransacaoCobrancaReprocessandodoEvent domainEvent, CancellationToken cancellationToken)
        {
            var cobranca = await _cobrancasRepository.FindAsync(Guid.Parse(domainEvent.CobrancaId));

            if (cobranca.FormaPagamentoCartao && Guid.TryParse(cobranca.ClienteCobranca.CartaoCreditoCobranca.TenantId, out Guid cartaoCreditoId))
            {
                var cartaoCredito = await _cartaoCreditoRepository.FindAsync(cartaoCreditoId);

                if (cartaoCredito && cartaoCredito.Transacoes.Any(t => t.CobrancaId == domainEvent.CobrancaId))
                {
                    var transacao = cartaoCredito.Transacoes.First(t => t.CobrancaId == domainEvent.CobrancaId);
                    transacao.Reprocessar(cobranca.Valor);
                }
            }
        }