示例#1
0
        public async Task <ActionResult <Dictionary <int, int> > > GetPollQuestionAnswersPlotInfo(string questionId)
        {
            var poll = await _pollRepository.GetPollBaseByQuestionIdAsync(questionId);

            if (!SenderPermissions.Contains("CanViewAnyPollStats"))
            {
                if ((bool)!poll.AreStatsPublic && SenderObjectId != poll.CreatorUserId)
                {
                    return(BadRequest("Stats is private"));
                }
            }

            return(Ok(await _pollRepository.GetPollQuestionAnswersPlotInfoAsync(questionId)));
        }
示例#2
0
        public async Task <ActionResult <IEnumerable <IGrouping <string, BriefQuizAnswerResponse> > > > GetQuizAnswers(string quizId)
        {
            var quiz = await _quizRepository.GetByIdAsync(quizId);

            if (!SenderPermissions.Contains("CanViewAnyAnswer"))
            {
                if ((bool)!quiz.AreStatsPublic && SenderObjectId != quiz.CreatorUserId)
                {
                    return(BadRequest("Stats is private"));
                }
            }

            return(Ok(await _quizRepository.GetQuizAnswersAsync(quizId)));
        }
示例#3
0
        public async Task <ActionResult <List <IGrouping <string, PollRepository.PollAnswerResponse> > > > GetPollQuestionAnswers(string questionId)
        {
            var poll = await _pollRepository.GetPollBaseByQuestionIdAsync(questionId);

            if (!SenderPermissions.Contains("CanViewAnyAnswer"))
            {
                if ((bool)!poll.AreStatsPublic && SenderObjectId != poll.CreatorUserId)
                {
                    return(BadRequest("Stats is private"));
                }
            }
            if ((bool)poll.AreAnswersAnonymous)
            {
                return(BadRequest("Answers are anonymous"));
            }

            return(Ok(await _pollRepository.GetPollQuestionAnswersAsync(questionId)));
        }
示例#4
0
        public async Task <ActionResult <long> > AssessTextAnswer(AssessTextAnswerModel assessModel)
        {
            var answersUnit = await _quizRepository.GetAnswersUnitByIdAsync(assessModel.AnswerUnitId);

            var quiz = await _quizRepository.GetByIdAsync(answersUnit.PollBaseId);

            if (!SenderPermissions.Contains("CanAssessAnyAnswer"))
            {
                if (quiz.CreatorUserId != SenderObjectId)
                {
                    return(StatusCode(StatusCodes.Status403Forbidden, "Only creator or admin can assess answers"));
                }
            }

            var result = new AssessTextAnswerModelValidatorFromData(answersUnit, quiz).Validate(assessModel);

            result.AddToModelState(ModelState, null);
            if (!result.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(Ok(await _quizRepository.AssessTextAnswerAsync(assessModel)));
        }