Esempio n. 1
0
        public async Task <Dictionary <int, int> > GetPollQuestionAnswersPlotInfoAsync(string questionId)
        {
            var answers = await AnswersUnits.AsQueryable().SelectMany(unit => unit.Answers).Where(answer => answer.QuestionId == questionId).ToListAsync();

            var questionOptionsCount = (await GetPollBaseByQuestionIdAsync(questionId)).Questions.Single(pollQuestion => pollQuestion.Id == questionId).AnswerOptions.Count;
            var dictionary           = new Dictionary <int, int>();

            for (int i = 0; i < questionOptionsCount; i++)
            {
                dictionary.Add(i, answers.Count(answer => answer.SelectedOptions.Any(option => option == i)));
            }
            return(dictionary);
        }
Esempio n. 2
0
        public async Task <IEnumerable <IGrouping <string, BriefQuizAnswerResponse> > > GetQuizAnswersAsync(string quizId)
        {
            var query = from answersUnit in AnswersUnits.AsQueryable().Where(unit => unit.PollBaseId == quizId)
                        join userModel in Users.AsQueryable() on answersUnit.CreatorUserId equals userModel.UserId
                        select new BriefQuizAnswerResponse
            {
                Id              = answersUnit.Id,
                FullName        = userModel.LastName + " " + userModel.FirstName,
                GroupName       = userModel.GroupName,
                AnswerDate      = answersUnit.AnswerDate,
                CreatorUserId   = answersUnit.CreatorUserId,
                TotalAssessment = answersUnit.TotalAssessment,
                IsChecked       = answersUnit.IsChecked
            };
            var responses = await query.ToListAsync();

            return(responses.ToLookup(r => r.GroupName));
        }
Esempio n. 3
0
        public async Task <IEnumerable <IGrouping <string, PollAnswerResponse> > > GetPollQuestionAnswersAsync(string questionId)
        {
            var query = from answersUnit in AnswersUnits.AsQueryable()
                        join userModel in Users.AsQueryable() on answersUnit.CreatorUserId equals userModel.UserId
                        select new
            {
                FullName = userModel.LastName + " " + userModel.FirstName,
                userModel.GroupName,
                answersUnit.AnswerDate,
                answersUnit.Answers,
                answersUnit.CreatorUserId
            };
            var pollAnswerResponses = (await query.ToListAsync()).Where(t => t.Answers.Any(a => a.QuestionId == questionId)).Select(t => new PollAnswerResponse()
            {
                FullName        = t.FullName,
                AnswerDate      = t.AnswerDate,
                CreatorUserId   = t.CreatorUserId,
                Group           = t.GroupName,
                SelectedOptions = t.Answers.Single(ans => ans.QuestionId == questionId).SelectedOptions.Select(i => i + 1),
            });

            return(pollAnswerResponses.ToLookup(response => response.Group));
        }