Esempio n. 1
0
        public async Task <LancamentoFinanceiro> EfetuaLancamento(LancamentoFinanceiro lancamentoFinanceiro)
        {
            if (lancamentoFinanceiro.Lancamento == TipoLancamento.Pagamento)
            {
                var lancamentosDoDia = await _repositorioLancamentoFinanceiro.Buscar_Async(Builders <LancamentoFinanceiro> .Filter.Where(x => x.Data == lancamentoFinanceiro.Data));

                lancamentosDoDia = lancamentosDoDia.Append(lancamentoFinanceiro);

                var balancoDiario = CalcularBalancoDiario(lancamentosDoDia);

                if (balancoDiario <= -20000m)
                {
                    throw new DominioException(ErrosSistemas.LimiteNegativoAtingido);
                }
            }

            return(await _repositorioLancamentoFinanceiro.Salvar_Async(lancamentoFinanceiro));
        }