private static async Task<IEnumerable<HitlistInfo>> GetProjectHitlistAsync(IEnumerable<WorkMonth> months, int lookBackInWeeks, PNSearchViewModel pnSearchViewModel)
{
return await Task.Factory.StartNew(() => {
var allDays = months.SelectMany(m => m.Days);
var daysFromLookback = lookBackInWeeks > 0 ? allDays.Where(m => m.DateTime > DateTime.Now.AddDays(lookBackInWeeks * -7)) : allDays;
var hitlistInfos = daysFromLookback
.SelectMany(d => d.Items)
.GroupBy(p => p.Project)
.Select(g =>
new HitlistInfo(
g.Key,
g.Count(),
g.Sum(wi => wi.HoursDuration),
g.OrderByDescending(p => p.WorkDay.DateTime)
.Select(p => pnSearchViewModel.GetDescriptionForProjectNumber(p.Project))
.FirstOrDefault())
);
return hitlistInfos.OrderByDescending(g => g.HoursUsed);
});
}