示例#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);
        }
示例#2
0
        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());
        }
示例#3
0
        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));
        }