public async Task <IActionResult> Index() { var accountsFirst = await _dbContext.Accounts.OrderBy(a => a.Id).FirstOrDefaultAsync(); var accountsLast = await _dbContext.Accounts.OrderBy(a => a.Id).LastOrDefaultAsync(); var accCount = await _dbContext.Accounts.CountAsync(); var accountsHierarchiesFirst = await _dbContext.AccountHierarchies.OrderBy(a => a.Id).FirstOrDefaultAsync(); var accountsHierarchiesLast = await _dbContext.AccountHierarchies.OrderBy(a => a.Id).LastOrDefaultAsync(); var hierCount = await _dbContext.AccountHierarchies.CountAsync(); var treeBuilder = new TreeBuilder(_dbContext); treeBuilder.CalculateBonuses(accountsHierarchiesFirst); return(View(new IndexViewModel { Accounts = new List <Account>() { accountsFirst, accountsLast }, AccountHierarchies = new List <AccountHierarchy>() { accountsHierarchiesFirst, accountsHierarchiesLast }, CountRegular = accCount, CountHierarchies = hierCount })); }