public async Task <IActionResult> Index([Bind("To", "From")] ReportViewModel data) { if (data.HasPeriod()) { var clients = await _context.Clients .Where(x => x.LastChange <= data.To.Value && x.LastChange >= data.From.Value) .Include(x => x.Account).ToListAsync(); data = new ReportViewModel { From = data.From, To = data.To, TotalLead = clients.Count(x => x.Stage == Models.Stage.Lead), TotalInterest = clients.Count(x => x.Stage == Models.Stage.Interest), TotalDecision = clients.Count(x => x.Stage == Models.Stage.Decision), TotalPurchase = clients.Count(x => x.Stage == Models.Stage.Purchase), TotalContracted = clients.Count(x => x.Stage == Models.Stage.Contracted), TotalDenied = clients.Count(x => x.Stage == Models.Stage.Denied), AccountStats = _userManager.Users.Select( a => new ReportAccountViewModel { AccountName = a.ToString(), Lead = clients.Where(c => c.AccountId == a.Id).Count(x => x.Stage == Models.Stage.Lead), Interest = clients.Where(c => c.AccountId == a.Id).Count(x => x.Stage == Models.Stage.Interest), Decision = clients.Where(c => c.AccountId == a.Id).Count(x => x.Stage == Models.Stage.Decision), Purchase = clients.Where(c => c.AccountId == a.Id).Count(x => x.Stage == Models.Stage.Purchase), Contracted = clients.Where(c => c.AccountId == a.Id).Count(x => x.Stage == Models.Stage.Contracted), Denied = clients.Where(c => c.AccountId == a.Id).Count(x => x.Stage == Models.Stage.Denied), }).ToList() }; } return(View(data)); }