示例#1
0
        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);
        }