public async Task <ContaCorrente> Obter(Guid contaId) { var entity = await context.Contas.FirstOrDefaultAsync(s => s.Id.Equals(contaId)); if (entity == null) { throw new ContaNaoEncontradaException(contaId); } List <ITransacao> transacoes = new List <ITransacao>(); var creditos = await this.ObterCreditos(entity.Id); foreach (var credito in creditos) { transacoes.Add(Credito.Carregar(credito.Id, credito.TransacaoId, credito.ContaId, credito.DataTransacao, credito.Valor)); } var debitos = await this.ObterDebitos(entity.Id); foreach (var debito in debitos) { transacoes.Add(Debito.Carregar(debito.Id, debito.TransacaoId, debito.ContaId, debito.DataTransacao, debito.Valor)); } transacoes.OrderBy(s => s.DataTransacao); LancamentoCollection transacaoCollection = new LancamentoCollection(); transacaoCollection.Adicionar(transacoes); var conta = ContaCorrente.Carregar(entity.Id, entity.ClienteId, entity.NumeroAgencia, entity.NumeroConta, entity.DigitoConta, transacaoCollection); return(conta); }
public async Task <IList <Debito> > ObterDebitos(Guid contaId) { var debitoEntities = await context.Debitos.Where(s => s.ContaId.Equals(contaId)).ToListAsync(); List <Debito> debitos = new List <Debito>(); if (debitoEntities != null) { foreach (var creditoEntity in debitoEntities) { debitos.Add(Debito.Carregar(creditoEntity.Id, creditoEntity.TransacaoId, creditoEntity.ContaId, creditoEntity.DataTransacao, creditoEntity.Valor)); } } return(debitos); }
public void ConsegueCarregarUmObjetoDebito() { Guid id = Guid.NewGuid(); Guid transacaoId = Guid.NewGuid(); Guid contaId = Guid.NewGuid(); DateTime dataTransacao = DateTime.UtcNow; double valor = 49.9; var debito = Debito.Carregar(id, transacaoId, contaId, dataTransacao, valor); Assert.Equal(id, debito.Id); Assert.Equal(transacaoId, debito.TransacaoId); Assert.Equal(contaId, debito.ContaId); Assert.Equal(dataTransacao, debito.DataTransacao); Assert.Equal <double>(valor, debito.Valor); }