Example #1
0
 private static async Task <IEnumerable <HitlistInfo> > GetPositionHitlistAsync(IEnumerable <WorkMonth> months, int lookBackInWeeks, PositionSearchViewModel posSearchViewModel)
 {
     return(await Task.Factory.StartNew(() => {
         if (posSearchViewModel != null)
         {
             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.Position)
                                .Select(g =>
                                        new HitlistInfo(
                                            g.Key,
                                            g.Count(),
                                            g.Sum(wi => wi.HoursDuration),
                                            posSearchViewModel.GetDescriptionForPositionNumber(g.Key))
                                        );
             return hitlistInfos.OrderByDescending(g => g.HoursUsed);
         }
         else
         {
             return Enumerable.Empty <HitlistInfo>();
         }
     }));
 }