コード例 #1
0
        /// <summary>
        /// The get quiz result by adobe connect session id.
        /// </summary>
        /// <param name="adobeConnectSessionId">
        /// The adobe connect session id.
        /// </param>
        /// <param name="smiId">
        /// The sub module item id.
        /// </param>
        /// <returns>
        /// The <see cref="QuizResultDataDTO"/>.
        /// </returns>
        public QuizResultDataDTO GetQuizResultByACSessionId(int adobeConnectSessionId, int smiId)
        {
            var res = new QuizResultDataDTO();

            res.questions = this.Repository.StoreProcedureForMany <QuestionForAdminDTO>("getQuizQuestionsForAdminBySMIId",
                                                                                        new StoreProcedureParam <int>("smiId", smiId),
                                                                                        new StoreProcedureParam <int>("acSessionId", adobeConnectSessionId)).ToArray();
            res.players =
                this.Repository.StoreProcedureForMany <QuizPlayerFromStoredProcedureDTO>(
                    "getQuizResultByACSessionId",
                    new StoreProcedureParam <int>("acSessionId", adobeConnectSessionId),
                    new StoreProcedureParam <int>("subModuleItemId", smiId))
                .ToList()
                .Select(x => new QuizPlayerDTO(x))
                .ToArray();

            Array.ForEach(res.questions, q => q.question = Regex.Replace(q.question ?? string.Empty, "<[^>]*(>|$)", string.Empty).Replace("&nbsp;", " "));

            var questionIds = res.questions.Select(q => q.questionId).ToList();

            var distractorsQuery =
                new DefaultQueryOver <Distractor, int>().GetQueryOver()
                .WhereRestrictionOn(x => x.Question.Id)
                .IsIn(questionIds);

            var distractors = this.distractorRepository.FindAll(distractorsQuery).ToList();

            foreach (var questionForAdminDTO in res.questions)
            {
                questionForAdminDTO.distractors = distractors
                                                  .Where(x => x.Question.Id == questionForAdminDTO.questionId)
                                                  .Select(x => new DistractorDTO(x))
                                                  .ToArray();
            }

            foreach (var playerDto in res.players)
            {
                if (playerDto.isPostQuiz)
                {
                    playerDto.certPreviewUrl  = playerDto.BuildPreviewUrl(_settings.CertificatesUrl);
                    playerDto.certDownloadUrl = playerDto.BuildDownloadUrl(_settings.CertificatesUrl);
                }
            }

            return(res);
        }
コード例 #2
0
        public QuizResultDataDTO GetQuizResultByACSessionIdAcEmail(int adobeConnectSessionId, int smiId, string acEmail)
        {
            var res = new QuizResultDataDTO();

            res.questions = this.Repository.StoreProcedureForMany <QuestionForAdminDTO>("getQuizQuestionsForAdminBySMIId",
                                                                                        new StoreProcedureParam <int>("smiId", smiId),
                                                                                        new StoreProcedureParam <int>("acSessionId", adobeConnectSessionId)).ToArray();
            res.players =
                this.Repository.StoreProcedureForMany <QuizPlayerFromStoredProcedureDTO>(
                    "getQuizResultByACSessionIdAcEmail",
                    new StoreProcedureParam <int>("acSessionId", adobeConnectSessionId),
                    new StoreProcedureParam <int>("subModuleItemId", smiId),
                    new StoreProcedureParam <string>("acEmail", acEmail))
                .ToList()
                .Select(x => new QuizPlayerDTO(x))
                .ToArray();

            Array.ForEach(res.questions, q => q.question = Regex.Replace(q.question ?? string.Empty, "<[^>]*(>|$)", string.Empty).Replace("&nbsp;", " "));

            var questionIds = res.questions.Select(q => q.questionId).ToList();

            var distractorsQuery =
                new DefaultQueryOver <Distractor, int>().GetQueryOver()
                .WhereRestrictionOn(x => x.Question.Id)
                .IsIn(questionIds);

            var distractors = this.distractorRepository.FindAll(distractorsQuery).ToList();

            foreach (var questionForAdminDTO in res.questions)
            {
                questionForAdminDTO.distractors = distractors
                                                  .Where(x => x.Question.Id == questionForAdminDTO.questionId)
                                                  .Select(x => new DistractorDTO(x))
                                                  .ToArray();
            }

            return(res);
        }