예제 #1
0
        public ICollection <string> Efetuar(int Id, double valor)
        {
            var listaErros = new List <string>();

            var conta = _contaClienteRepository.Find(Id);

            foreach (var spec in _regrasNegocio)
            {
                if (spec.IsSatisfiedBy(conta, valor))
                {
                    listaErros.Add(spec.Mensagem);
                }
            }

            if (listaErros.Count == 0)
            {
                conta.Saldo += valor;
                _contaClienteRepository.Update(conta);

                var lancamento = new Lancamento()
                {
                    ContaClienteId = Id,
                    TipoOperacao   = TipoOperacao.EstornoDebito,
                    Valor          = valor
                };

                _lancamentoRepository.Add(lancamento);
            }

            return(listaErros);
        }
예제 #2
0
        public void CadastrarLancamento(LancamentoDTO dto)
        {
            Lancamento lancamento = Lancamento.Cadastrar(dto, lancamentoValidator);

            unitOfWork.BeginTransaction();

            lancamentoRepository.Add(lancamento);

            unitOfWork.Commit();
        }
        public async Task <bool> Add(Lancamento lancamento)
        {
            if (!ExecutarValidacao(new LancamentoValidation(), lancamento))
            {
                return(false);
            }

            await _lancamentoRepository.Add(lancamento);

            return(true);
        }
예제 #4
0
        public async Task <Lancamento> AddLancamento(Lancamento lancamento)
        {
            if (await Validate(lancamento))
            {
                lancamento.Id = Guid.NewGuid().ToString();
                await _lancamentoRepository.Add(lancamento);

                Conta contaOrigem = await _contaService.GetConta(lancamento.ContaOrigemId);

                Conta contaDestino = await _contaService.GetConta(lancamento.ContaDestinoId);

                contaOrigem.Saldo  -= lancamento.Valor;
                contaDestino.Saldo += lancamento.Valor;

                await _contaRepository.SaveChanges();
            }

            return(lancamento);
        }