public async Task <Recebimento> Apply(Consolidacao consolidacao, Lancamento lancamento) { var contaBancaria = _contas.FindAll(new ContaBancaria.ByNumero(lancamento.ContaDestino)).FirstOrDefault(); if (contaBancaria == null) { throw new Exception("Conta Bancária inválida"); } if (!contaBancaria.Tipo.Equals(lancamento.TipoConta)) { throw new Exception("Tipo de conta inválido"); } var recebimento = new Recebimento { ContaBancaria = contaBancaria, Em = lancamento.Em, Valor = lancamento.Valor, }; consolidacao.Recebimentos.Add(recebimento); _lancamentos.AddRecebimento(recebimento); return(recebimento); }
public async Task <Pagamento> Apply(Consolidacao consolidacao, Lancamento lancamento) { try { var contaBancaria = _contas.FindAll(new ContaBancaria.ByNumero(lancamento.ContaDestino)).FirstOrDefault(); var saldo = _calcularSaldo.Apply(contaBancaria); if (contaBancaria == null) { throw new Exception("Conta Bancária inválida"); } if (!contaBancaria.Tipo.Equals(lancamento.TipoConta)) { throw new Exception("Tipo de conta inválido"); } var pagamento = new Pagamento(lancamento, contaBancaria); if (!saldo.Has(pagamento.Valor)) { throw new Exception("Não há limite disponível"); } _lancamentos.AddPagamento(pagamento); consolidacao.Pagamentos.Add(pagamento); return(pagamento); } catch (Exception e) { throw e; } }
public async Task <Consolidacao> Apply(Consolidacao consolidacao, ContaBancaria contaBancaria) { var encargos = await _calcularEncargos.Apply(contaBancaria); if (encargos != null) { consolidacao.Pagamentos.Add(encargos); } consolidacao.Situacao = ProcessamentoConsolidacao.Processada; return(consolidacao); }