コード例 #1
0
        internal HtmlString GetQAModalContent(Guid videoId)
        {
            var QAValues = dal.GetQuestionnaireWithOpt(videoId);

            if (!QAValues.Any())
            {
                for (var i = 1; i <= 4; i++)
                {
                    var newUserVideoQuestionnaireViewModel = new UserVideoQuestionnaireViewModel()
                    {
                        SortOrder = i,
                        Options   = new List <QuestionnaireWithOptionsViewModel>(),
                        Answer    = -1
                    };

                    for (var j = 1; j <= 4; j++)
                    {
                        var opt = new QuestionnaireWithOptionsViewModel();
                        newUserVideoQuestionnaireViewModel.Options.Add(opt);
                    }
                    QAValues.Add(newUserVideoQuestionnaireViewModel);
                }
            }

            return(ConvertToQuestionnaireModal(QAValues, videoId));
        }
コード例 #2
0
        internal List <UserVideoQuestionnaireViewModel> GetQuestionnaireWithOpt(Guid videoId)
        {
            var result    = new List <UserVideoQuestionnaireViewModel>();
            var questions = new List <Questionnaire>();

            SqlCommand    command;
            SqlDataReader dataReader;

            string sql = $@" Select * from VideoQuestionnaire Where VideoId = '{videoId}'
            ";

            command    = new SqlCommand(sql, conn);
            dataReader = command.ExecuteReader();
            while (dataReader.Read())
            {
                var question = new Questionnaire()
                {
                    VideoQuestionnaireId = Convert.ToInt32(dataReader.GetValue(dataReader.GetOrdinal("VideoQuestionnaireId"))),
                    VideoId   = Guid.Parse(dataReader.GetValue(dataReader.GetOrdinal("VideoId")).ToString()),
                    Question  = dataReader.GetValue(dataReader.GetOrdinal("Question")).ToString(),
                    SortOrder = Convert.ToInt32(dataReader.GetValue(dataReader.GetOrdinal("SortOrder"))),
                };
                questions.Add(question);
            }

            dataReader.Close();

            if (!questions.Any())
            {
                return(result);
            }

            sql = $@" Select vqo.*, vqa.VideoQuestionnaireOptionId as Answer from VideoQuestionnaireOption vqo
                left join VideoQuestionnaireAnswer vqa on vqa.VideoQuestionnaireOptionId =   vqo.VideoQuestionnaireOptionId
                Where vqo.VideoQuestionnaireId in ({string.Join(",", questions.Select(z => z.VideoQuestionnaireId))})
            ";

            var opts         = new List <QuestionnaireWithOptionsViewModel>();
            var QIdOptAnswer = new Dictionary <int, int>();

            command    = new SqlCommand(sql, conn);
            dataReader = command.ExecuteReader();

            while (dataReader.Read())
            {
                var opt = new QuestionnaireWithOptionsViewModel()
                {
                    VideoQuestionnaireOptionId = Convert.ToInt32(dataReader.GetValue(dataReader.GetOrdinal("VideoQuestionnaireOptionId"))),
                    VideoQuestionnaireId       = Convert.ToInt32(dataReader.GetValue(dataReader.GetOrdinal("VideoQuestionnaireId"))),
                    OptionValue = dataReader.GetValue(dataReader.GetOrdinal("OptionValue")).ToString(),
                };

                opts.Add(opt);

                if (dataReader.GetValue(dataReader.GetOrdinal("Answer")) != DBNull.Value && !QIdOptAnswer.ContainsKey(opt.VideoQuestionnaireId))
                {
                    QIdOptAnswer.Add(opt.VideoQuestionnaireId, Convert.ToInt32(dataReader.GetValue(dataReader.GetOrdinal("Answer"))));
                }
            }

            dataReader.Close();
            command.Dispose();

            questions.ForEach(q =>
            {
                var qoa = new UserVideoQuestionnaireViewModel
                {
                    Question             = q.Question,
                    SortOrder            = q.SortOrder,
                    VideoId              = q.VideoId,
                    VideoQuestionnaireId = q.VideoQuestionnaireId,
                    Answer  = QIdOptAnswer[q.VideoQuestionnaireId],
                    Options = new List <QuestionnaireWithOptionsViewModel>()
                };
                qoa.Options = opts.Where(z => z.VideoQuestionnaireId == q.VideoQuestionnaireId).ToList();
                result.Add(qoa);
            });

            return(result);
        }