private async Task <DailyReportModel> GetDailyReportAsync() { var getUsersTask = _webApiClient.GetUsersAsync(); var webApiStatisticsTask = _webApiClient.GetStatisticsAsync(); var reportStatisticsTask = _reportClient.GetStatisticsAsync(); var notificationStatisticsTask = _statsRepository.GetStatisticsAsync(); var identityStatisticsTask = _oAuthClient.GetDailyStatsAsync(); await Task.WhenAll(getUsersTask, webApiStatisticsTask, reportStatisticsTask, notificationStatisticsTask, identityStatisticsTask); var sharedExams = (await webApiStatisticsTask).SharedExams.ToDictionary(x => x.Id, x => x.Name); var examStatistics = await _reportClient.GetExamStatisticsAsync(sharedExams.Keys); var model = new DailyReportModel() { Statistics = await webApiStatisticsTask, ReportStatistics = await reportStatisticsTask, NotificationStatistics = await notificationStatisticsTask, IdentityStatistics = await identityStatisticsTask, }; model.NotificationStatistics.TopSmsSenderEmailInDay = getUsersTask.Result.FirstOrDefault(u => u.Id == model.NotificationStatistics.TopSmsSenderIdInDay) ?.Email; model.SharedExamAttendance = examStatistics.Select(e => new KeyValuePair <string, int>(sharedExams[e.ExamId], e.GeneralAttendanceCount)); return(model); }
private async Task <IEnumerable <UserModel> > GetUsersAsync() { var identityUsers = await _oAuthClient.GetUsersAsync(); var apiUsers = await _webApiClient.GetUsersAsync(); return((from user in identityUsers where user.Active && user.ExpiryDateUtc != null && Math.Round(user.ExpiryDateUtc.Value.Subtract(DateTime.UtcNow).TotalDays) == _applicationConfiguration.RemainderDays select apiUsers.First(u => u.SubjectId == user.Id)) .ToList()); }
public async Task <IActionResult> GetAsync() { var users = await _webApiClient.GetUsersAsync(); var stats = await _statsRepository.GetStatisticsAsync(); stats.TopSmsSenderEmailInDay = users.FirstOrDefault(u => u.Id == stats.TopSmsSenderIdInDay) ?.Email; return(Ok(stats)); }