public async Task Run() { var notificationDates = dateCalculator.GetWeeklyNotificationDates(); var requests = await requestRepository.GetRequests(notificationDates.First(), notificationDates.Last()); var users = await userRepository.GetUsers(); foreach (var userId in requests.Where(r => r.Status.IsRequested()).Select(r => r.UserId).Distinct()) { var user = users.Single(u => u.UserId == userId); await this.emailRepository.Send( new EmailTemplates.WeeklyNotification(requests, user, notificationDates)); } }