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)); }
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); }