public async Task <IEnumerable <NotificationStatistics> > Handle(GetNotificationStatistics request, CancellationToken cancellationToken) { var notifications = GetQuery(); var groupedStatistics = notifications .Where(x => x.CreationDate.Date.AddDays(Days) >= DateTime.UtcNow.Date) .GroupBy(g => new { g.CreationDate.Year, g.CreationDate.Month, g.CreationDate.Day }) .Select(i => new { i.Key.Year, i.Key.Month, i.Key.Day, Count = i.Sum(x => x.TimesSent) }).ToList(); var statisticsWithGaps = groupedStatistics .Select(x => new NotificationStatistics { DateTime = new DateTime(x.Year, x.Month, x.Day), Count = x.Count }).ToList(); var missingDateTimes = GetMissingDateTimes(); return(FulfillGaps(statisticsWithGaps, missingDateTimes)); }
public async Task <IActionResult> GetStatistics([FromQuery] GetNotificationStatistics query) { var statistics = await _mediator.Send(query); return(Ok(statistics)); }