private async Task <AccountViewModel> MapToViewModelAsync(Account account) { var result = _mapper.Map <AccountViewModel>(account); var customer = account.Customer; if (customer == null && account.CustomerId.HasValue) { customer = await _customersService.GetByIdAsync(account.CustomerId.Value); } result.Customer = _mapper.Map <CustomerViewModel>(customer); var bills = await _billsService.GetManyAsync(account.Id); result.Bills = bills?.Select(_mapper.Map <BillViewModel>).ToArray(); var cards = await _cardsService.GetManyAsync(account.Id); result.Cards = cards?.Select(_mapper.Map <CardViewModel>).ToArray(); var transactions = await _transactionsService.GetManyAsync(account.Id); if (transactions?.Any() == true) { var resultTransactions = new List <TransactionViewModel>(); foreach (var transaction in transactions) { resultTransactions.Add(await MapToViewModelAsync(transaction)); } result.Transactions = resultTransactions.ToArray(); } return(result); }