/// <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(" ", " ")); 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); }
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(" ", " ")); 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); }