Exemplo n.º 1
0
        public override async Task Adicionar(TransacaoEntity entity)
        {
            //validar o estado da entidade
            if (!ExecutarValidacao(new TransacaoValidation(), entity))
            {
                return;
            }

            entity.ContaOrigem = await _contaService.ValidarAptidaoContaOrigemTransacao(entity.ContaOrigem.Agencia, entity.ContaOrigem.Numero, entity.ContaOrigem.Digito, entity.Valor);

            if (_notificador.TemNotificacao())
            {
                return;
            }

            entity.ContaDestino = await _contaService.ValidarAptidaoContaDestinoTransacao(entity.ContaDestino.Agencia, entity.ContaDestino.Numero, entity.ContaDestino.Digito, entity.Valor);

            if (_notificador.TemNotificacao())
            {
                return;
            }

            if (entity.ContaOrigem.Id == entity.ContaDestino.Id)
            {
                Notificar("Não é permitido fazer transação entre contas iguais");
                return;
            }

            if (_notificador.TemNotificacao())
            {
                return;
            }

            await _transacaoRepository.Adicionar(entity);
        }