예제 #1
0
        void btnAddQuestion_Click(object sender, EventArgs e)
        {
            QuestionData newQuestion  = new QuestionData(0);
            frmQuestion  questionForm = new frmQuestion(newQuestion);

            questionForm.ShowDialog();

            //check to see the question is valid ie user didnt cancel
            if (newQuestion.Answers.Count > 0)
            {
                //add question to display
                QuestionBox questionBox = new QuestionBox(newQuestion, questionBoxes.Count + 1, myObjective);
                questionBox.Disposed += new EventHandler(questionBox_Disposed);
                questionBoxes.Add(questionBox);
                pnlMain.Controls.Add(questionBox);

                //add question to currentQuiz we are editing
                GlobalData.currentQuiz.addQuestion(newQuestion);

                //set locations via resize
                pnlMain_Resize(null, null);

                pnlMain.ScrollControlIntoView(questionBox);
            }
        }
예제 #2
0
    //suffle contact point order
    //select first 3 contact points
    //suffle each of the contact point questions
    //assign contact point first question set to the random pool
    void AllRandomAllQuestions()
    {
        // Take all questions into a list
        List <QuestionData> QuestionsPool = new List <QuestionData>();
        int size = 0;

        foreach (var point in contactPoints.points)
        {
            for (int i = 0; i < point.questions.Length; i++)
            {
                QuestionsPool.Add(point.questions[i]);
                size++;
            }
        }

        // Suffle questions
        QuestionData[] AllRandomQuestions = new QuestionData[size];
        AllRandomQuestions = QuestionsPool.ToArray();
        SuffleQuestionOrder(ref AllRandomQuestions);

        // Add first 5 questions to game
        QuestionData[] tmp = new QuestionData[maxRandomQs];

        for (int i = 0; i < maxRandomQs; i++)
        {
            tmp[i] = AllRandomQuestions[i];
        }

        questions = tmp;
    }
    private void ShowQuestion()
    {
        questionPanel.SetActive(true);
        nextButton.SetActive(false);
        explanationButton.SetActive(false);

        questionIndex = Random.Range(0, questionPool.Length);

        RemoveAnswerButtons();
        canAnswer = true;

        QuestionData questionData = questionPool[questionIndex];

        questionDisplayText.text = questionData.questionText;

        for (int i = 0; i < questionData.answers.Length; i++)
        {
            GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();
            answerButtonGameObjects.Add(answerButtonGameObject);
            answerButtonGameObject.transform.SetParent(answerButtonParent);


            AnswerButton answerButton = answerButtonGameObject.GetComponent <AnswerButton>();
            answerButton.GetComponent <Image>().color = new Color32(255, 255, 255, 50);
            answerButton.Setup(questionData.answers[i]);
        }
    }
예제 #4
0
    private void ShowQuestion()
    {
        // 질문을 시작하기 전에 이전 답변버튼들을 지워준다.
        ClearAnswerButtons();

        // 질문 배열의 현재 인덱스를 가져온다.
        QuestionData questionData = questions[questionIndex];

        // 질문 ui = 질문 데이터의 질문
        questionText.text = questionData.questionText;

        // 답변들을 가지고 온다.
        AnswerData[] answers = questionData.answers;

        // 배열의 순번대로 넘겨준다.
        for (int i = 0; i < answers.Length; i++)
        {
            // 버튼을 풀장에서 하나 가지고 온다.
            GameObject answerButton = buttonPool.GetObject();

            // 가져온 게임오브젝트의 버튼을 찾는다.
            answerButton.GetComponent <AnswerButton>().SetUp(answers[i]);

            buttons.Add(answerButton);                      // 리스트에 버튼 추가해줘서 나중에 사용하도록 만들어 준다.

            answerButton.transform.SetParent(buttonHolder); // 엔서버튼이 생성될 틀의 위치를 지정. 부모를 지정해 준다.

            // 버그수정코드, 유니티가 가져올때 유아이 크기를 잘 못 출력하는 버그가 있어서. 다시 크기를 조절하는 코드이다.
            answerButton.transform.localScale = new Vector3(1, 1, 1);
        }
    }
예제 #5
0
    private void ShowQuestion()
    {
        RemoveAnswerButtons();

        QuestionData questionData = questionPool[questionIndex];

        questionText.text = questionData.colorName;
        questionDisplayBackgroundColor = new Color32(
            questionData.colorRGB[0],
            questionData.colorRGB[1],
            questionData.colorRGB[2],
            OBAQUE_VALUE);

        GameObject.Find("QuestionPanel").GetComponent <RawImage>().color = questionDisplayBackgroundColor;

        for (int i = 0; i < questionData.answers.Length; i++)
        {
            GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();
            answerButtonGameObject.transform.SetParent(answerButtonParent);
            answerButtonGameObjects.Add(answerButtonGameObject);

            AnswerButton answerButton =
                answerButtonGameObject.GetComponent <AnswerButton>();
            answerButton.Setup(questionData.answers[i]);
        }
    }
예제 #6
0
    private void Awake()
    {
        if (instance == null)
        {
            DontDestroyOnLoad(gameObject);
            instance = this;
        }
        else
        {
            Destroy(gameObject);
        }

        #region populate all arrays/lists using our .json files

        _questionJson = Application.streamingAssetsPath + "/Text/AllQuestions.json"; //find location of AllQuestions.json
        string allQuestionText = File.ReadAllText(_questionJson);                    //read all the text in that .json file
        questionData = QuestionData.CreatFromJson(allQuestionText);                  //convert text in that .json file into something that Unity can read
        //(in this case, an object containing a List of strings)

        questionPool = questionData.questionPool.questions;                      //initialize our List variable as the List of strings in our .json file

        _answerJson = Application.streamingAssetsPath + "/Text/AllAnswers.json"; //find location of AllAnswers.json
        string allAnswerText = File.ReadAllText(_answerJson);                    //read all the text in that .json file
        characterData = CharacterData.CreateFromJson(allAnswerText);             //convert text in that .json file into something that Unity can read
        //(in this case, an array of objects, each containing a string name, and a List of string answers)

        _endingJson = Application.streamingAssetsPath + "/Text/AllEndings.json"; //find location of AllEndings.json
        string allEndingText = File.ReadAllText(_endingJson);                    //read all the text in that .json file
        endingData = EndingData.CreateFromJson(allEndingText);                   //convert text in that .json file into something that Unity can read
        //(in this case, an array of objects, each containing a string name, and an array of string parings)

        #endregion
    }
예제 #7
0
        public async Task SaveData(int questionId, int?id, string input, string output, int time, float memory, bool isSample)
        {
            var state = id == null ? EntityState.Added : EntityState.Modified;

            QuestionData data;

            if (id == null)
            {
                data = new QuestionData {
                    QuestionId = questionId
                };
            }
            else
            {
                data = await _db.QuestionDatas
                       .Where(x => x.QuestionId == questionId && x.Id == id)
                       .FirstAsync();
            }

            data.Input         = input;
            data.Output        = output.TrimEnd();
            data.TimeLimit     = time;
            data.MemoryLimitMb = memory;
            data.UpdateTime    = DateTime.Now;
            data.IsSample      = isSample;

            _db.Entry(data).State = state;
            await _db.SaveChangesAsync();
        }
예제 #8
0
        private void button_Click()
        {
            MessageBox.Show("Start Test!!");
            System.Diagnostics.Debug.WriteLine("触发了");

            Slide    activeSlide = Globals.ThisAddIn.Application.ActivePresentation.SlideShowWindow.View.Slide;
            Question question    = new Question();

            question.questionType      = int.Parse(activeSlide.Shapes["questionType"].TextFrame.TextRange.Text);
            question.questionScore     = int.Parse(activeSlide.Shapes["questionScore"].TextFrame.TextRange.Text);
            question.questionLimitTime = int.Parse(activeSlide.Shapes["questionLimitTime"].TextFrame.TextRange.Text);
            question.questionDescribe  = activeSlide.Shapes["questionDescribe"].TextFrame.TextRange.Text;
            question.questionAnswer    = activeSlide.Shapes["questionAnswer"].TextFrame.TextRange.Text;
            System.Diagnostics.Debug.WriteLine("触发了!!");
            List <Option> optionList = new List <Option>();

            Option option = new Option();

            option.optionType     = activeSlide.Shapes["questionAnswer"].TextFrame.TextRange.Text;
            option.optionDescribe = activeSlide.Shapes["questionDescribe"].TextFrame.TextRange.Text;
            optionList.Add(option);

            QuestionData questionData = new QuestionData();

            questionData.question   = question;
            questionData.optionList = optionList;
            System.Diagnostics.Debug.WriteLine("触发了!!!~~");
            SubmitQuestionForm submitQuestionForm = new SubmitQuestionForm();

            submitQuestionForm.questionData = questionData;
            //submitQuestionForm.LoadText1(activeSlide.Shapes["questionScore"].TextFrame.TextRange.Text, activeSlide.Shapes["questionLimitTime"].TextFrame.TextRange.Text);
            submitQuestionForm.LoadText();
            submitQuestionForm.ShowDialog();
        }
예제 #9
0
        internal void FillContents(Question question, QuestionContents contents, QuestionData data, int idx)
        {
            Question         = question;
            QuestionContents = contents;
            QuestionData     = data;
            Index            = idx;
            CorrectAnswer    = QuestionContents.CorrectAnswer;

            Image1.ImageUrl = QuestionContents.Keys.Contains("image") ? QuestionContents.Get <Parse.ParseFile>("image").Url.ToString() : "";
            lbQuestion.Text = QuestionContents.Get <string>("questionText");

            item1.Text = item1.Value = QuestionContents.Answers[0];
            item2.Text = item2.Value = QuestionContents.Answers[1];
            item3.Text = item3.Value = QuestionContents.Answers[2];
            item4.Text = item4.Value = QuestionContents.Answers[3];
            if (QuestionContents.Answers.Count == 5)
            {
                item5.Text = item5.Value = QuestionContents.Answers[4];
                item5.Attributes.Remove("class");
            }
            else
            {
                item5.Attributes.Add("class", "hidden");
            }
        }
예제 #10
0
    public static QuestionData[] readQuestionsFromWeb()
    {
        int    amount     = 15;
        string string_url = "https://opentdb.com/api.php?amount=" + amount + "&type=multiple";
        WWW    www        = new WWW(string_url);

        if (www.error != null)
        {
            Debug.Log("ERROR: " + www.error);
        }

        while (!(www.isDone))
        {
        }
        if (www.isDone)
        {
            string         jsonString = www.text;
            QuestionData[] questions  = new QuestionData[amount];

            // From file to json wrapper object
            JsonData jsonvale = JsonMapper.ToObject(jsonString);
            for (int i = 0; i < jsonvale["results"].Count; i++)
            {
                Debug.Log("Frage");

                questions[i] = new QuestionData(jsonvale, i);
            }

            return(questions);
        }
        return(null);
    }
예제 #11
0
    public void ShowQuestion()
    {
        RoundData currentRoundData = dataController.GetCurrentRoundData(round);

        QuestionData[] questionPool = currentRoundData.questions;
        QuestionData   questionData = questionPool[questionIndex];

        categoryDisplay.SetActive(false);
        questionDisplay.SetActive(true);
        questionText.text = questionData.questionText;
        for (int i = 0; i < answerButtons.Length; i++)
        {
            AnswerData answerData = new AnswerData();
            answerData.answerText = questionData.answers[i].answerText;
            answerData.isCorrect  = questionData.answers[i].isCorrect;
            answerButtons[i].Setup(answerData);
            if (i == 0)
            {
                answerAText.text = answerData.answerText;
            }
            if (i == 1)
            {
                answerBText.text = answerData.answerText;
            }
            if (i == 2)
            {
                answerCText.text = answerData.answerText;
            }
            if (i == 3)
            {
                answerDText.text = answerData.answerText;
            }
        }
    }
예제 #12
0
    void ShowQuestion()
    {
        foto = GameObject.Find("foto").GetComponent <Image>();
        Debug.Log(" nombre " + foto.name);
        RemoveAnswerButtons();
        int          pregunta     = Random.Range(0, questionPool.Length);
        QuestionData questionData = questionPool[pregunta];                                 // Get the QuestionData for the current question

        questionText.text = questionData.questionText;                                      // Update questionText with the correct text
        string filePath2 = Application.streamingAssetsPath + "/";

        filePath2 = filePath2 + "" + questionData.imagen;
        //Debug.Log(" imagen" +questionData.imagen);
        //Debug.Log("direccion imagen" +  filePath2);

        foto.sprite = Resources.Load <Sprite>(filePath2);

        for (int i = 0; i < questionData.answers.Length; i++)                                                   // For every AnswerData in the current QuestionData...
        {
            GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();                             // Spawn an AnswerButton from the object pool
            answerButtonGameObjects.Add(answerButtonGameObject);
            answerButtonGameObject.transform.SetParent(answerButtonParent);
            answerButtonGameObject.transform.localScale = Vector3.one;

            AnswerButton answerButton = answerButtonGameObject.GetComponent <AnswerButton>();
            answerButton.SetUp(questionData.answers[i]);                                                                                // Pass the AnswerData to the AnswerButton so the AnswerButton knows what text to display and whether it is the correct answer
        }
    }
        internal void FillContents(Question question, QuestionContents contents, QuestionData data, int idx)
        {
            Question = question;
            QuestionContents = contents;
            QuestionData = data;
            Index = idx;
            CorrectAnswer = QuestionContents.CorrectAnswer;

            Image1.ImageUrl = QuestionContents.Keys.Contains("image") ? QuestionContents.Get<Parse.ParseFile>("image").Url.ToString() : "";
            lbQuestion.Text = QuestionContents.Get<string>("questionText");

            item1.Text = item1.Value = QuestionContents.Answers[0];
            item2.Text = item2.Value = QuestionContents.Answers[1];
            item3.Text = item3.Value = QuestionContents.Answers[2];
            item4.Text = item4.Value = QuestionContents.Answers[3];
            if (QuestionContents.Answers.Count == 5)
            {
                item5.Text = item5.Value = QuestionContents.Answers[4];
                item5.Attributes.Remove("class");
            }
            else
            {
                item5.Attributes.Add("class", "hidden");
            }
        }
예제 #14
0
    private static QuestionData GetNewSubtractionQuestion(int level, int spawnNumber)
    {
        QuestionData newQData = new QuestionData();

        int a = level + 10;
        int b = UnityEngine.Random.Range(0, a);

        newQData.question = a.ToString() + " - " + b.ToString();

        int correctAnswer = a - b;

        newQData.correctAnswer = correctAnswer;

        HashSet <int> differentNumbersCollection = new HashSet <int>();

        differentNumbersCollection.Add(correctAnswer);

        while (differentNumbersCollection.Count < 4)
        {
            int newIncorrectAnswer = UnityEngine.Random.Range(0, a);

            if (newIncorrectAnswer != correctAnswer && !differentNumbersCollection.Contains(newIncorrectAnswer))
            {
                differentNumbersCollection.Add(newIncorrectAnswer);
            }
        }

        newQData.givenNumbers = differentNumbersCollection.ToList();
        Shuffle(newQData.givenNumbers);

        return(newQData);
    }
        private void MessageWindowCallback(bool ok)
        {
            if (ok)
            {
                QuestionData questionData = this.historyListView.SelectedItem as QuestionData;
                if (questionData == null)
                {
                    return;
                }

                MathSetting.Instance.QuestionDataCollection.Remove(questionData);

                Assembly assembly   = Assembly.GetExecutingAssembly();
                string   dataFolder = System.IO.Path.GetDirectoryName(assembly.Location);
                dataFolder = System.IO.Path.Combine(dataFolder, "Data\\Rapid");
                if (!System.IO.Directory.Exists(dataFolder))
                {
                    System.IO.Directory.CreateDirectory(dataFolder);
                }

                try
                {
                    File.Delete(System.IO.Path.Combine(dataFolder, questionData.Id + "." + QuestionData.ext));
                }
                catch
                {
                }
            }
        }
예제 #16
0
        public async Task TestGetQuestionsPastPageOne()
        {
            // Arrange
            var repo      = new Mock <IRepositoryEnq>();
            var questions = QuestionData.TestQuestions().ToList();
            var maxPage   = MaxPage(questions.Count);
            var midPage   = 2;
            var midSkip   = midPage * PageLength - PageLength;
            var maxSkip   = maxPage * PageLength - PageLength;

            SetUpPastOneRepo(repo, midSkip, maxSkip, questions);

            var controller = new ReadonlyApiController(repo.Object);

            // Act
            var result = await controller.GetQuestions(midPage);

            await controller.GetQuestions(maxPage + 1000);

            // Assert
            Assert.Equal(PageLength, (result.Value as List <Question>).Count);

            repo.Verify(r => r.GetAllAsync
                            (null, Desc(), true, It.IsIn(new [] { midSkip, maxSkip }), PageLength, null)
                        , Times.Exactly(2)
                        );
            repo.Verify(r => r.GetCountAsync <Question>(null), Times.Exactly(2));
            repo.VerifyNoOtherCalls();
        }
예제 #17
0
        public async Task TestGetQuestionsPageOne()
        {
            // Arrange
            var repo = new Mock <IRepositoryEnq>();

            repo.Setup(r => r.GetAllAsync <Question>(
                           null, Desc(), true, 0, PageLength, null)
                       ).ReturnsAsync(
                QuestionData.TestQuestions().ToList().GetRange(0, PageLength)
                );

            var controller = new ReadonlyApiController(repo.Object);

            // Act
            var result = await controller.GetQuestions(1);

            await controller.GetQuestions(0);

            await controller.GetQuestions(-1);

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <List <Question> >(result.Value);
            Assert.Equal(PageLength, (result.Value as List <Question>).Count);

            repo.Verify(r => r.GetAllAsync <Question>
                            (null, Desc(), true, 0, PageLength, null), Times.Exactly(3)
                        );
            repo.VerifyNoOtherCalls();
        }
예제 #18
0
    private void ShowQuestion()
    {
        RemoveAnswerButtons();
        if (Config.Instance.globalConfig.environment == Environment.PRODUCTION)        //
        {
            randomIds.Shuffle();
        }
        _timeRemaining = _baseTimeRemaining - (_currentRoundData.difficultyLevel * 2);
        timeRemainingSlider.maxValue = _timeRemaining;
        UpdateTimeRemainingDisplay();

        QuestionData questionData = _questionPool[_questionIndex];

        questionText.text = "Level " + _currentRoundData.difficultyLevel + ": " + questionData.questionText;

        for (int i = 0; i < questionData.answers.Length; i++)
        {
            GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();
            _answerButtonGameObjects.Add(answerButtonGameObject);
            answerButtonGameObject.transform.SetParent(answerButtonParent);
            answerButtonGameObject.transform.localScale = Vector3.one;

            AnswerButton answerButton = answerButtonGameObject.GetComponent <AnswerButton>();
            answerButton.SetUp(questionData.answers[randomIds[i]]);
        }
    }
예제 #19
0
    // private string xmlAttribute = "";

    void Read()
    {
        using (XmlReader xml = XmlReader.Create(new StringReader(csvTextFile.text)))
        {
            xml.MoveToContent();

            qdata = new QuestionData();

            while (xml.Read())
            {
                switch (xml.NodeType)
                {
                case XmlNodeType.Element:
                    //Debug.Log("element => " + xml.Name);
                    StartElement(ref qdata, xml);
                    break;

                case XmlNodeType.Attribute:
                    //Debug.Log(xml.Value);
                    break;

                case XmlNodeType.Text:
                    xmlValue = xml.Value;
                    break;

                case XmlNodeType.EndElement:
                    EndElement(ref qdata, xml);
                    break;
                }
            }
        }
    }
예제 #20
0
 public void LoadQuestionData()
 {
     if (File.Exists(QUESTION_SAVE_PATH))
     {
         try
         {
             questionData = ScriptableObject.CreateInstance <QuestionData>();
             string json = File.ReadAllText(QUESTION_SAVE_PATH);
             JsonUtility.FromJsonOverwrite(json, questionData);
         }
         catch (IOException ex)
         {
             Debug.LogErrorFormat("Cannot load question data file: {0} - {1}!", QUESTION_SAVE_PATH, ex.ToString());
         }
     }
     else
     {
         if (defaultQuestionData != null)
         {
             questionData = Instantiate(defaultQuestionData);
         }
         else
         {
             Debug.LogError("Default Question is null.");
         }
     }
 }
 internal void FillContents(Question question, QuestionContents contents, QuestionData data, int idx)
 {
     Question = question;
     QuestionContents = contents;
     QuestionData = data;
     Index = idx;
 }
예제 #22
0
    IEnumerator GetAudioClip()
    {
        QuestionData questionData = questionPool [questionIndex];

        Debug.Log(questionData.questionSound);
        using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(questionData.questionSound, AudioType.OGGVORBIS))
        {
            yield return(www.Send());

            if (www.isNetworkError)
            {
                Debug.Log(www.error);
            }
            else
            {
                questionClip = DownloadHandlerAudioClip.GetContent(www);
                Debug.Log(questionClip);
                questionAudioSource.clip = questionClip;

                //Pitch Correct and get clip length
                questionAudioSource.outputAudioMixerGroup.audioMixer.SetFloat("pitchParam", 1f / questionAudioSource.pitch);
                ClipLength = questionAudioSource.clip.length / questionAudioSource.pitch;
                Debug.Log("Clip:" + ClipLength + " Speed:" + questionAudioSource.pitch);

                //Play Audio
                questionAudioSource.Play();
                //Show buttons after audio is done
                StartCoroutine(AssignAnswerButtons(ClipLength));
            }
        }
    }
예제 #23
0
    private void ShowQuestion()
    {
        RemoveAnswerButtons();
        QuestionData questionData = questionPool[questionIndex];

        questionDisplayText.text = questionData.questionText;

        for (int i = 0; i < questionData.answers.Length; i++)
        {
            timeRemaining = 10;
            GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();
            answerButtonGameObjects.Add(answerButtonGameObject);
            answerButtonGameObject.transform.SetParent(answerButtonParent);
            if (questionData.clip != null)
            {
                AudioClip audio = questionData.clip;
                source.clip = audio;
                source.Play();
            }
            else
            {
                source.Stop();
            }
            AnswerButton answerButton = answerButtonGameObject.GetComponent <AnswerButton>();
            answerButton.Setup(questionData.answers[i]);
        }
    }
 internal void FillContents(Question question)
 {
     Question = question;
     QuestionContents = question.QuestionContents;
     QuestionData = question.QuestionData;
     Index = 1;
 }
예제 #25
0
        /// <summary>
        /// Gets a list of Answers object associated with a question
        /// </summary>
        /// <param name="theQuestion">the question being queried</param>
        /// <returns>a list of Answer objects</returns>
        public List <AnswerData> ReadAnswers(QuestionData theQuestion)
        {
            List <AnswerData> return_data = new List <AnswerData>();

            if (DataReader != null)
            {
                DataReader.Close();
            }

            SQL = "SELECT * from `answers` a INNER JOIN `rel_questions_answers` r ON r.`answer_id` = a.`answer_id` WHERE r.`question_id` = \"" + theQuestion.Id + "\";";

            InitializeCommand();
            OpenConnection();
            DataReader = Command.ExecuteReader();

            if (DataReader.HasRows)
            {
                while (DataReader.Read())
                {
                    AnswerData temp = new AnswerData(DataReader.GetUInt16("answer_id"));
                    temp.Correct = DataReader.GetBoolean("is_correct");
                    temp.Text    = DataReader.GetString("text");
                    return_data.Add(temp);
                }
            }
            CloseConnection();

            return(return_data);
        }
예제 #26
0
        public void OnChangeQuestionStatus(RMessage message)
        {
            QuestionData question = (QuestionData)message.Data;

            for (int i = 0; i < model.All_questions.Count; i++)
            {
                if (model.All_questions[i].Id == question.Id)
                {
                    model.All_questions[i].Status = question.Status;
                    break;
                }
            }

            for (int i = 0; i < model.Current_my_questions.Count; i++)
            {
                if (model.Current_my_questions[i].Id == question.Id)
                {
                    model.Current_my_questions[i].Status = question.Status;
                    break;
                }
            }

            for (int i = 0; i < model.Current_all_questions.Count; i++)
            {
                if (model.Current_all_questions[i].Id == question.Id)
                {
                    model.Current_all_questions[i].Status = question.Status;
                    break;
                }
            }

            QuestionsDomainsUpdated(model);
        }
예제 #27
0
    private void ShowQuestions()
    {
        RemoveAnswerButtons();
        QuestionData question = questionData[questionIndex];

        questionText.text = question.questionText.ToLower();
        for (int i = 0; i < question.answers.Length; i++)
        {
            GameObject answer = answerButtonPool.GetObject();

            answer.transform.SetParent(answersPanel, false);
            answer.SetActive(true);
            answerButtonObjects.Add(answer);

            AnswerButton answerButton = answer.GetComponent <AnswerButton>();
            if (i == 0)
            {
                if (roundNum == 0)
                {
                    questionText.font = answerButton.star;
                }
                else
                {
                    questionText.font = answerButton.lord;
                }
            }

            answerButton.SetUp(question.answers[i], roundNum);
        }
    }
예제 #28
0
    IEnumerator AssignAnswerButtons(float time)
    {
        yield return(new WaitForSeconds(time));

        // Code to execute after the delay

        QuestionData questionData = questionPool [questionIndex];
        //Asign answers to boxes
        Random rnd = new Random();
        //randomizes output
        var answersInRandomOrder = questionData.answers.OrderBy(x => randnum.Next()).ToArray();

        for (int i = 0; i < answersInRandomOrder.Length; i++)
        {
            GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();
            answerButtonGameObjects.Add(answerButtonGameObject);
            answerButtonGameObject.transform.SetParent(answerButtonParent);

            AnswerButton answerButton = answerButtonGameObject.GetComponent <AnswerButton>();
            answerButton.Setup(answersInRandomOrder[i]);
        }
        //The question is done now, show button and play bg music
        spokenQuestion = true;
        bgMusic.Play();
        Vector3 replayscale = new Vector3(1, 1, 1);

        replay.transform.localScale = replayscale;
    }
        public bool SaveDataToDB(IDataModel data)
        {
            try
            {
                QuestionData qd = (QuestionData)data;

                _db.Open();
                IDbCommand cmd = _db.CreateCommand();
                cmd.CommandText = QUESTION_UPDATE_ANSWER_DATA;

                /*Agregando Parametro para guardar respuesta de pregunta*/
                IDbDataParameter bestScoreParam = cmd.CreateParameter();
                bestScoreParam.ParameterName = "@answer";
                bestScoreParam.Value         = qd.Answer;
                cmd.Parameters.Add(bestScoreParam);

                /*Agregando Parametro para identificar la que pregunta para guardar la respuesta*/
                IDbDataParameter levelParam = cmd.CreateParameter();
                levelParam.ParameterName = "@questionid";
                levelParam.Value         = qd.QuestionID;
                cmd.Parameters.Add(levelParam);

                bool res = cmd.ExecuteNonQuery() > 0;
                _db.Close();
                _db.Dispose();

                return(res);
            }
            catch (Exception e)
            {
                Debug.LogError(e.Message);
                return(false);
            }
        }
        public bool LoadAllDataFromDB()
        {
            try
            {
                _db.Open();
                IDbCommand cmd = _db.CreateCommand();
                cmd.CommandText = QUESTION_ALL_DATA;
                IDataReader reader = cmd.ExecuteReader();
                listQuestionData = new List <QuestionData>();

                while (reader.Read())
                {
                    QuestionModel = new QuestionData()
                    {
                        QuestionID  = reader.GetInt32(0),
                        RealmNumber = reader.GetInt32(1),
                        Question    = reader.GetString(2),
                        Answer      = reader.GetString(3)
                    };
                    listQuestionData.Add(QuestionModel);
                }
                reader.Close();
                _db.Close();
                _db.Dispose();
                return(true);
            }
            catch (Exception e)
            {
                Debug.LogError(e.Message);
                return(false);
            }
        }
예제 #31
0
        public void UpdateQuestion(QuestionData theQuestion)
        {
            AnswerEntity temp = new AnswerEntity();

            for (int i = 0; i < theQuestion.Answers.Count; i++)
            {
                temp.UpdateAnswer(theQuestion.Answers[i]);
            }

            temp.Dispose();

            if (DataReader != null)
            {
                DataReader.Close();
            }


            SQL = "UPDATE `questions` q SET q.`question` = \"" + theQuestion.Text + "\" WHERE q.`question_id` = \"" + theQuestion.Id + "\";";

            OpenConnection();
            InitializeCommand();



            int result = ExecuteStoredProcedure();

            CloseConnection();

            if (result == 0)
            {
                throw new Exception("Unable to edit the question on database");
            }
        }
    public QuestionManager()
    {
        question_index = 0;
        question_index_for_second = 0;
        questionDataForFirstActivity = null;
        questionDataForSecondActivity = null;

        correct_answer_from_previous_question = "";
        //questionDataForFirstActivity = QuestionData.LoadFromText(Application.dataPath+"/Game/questionDataXMLFile.xml");
        //questionDataForFirstActivity = QuestionData.LoadFromText(questionDataXMLFile.xml);
    }
예제 #33
0
    private void EndElement(ref QuestionData qData, XmlReader xml)
    {
        switch (xml.Name)
        {
            case "question":
                qData.questions.Add(this.q);
                break;

            case "type":
                this.q.type = xmlValue;
                break;

            case "section":
                this.q.section = xmlValue;
                FixTypeBasedOnSection(ref this.q);
                break;

            case "content":
                this.q.content = xmlValue;
                break;

            case "info":
                this.q.info = xmlValue;
                break;

            case "answer":
                answer.text = xmlValue;
                this.q.answers.Add(answer);
                break;

            case "correct":
                foreach (var ans in this.q.answers)
                {
                    if (ans.option == xmlValue)
                    {
                        ans.correct = true;
                    }
                }
                break;

            case "questions" :
                Debug.Log("end questions");
                QuestionData.Save(targetFileName, qData);
                break;
        }

        xmlValue = "";
    }
예제 #34
0
        public static QuestionData[] Parse(string url)
        {
            HtmlDocument HD = new HtmlWeb().Load(url);
            List<QuestionData> data = null;
            HtmlNodeCollection tables = HD.DocumentNode.SelectNodes("//table[@class='MsoTableGrid']");
            if (tables != null)
            {
                data = new List<QuestionData>();
                foreach (HtmlNode table in tables)
                {
                    var trCollection = table.ChildNodes.Where(x => x.Name == "tr").ToArray();
                    if (trCollection != null)
                    {
                        var question = new QuestionData();
                        try { question.ID = int.Parse(trCollection[0].ChildNodes.Where(x => x.Name == "td").ToArray()[1].ChildNodes[1].LastChild.InnerText); }
                        catch
                        {
                            question.ID = 0;
                            question.State = QuestionState.Added;
                        }
                        question.CorrectAnswer = trCollection[1].ChildNodes.Where(x => x.Name == "td").ToArray()[1].ChildNodes[1].LastChild.InnerText
                            .Split(',')
                            .Select(x => int.Parse(x)).ToArray();
                        var expr = trCollection[2].ChildNodes.Where(x => x.Name == "td").ToArray()[1].ChildNodes[1].ChildNodes.Where(x => x.Name == "span" || x.Name == "#text").ToArray()[0];
                        //p с различным содержимым, если формула то span
                        //                          если текст то #text
                        //                          если рисунок то span
                        question.Question = GetValue(expr, url);

                        List<object> answers = new List<object>();
                        for (int i = 3; i < trCollection.Length; i++)
                        {
                            expr = (i == 3 ?
                                trCollection[i].ChildNodes.Where(x => x.Name == "td").ToArray()[1].ChildNodes[1].ChildNodes.Where(x => x.Name == "span" || x.Name == "#text").ToArray()[0]
                                :
                                trCollection[i].ChildNodes.Where(x => x.Name == "td").ToArray()[0].ChildNodes[1].ChildNodes.Where(x => x.Name == "span" || x.Name == "#text").ToArray()[0]);
                            answers.Add(GetValue(expr, url));
                        }
                        question.PossibleAnswers = answers.ToArray();
                        data.Add(question);
                    }
                    else
                        throw new Exception("Ошибка в документе, изменения не будут сохранены");
                }
            }
            else throw new Exception("Ошибка в документе, не найдено не одной таблицы\r\nНе меняйте структуру документа");
            return data.ToArray();
        }
예제 #35
0
    void Convert(TextAsset csv, string targetFile, string section)
    {
        QuestionData qData = new QuestionData();
        if (System.IO.File.Exists(XmlManager.XmlPath + targetFile))
        {
            qData = QuestionData.LoadAsInstance(XmlManager.XmlPath + targetFile);
            if (qData == null)
            {
                Debug.Log(string.Format("Target File {0} is exist, but it's content is null", targetFile));
                qData = new QuestionData();
            }
        }

        StringReader reader = new StringReader(csv.text);

        using (CsvReader csvReader = new CsvReader(reader, false))
        {
            int fieldCount = csvReader.FieldCount;
            Debug.Log(fieldCount);
            while (csvReader.ReadNextRecord())
            {
                string colorCode = csvReader[0];

                // Color Code pass check
                if ((colorCode != "B" && colorCode != "G" && colorCode != "R" &&
                    colorCode != "Y" && colorCode != "P" && colorCode != "O") ||
                    string.IsNullOrEmpty(colorCode))
                {
                    continue;
                }

                // Get the question content
                var qcontent = csvReader[2];

                QuestionData.question question = new QuestionData.question();
                question.content = qcontent.Trim();
                question.section = section;
                question.type = GetColorNameFromCode(colorCode);

                qData.questions.Add(question);
            }
        }

        QuestionData.Save(targetFile, qData);

        //Debug.Log("Converted " + count);
    }
        /// <summary>
        /// Returns a question list of all available questions
        /// in the given page range
        /// </summary>
        public QuestionData GetQuestionListForPageRange(int surveyId, int startPageNumber, int endPageNumber)
        {
            //SqlParameter[] commandParameters = new SqlParameter[] 
            //{ new SqlParameter("@surveyid", surveyId), 
            //    new SqlParameter("@startPage", startPageNumber), 
            //    new SqlParameter("@endPage", endPageNumber) 
            //};

            ArrayList commandParameters = new ArrayList();
            {
                commandParameters.Add(new SqlParameter("@SurveyId", surveyId).SqlValue);
                commandParameters.Add(new SqlParameter("@startPage", startPageNumber).SqlValue);
                commandParameters.Add(new SqlParameter("@endPage", endPageNumber).SqlValue);
            }   
            
            QuestionData dataSet = new QuestionData();
            DbConnection.db.LoadDataSet("vts_spQuestionsGetPageRangeForSurvey", dataSet, new string[] { "Questions" }, commandParameters.ToArray());
            return dataSet;
        }
예제 #37
0
 public static void Save(string name, QuestionData qData)
 {
     XmlManager.SaveInstanceAsXml(name, typeof(QuestionData), qData);
 }
        /// <summary>
        /// Returns a question list with only text, questionid and display order field 
        /// from the given survey that have at leat one selectable answer type
        /// </summary>
        /// <param name="surveyId">Survey id from which you want to retrieve the questions</param>
        /// <returns>A question object collection</returns>
        public QuestionData GetQuestionListWithSelectableAnswers(int surveyId)
        {
            QuestionData dataSet = new QuestionData();

            ArrayList commandParameters = new ArrayList();
            {
                commandParameters.Add(new SqlParameter("@SurveyId", surveyId).SqlValue);
            } 

            DbConnection.db.LoadDataSet("vts_spQuestionListWithSelectableAnswers", dataSet, new string[] { "Questions" }, commandParameters.ToArray());
            return dataSet;
        }
        private void UpdateQuestionButton_Click(object sender, System.EventArgs e)
        {
            if (QuestionFreeTextBox.Text.Length == 0)
            {
                MessageLabel.Visible = true;
                ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("MissingQuestionMessage"));
            }
            else
            {
                // Removes any single paragraph description
                if (QuestionFreeTextBox.Text.StartsWith("<p>") &&
                    QuestionFreeTextBox.Text.EndsWith("</p>") &&
                    QuestionFreeTextBox.Text.IndexOf("<p>", 3) < 0)
                {
                    QuestionFreeTextBox.Text = QuestionFreeTextBox.Text.Substring(3, QuestionFreeTextBox.Text.Length - 7);
                }

                // creates a BE and update the question
                QuestionData question = new QuestionData();
                QuestionData.QuestionsRow updatedQuestion =
                    question.Questions.NewQuestionsRow();

                // Set the updated fields
                updatedQuestion.QuestionId = _parentQuestionId;
                updatedQuestion.SurveyId = getSurveyId();
                updatedQuestion.QuestionText = QuestionFreeTextBox.Text.Length > 3900 ?
                  Server.HtmlDecode(QuestionFreeTextBox.Text.Substring(0, 3900)) : Server.HtmlDecode(QuestionFreeTextBox.Text);
                updatedQuestion.MinSelectionRequired = int.Parse(MinSelectionDropDownList.SelectedValue);
                updatedQuestion.MaxSelectionAllowed = int.Parse(MaxAllowedDropDownList.SelectedValue);
                updatedQuestion.RatingEnabled = RatingCheckbox.Checked;
                updatedQuestion.RandomizeAnswers = false;
                updatedQuestion.QuestionIdText = txtQuestionID.Text;
                updatedQuestion.ShowHelpText = chbShowHelpText.Checked;
                updatedQuestion.Alias = txtAlias.Text;
                updatedQuestion.HelpText = txtHelpText.Text;
                updatedQuestion.QuestionIdText = txtQuestionID.Text;
                updatedQuestion.SetQuestionGroupIDNull();
                if (ddlGroup.SelectedIndex != 0)
                    updatedQuestion.QuestionGroupID = int.Parse(ddlGroup.SelectedValue);
                if (ddlSubGroup.SelectedIndex != 0)
                    updatedQuestion.QuestionGroupID = int.Parse(ddlSubGroup.SelectedValue);
                if (MultipleChoiceCheckbox.Checked)
                {
                    updatedQuestion.SelectionModeId = (int)QuestionSelectionMode.MultiMatrix;
                }
                else
                {
                    updatedQuestion.SelectionModeId = (int)QuestionSelectionMode.Matrix;
                }

                question.Questions.AddQuestionsRow(updatedQuestion);

                new Question().UpdateQuestion(question, LanguagesDropdownlist.SelectedValue);

                // Matrix can be repeated
                if (RepeatSectionCheckbox.Checked)
                {
                    // creates a BE and update the options
                    QuestionSectionOptionData sectionOptions = new QuestionSectionOptionData();
                    QuestionSectionOptionData.QuestionSectionOptionsRow updatedSectionOption =
                        sectionOptions.QuestionSectionOptions.NewQuestionSectionOptionsRow();

                    // Set the updated fields
                    updatedSectionOption.QuestionId = _parentQuestionId;
                    updatedSectionOption.RepeatableSectionModeId = (int)RepeatableSectionMode.FullAnswers;
                    updatedSectionOption.DeleteSectionLinkText = DeleteSectionLinkTextBox.Text;
                    updatedSectionOption.AddSectionLinkText = AddSectionLinkTextBox.Text;
                    sectionOptions.QuestionSectionOptions.AddQuestionSectionOptionsRow(updatedSectionOption);
                    new Question().UpdateQuestionSectionOptions(sectionOptions, LanguagesDropdownlist.SelectedValue);
                }
                else
                {
                    new Question().DeleteQuestionSectionOptions(_parentQuestionId);
                    DeleteSectionLinkTextBox.Text = string.Empty;
                    AddSectionLinkTextBox.Text = string.Empty;
                }

                MessageLabel.Visible = true;
                ((PageBase)Page).ShowNormalMessage(MessageLabel, ((PageBase)Page).GetPageResource("OptionsUpdatedMessage"));


                BindQuestionOptions();
                BindAnswerOptions();
            }

        }
        /// <summary>
        /// Returns all question from the given survey
        /// </summary>
        /// <param name="surveyId">Survey id from which you want to retrieve the questions</param>
        /// <returns>A question object collection</returns>
        public QuestionData GetQuestions(int surveyId, string languageCode)
        {
            //SqlParameter[] commandParameters = new SqlParameter[] 
            //{ new SqlParameter("@SurveyId", surveyId), 
            //    new SqlParameter("@LanguageCode", languageCode) 
            //};

            ArrayList commandParameters = new ArrayList();
            {
                commandParameters.Add(new SqlParameter("@SurveyId", surveyId).SqlValue);
                commandParameters.Add(new SqlParameter("@LanguageCode", languageCode).SqlValue);
            } 
            
            QuestionData dataSet = new QuestionData();
            DbConnection.db.LoadDataSet("vts_spQuestionsGetForSurvey", dataSet, new string[] { "Questions" }, commandParameters.ToArray());
            return dataSet;
        }
        /// <summary>
        /// Returns a question list with only text, questionid and display order field 
        /// from the given survey that have at leat one selectable answer type
        /// </summary>
        /// <param name="surveyId">Survey id from which you want to retrieve the questions</param>
        /// <param name="pageNumber">Page from which we need the questions</param>
        /// <returns>A question object collection</returns>
        public QuestionData GetQuestionListWithSelectableAnswers(int surveyId, int pageNumber)
        {
            //SqlParameter[] commandParameters = new SqlParameter[] 
            //{ new SqlParameter("@surveyid", surveyId), 
            //    new SqlParameter("@pageNumber", pageNumber) 
            //};

            ArrayList commandParameters = new ArrayList();
            {
                commandParameters.Add(new SqlParameter("@SurveyId", surveyId).SqlValue);
                commandParameters.Add(new SqlParameter("@pageNumber", pageNumber).SqlValue);
            }             
            
            QuestionData dataSet = new QuestionData();
            DbConnection.db.LoadDataSet("vts_spQuestionListWithSelectableAnswersForPage", dataSet, new string[] { "Questions" }, commandParameters.ToArray());
            return dataSet;
        }
 public QuestionViewModel(QuestionData data)
 {
     _data = data;
     Question = _data.Question;
     OnPropertyChanged("UserAnswer");
 }
		string GenerateMatrixReport(QuestionData.QuestionsRow[] childQuestions, bool onlyAnswered, int sectionNumber)
		{
			StringBuilder matrixReport = new StringBuilder();
			
			for (int i=0;i<childQuestions.Length;i++)
			{
				string questionText = childQuestions[i].QuestionText;
				questionText = questionText.Replace("<br />", Environment.NewLine + "<br />");
				new PipeManager().PipeValuesInText(childQuestions[i].QuestionId, questionText, _voterAnswers.VotersAnswers, null);
				if (System.Web.HttpContext.Current != null)
				{
					questionText = System.Text.RegularExpressions.Regex.Replace(questionText, "<[^>]*>", " ");
				}
				string answerReport = GenerateAnswersReport(childQuestions[i].QuestionId, onlyAnswered, sectionNumber);
				if (answerReport.Length > 0 || !onlyAnswered)
				{
					matrixReport.Append(questionText + "<br />"+ Environment.NewLine + "<br />");
					matrixReport.Append(answerReport);
					matrixReport.Append(Environment.NewLine + "<br />");
				}
			}

			return matrixReport.ToString();
		}
 /// <summary>
 /// Get the webcontrol instance of the question BE and 
 /// adds it to the control hierarchie
 /// </summary>
 /// <param name="question"></param>
 protected virtual void InsertQuestion(QuestionData.QuestionsRow question, Control container, bool enableQuestionDefaults)
 {
     QuestionItem child = QuestionItemFactory.Create(question, this.LanguageCode, this.UniqueID, this.GetRandomSeedForQuestion(), (VoterAnswersData.VotersAnswersDataTable)this.VoterAnswers.VotersAnswers.Copy(), enableQuestionDefaults);
     child.AnswerStyle = this.AnswerStyle;
     child.QuestionStyle = this.QuestionStyle;
     child.QuestionNumber = 0;
     if (child is SectionQuestion)
     {
         ((SectionQuestion)child).SectionOptionStyle = this.SectionOptionStyle;
     }
     ActiveQuestion question2 = child as ActiveQuestion;
     if (question2 != null)
     {
         if (this._showQuestionNumbers)
         {
             question2.QuestionNumber = this.QuestionNumber + this._questionNumbers;
         }
         question2.EnableClientSideValidation = this.EnableValidation;
         question2.EnableServerSideValidation = this._didPostBack;
         question2.ValidationMarkStyle = this.QuestionValidationMarkStyle;
         question2.ValidationMark = this.QuestionValidationMark;
         question2.ValidationMessageStyle = this.QuestionValidationMessageStyle;
         question2.ConfirmationMessageStyle = this.ConfirmationMessageStyle;
         question2.AnswerPosted += new AnswerPostedEventHandler(this.OnAnswerPost);
         question2.SelectionRequired += new SelectionRequiredEventHandler(this.OnSelectionRequired);
         question2.SelectionOverflow += new SelectionOverflowEventHandler(this.OnSelectionRequired);
         question2.InvalidAnswers += new InvalidAnswersEventHandler(this.OnInvalidAnswers);
         question2.ClientScriptGenerated += new ClientScriptGeneratedEventHandler(this.OnClientScriptGeneration);
         this._questionNumbers++;
     }
     MatrixQuestion question3 = child as MatrixQuestion;
     if (question3 != null)
     {
         question3.MatrixHeaderStyle = this.MatrixHeaderStyle;
         question3.MatrixItemStyle = this.MatrixItemStyle;
         question3.MatrixAlternatingItemStyle = this.MatrixAlternatingItemStyle;
         question3.MatrixStyle = this.MatrixStyle;
     }
     SectionQuestion question4 = child as SectionQuestion;
     if (question4 != null)
     {
         question4.EnableGridSectionClientSideValidation = this.EnableValidation;
         question4.EnableGridSectionServerSideValidation = this.EnableValidation;
         question4.SectionGridAnswersHeaderStyle = this.SectionGridAnswersHeaderStyle;
         question4.SectionGridAnswersItemStyle = this.SectionGridAnswersItemStyle;
         question4.SectionGridAnswersAlternatingItemStyle = this.SectionGridAnswersAlternatingItemStyle;
         question4.SectionGridAnswersStyle = this.SectionGridAnswersStyle;
     }
     container.Controls.Add(child);
     this.CleanVoterQuestionAnswers(child);
     this.OnQuestionCreated(new FormQuestionEventArgs(child));
     if (!this._previousQuestionNumbering)
     {
         this.OnQuestionBound(new FormQuestionEventArgs(child));
     }
     this._questions.Add(child);
 }
 /// <summary>
 /// Update the question in the database
 /// </summary>
 /// <param name="updatedQuestion">question to update, must contain the question id</param>
 public void UpdateQuestion(QuestionData updatedQuestion, string languageCode)
 {
     QuestionFactory.Create().UpdateQuestion(updatedQuestion, languageCode);
 }
    // Call this when you want a new question for the first activity
    public bool NewQuestionForTheFirstActivity(ref string the_question, ref Dropdown Dropdown_Menu, int the_score)
    {
        if(questionDataForFirstActivity==null)
        {
            //the path to the XML file with the data about the questions
            questionDataForFirstActivity = QuestionData.Load(Path.Combine
                (Application.dataPath, "questionDataForFirstActivity.xml"));
        }

        // gets a random question
        //int q = Random.Range(0, questionDataForFirstActivity.questions.Count);

        if ((question_index + 1) <= questionDataForFirstActivity.questions.Count)
        {
            //get a question
            currentQuestion = questionDataForFirstActivity.questions[question_index];

            // add code here to set text values of your Question GameObject
            // e.g. GetComponent<SomeScript>().Text = currentQuestion.questionText;
            the_question = correct_answer_from_previous_question + "Question " + (question_index + 1) + " out of "
                + questionDataForFirstActivity.questions.Count + "; current core:" + the_score +
                "\n\n" + currentQuestion.questionText + "\n\n";

            /* +" \n\nChoices: " + currentQuestion.answer1 +
                "     "+currentQuestion.answer2
                + "     " + currentQuestion.answer3 + "     " + currentQuestion.answer4 + "     " + currentQuestion.answer5
                + "     " +currentQuestion.answer6 + "     " + currentQuestion.answer7 + "     " + currentQuestion.answer8
                + "     " +currentQuestion.answer9 + "     " + currentQuestion.answer10 + "\n\n"+": "
                + currentQuestion.correctAnswer+"\n";*/

            //Dropdown_Menu.Select();
            //clear the choices in the dropdown and add the answers
            /*Dropdown_Menu.options.Clear();
            Dropdown_Menu.value = 0;
            Dropdown_Menu.captionText = null;*/

            Dropdown_Menu.value = 0;
            Dropdown_Menu.options.Clear();

            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = "Make your choice!" });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer1 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer2 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer3 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer4 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer5 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer6 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer7 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer8 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer9 });
            Dropdown_Menu.options.Add(new Dropdown.OptionData() { text = currentQuestion.answer10 });
            //Dropdown_Menu.captionText = Dropdown_Menu.captionText;
        }

        if ((question_index + 1) <= questionDataForFirstActivity.questions.Count)
        {//still continue with this activity
            question_index++;
            return false;
        }
        /*else if ((question_index + 1) == questionDataForFirstActivity.questions.Count)
        {//still continue with this activity
            return false;
        }*/
        else if ((question_index + 1) > questionDataForFirstActivity.questions.Count)
        {//new activity
            return true;
        }
        else//new activity
            return true;
    }
        /// <summary>
        /// Returns all question listed in the library with their details
        /// </summary>
        public QuestionData GetLibraryQuestions(int libraryId, string languageCode)
        {
            QuestionData dataSet = new QuestionData();

            ArrayList commandParameters = new ArrayList();
            {
                commandParameters.Add(new SqlParameter("@LibraryId", libraryId).SqlValue);
                commandParameters.Add(new SqlParameter("@LanguageCode", languageCode).SqlValue);
            }

            DbConnection.db.LoadDataSet("vts_spQuestionsGetForLibrary", dataSet, new string[] { "Questions" }, commandParameters.ToArray());
            return dataSet;
        }
 /// <summary>
 /// Adds a new question to the survey specified by the survey id in the database
 /// </summary>
 /// <param name="newQuestion">Question object with information about what to add. Only Id must be ommited</param>
 public void AddQuestion(QuestionData newQuestion)
 {
     SqlConnection sqlConnection = new SqlConnection(DbConnection.NewDbConnectionString);
     DbConnection.db.UpdateDataSet(newQuestion, "Questions", this.GetInsertQuestionCommand(sqlConnection, null), new SqlCommand(), new SqlCommand(), UpdateBehavior.Transactional);
 }
    //Call this when you want a new question for the second activity
    public bool NewQuestionForTheSecondActivity(ref string the_question,int the_score)
    {
        if (questionDataForSecondActivity == null)
        {
            //the path to the XML file with the data about the questions
            questionDataForSecondActivity = QuestionData.Load(Path.Combine
                (Application.dataPath, "questionDataForSecondActivity.xml"));
        }

        if ((question_index_for_second + 1) <= questionDataForSecondActivity.questions.Count)
        {
            //get a question
            currentQuestion = questionDataForSecondActivity.questions[question_index_for_second];

            the_question =correct_answer_from_previous_question+ "\nQuestion: " + currentQuestion.questionText +
                " \n\nPossible answers: " + currentQuestion.answer1 +
                "     " + currentQuestion.answer2
                + "     " + currentQuestion.answer3 + "     " + currentQuestion.answer4 + "     " + currentQuestion.answer5
                + "     " + currentQuestion.answer6 + "     " + currentQuestion.answer7 + "     " + currentQuestion.answer8
                + "     " + currentQuestion.answer9 + "     " + currentQuestion.answer10 + "        :-> "
                + currentQuestion.correctAnswer + "\n\nQuestion " + (question_index_for_second + 1) + " out of "
                +questionDataForSecondActivity.questions.Count+ "; current score:" + the_score + "\n\n";

        }

        if ((question_index_for_second + 1) <= questionDataForSecondActivity.questions.Count)
        {//still continue with this activity
            question_index_for_second++;
            return false;
        }
        /*else if ((question_index + 1) == questionDataForFirstActivity.questions.Count)
        {//still continue with this activity
            return false;
        }*/
        else if ((question_index_for_second + 1) > questionDataForSecondActivity.questions.Count)
        {//new activity
            return true;
        }
        else//new activity
            return true;
    }
        /// <summary>
        /// Returns all question listed in the library without their child questions
        /// </summary>
        public QuestionData GetLibraryQuestionListWithoutChilds(int libraryId)
        {
            QuestionData dataSet = new QuestionData();

            ArrayList commandParameters = new ArrayList();
            {
                commandParameters.Add(new SqlParameter("@LibraryId", libraryId).SqlValue);
            }

            DbConnection.db.LoadDataSet("vts_spQuestionsGetListForLibraryWithoutChilds", dataSet, new string[] { "Questions" }, commandParameters.ToArray());
            return dataSet;
        }
예제 #51
0
 public static void Load(string name)
 {
     current = (QuestionData)XmlManager.LoadInstanceAsXml(name, typeof(QuestionData));
 }
		/// <summary>
		/// Get a web control instance of the question row 
		/// and adds it with its options to the table 
		/// </summary>
		private void AddQuestionWebControl(Table questionTable, QuestionData.QuestionsRow question)
		{
			QuestionItem questionWebControl = QuestionItemFactory.Create(question, LanguagesDropdownlist.SelectedValue, this.UniqueID, 0, null, true,true);

			// Set question's style
			// and bind the data
			Style questionStyle = new Style();
			questionStyle.CssClass = "surveyQuestion";
			Style answerStyle = new Style();
			answerStyle.CssClass = "surveyAnswer";	
			Style markStyle = new Style();

			if (questionWebControl is ActiveQuestion)
			{
				((ActiveQuestion)questionWebControl).EnableClientSideValidation = false;
				((ActiveQuestion)questionWebControl).EnableServerSideValidation = false;
			}
			if (questionWebControl is SectionQuestion)
			{
				((SectionQuestion)questionWebControl).SectionOptionStyle.CssClass = "questionOptions";
			}
			if (questionWebControl is MatrixQuestion)
			{
				((MatrixQuestion)questionWebControl).MatrixHeaderStyle = answerStyle;
				((MatrixQuestion)questionWebControl).MatrixItemStyle = answerStyle;
				((MatrixQuestion)questionWebControl).MatrixAlternatingItemStyle = answerStyle;
			}

			questionWebControl.RenderMode = ControlRenderMode.ReadOnly;
			questionWebControl.AnswerStyle = answerStyle;
			questionWebControl.QuestionStyle = questionStyle;
			questions.Add(questionWebControl);
						
			// Add the question and its options to the table
			if (NSurveyUser.Identity.IsAdmin || CheckRight(NSurveyRights.ManageLibrary, false))
			{
				questionTable.Rows.Add(BuildQuestionOptionsRow(question));
			}
			
			questionTable.Rows.Add(BuildRow(questionWebControl, ""));
		}
        /// <summary>
        /// Get the current DB stats and fill 
        /// the label with them
        /// </summary>
        private void BindData()
        {
            isScored = new Surveys().IsSurveyScored(SurveyId);

            TimeSpan timeTaken;
            _voterAnswers = new Voters().GetVoterAnswers(_voterId);

            if (!_voterAnswers.Voters[0].IsVoteDateNull() && !_voterAnswers.Voters[0].IsStartDateNull())
            {
                timeTaken = _voterAnswers.Voters[0].VoteDate - _voterAnswers.Voters[0].StartDate;
            }
            else
            {
                timeTaken = new TimeSpan(0);
            }

            VoterUIDLabel.Text = _voterId.ToString();
            IPAddressLabel.Text = _voterAnswers.Voters[0].IPSource;
            VoteDateLabel.Text = _voterAnswers.Voters[0].VoteDate.ToString();
            VoterEmail.Text = _voterAnswers.Voters[0].IsEmailNull() ? GetPageResource("AnonymousVoteInfo") : _voterAnswers.Voters[0].Email;
            VoterUserName.Text = _voterAnswers.Voters[0].IsContextUserNameNull() ?  GetPageResource("ContextUserNameDisabled") : _voterAnswers.Voters[0].ContextUserName;
            VoterLanguageValueLabel.Text = _voterAnswers.Voters[0].IsLanguageCodeNull() || _voterAnswers.Voters[0].LanguageCode.Length == 0 ?
                GetPageResource("LanguageUndefined") : _voterAnswers.Voters[0].LanguageCode;
            TimeToTakeSurveyLabel.Text = string.Format("{0} {1}, {2} secs.", timeTaken.Minutes.ToString(), GetPageResource("MinutesInfo"), timeTaken.Seconds.ToString());

            WebSecurityAddInCollection securityAddIns = WebSecurityAddInFactory.CreateWebSecurityAddInCollection(new SecurityAddIns().GetWebSecurityAddIns(SurveyId), ViewState, null);
            NameValueCollection addInVoterData;
            for (int i=0;i<securityAddIns.Count;i++)
            {
                addInVoterData = securityAddIns[i].GetAddInVoterData(_voterId);
                if (addInVoterData != null)
                {
                    // Creates a new addin voter details page
                    SecurityAddInVoterReportControl addInVoterControl =
                        (SecurityAddInVoterReportControl)LoadControl("UserControls/SecurityAddInVoterReportControl.ascx");

                    addInVoterControl.AddInDescription = securityAddIns[i].Description;
                    addInVoterControl.AddInVoterData = addInVoterData;
                    AddInVoterDataPlaceHolder.Controls.Add(addInVoterControl);
                }
            }

            _questionData = new Questions().GetQuestionHierarchy(SurveyId);
            QuestionsDataGrid.DataSource = GetParentQuestions();
            QuestionsDataGrid.DataKeyField = "QuestionId";
            QuestionsDataGrid.DataBind();
            if (isScored)
            {
                VoterScoreTotalLabel.Text = GetPageResource("VoterScoreTotalLabel") + _totalScore.ToString();
            }
        }
		private TableRow BuildQuestionOptionsRow(QuestionData.QuestionsRow question)
		{
			LibraryQuestionOptionsControl libraryQuestionOptionsControl = 
				(LibraryQuestionOptionsControl)LoadControl("UserControls/LibraryQuestionOptionsControl.ascx");
			libraryQuestionOptionsControl.Question = question;
            libraryQuestionOptionsControl.EventOrderUp += new CommandEventHandler(OnOrderUp);
            libraryQuestionOptionsControl.EventOrderDown += new CommandEventHandler(OnOrderDown);
            libraryQuestionOptionsControl.QuestionId = question.QuestionId.ToString();
            //libraryQuestionOptionsControl.QuestionHelpText = question.q
			return BuildRow(libraryQuestionOptionsControl, "");
		}
 /// <summary>
 /// Adds a new question to the poll specified by the poll id in the database
 /// </summary>
 /// <param name="newQuestion">Question object with information about what to add. Only Id must be ommited</param>
 public void AddQuestion(QuestionData newQuestion)
 {
     QuestionFactory.Create().AddQuestion(newQuestion);
 }
 /// <summary>
 /// Update the question in the database
 /// </summary>
 /// <param name="updatedQuestion">question to update, must contain the question id</param>
 public void UpdateQuestion(QuestionData updatedQuestion, string languageCode)
 {
     SqlConnection connection = new SqlConnection(DbConnection.NewDbConnectionString);
     SqlCommand insertCommand = new SqlCommand("vts_spQuestionUpdate", connection);
     insertCommand.CommandType = CommandType.StoredProcedure;
     insertCommand.Parameters.Add(new SqlParameter("@LanguageCode", languageCode));
     insertCommand.Parameters.Add(new SqlParameter("@QuestionId", SqlDbType.Int, 4, "QuestionId"));
     insertCommand.Parameters.Add(new SqlParameter("@SelectionModeId", SqlDbType.Int, 4, "SelectionModeId"));
     insertCommand.Parameters.Add(new SqlParameter("@LayoutModeId", SqlDbType.Int, 4, "LayoutModeId"));
     insertCommand.Parameters.Add(new SqlParameter("@ColumnsNumber", SqlDbType.Int, 4, "ColumnsNumber"));
     insertCommand.Parameters.Add(new SqlParameter("@QuestionText", SqlDbType.NVarChar, 0xfa0, "QuestionText"));
     insertCommand.Parameters.Add(new SqlParameter("@QuestionPipeAlias", SqlDbType.NVarChar, 0xff, "QuestionPipeAlias"));
     insertCommand.Parameters.Add(new SqlParameter("@MinSelectionRequired", SqlDbType.Int, 4, "MinSelectionRequired"));
     insertCommand.Parameters.Add(new SqlParameter("@MaxSelectionAllowed", SqlDbType.Int, 4, "MaxSelectionAllowed"));
     insertCommand.Parameters.Add(new SqlParameter("@RandomizeAnswers", SqlDbType.Bit, 1, "RandomizeAnswers"));
     insertCommand.Parameters.Add(new SqlParameter("@RatingEnabled", SqlDbType.Bit, 1, "RatingEnabled"));
     insertCommand.Parameters.Add(new SqlParameter("@QuestionGroupId", SqlDbType.Int, 4, "QuestionGroupId"));
     insertCommand.Parameters.Add(new SqlParameter("@ShowHelpText", SqlDbType.Bit, 1, "ShowHelpText"));
     insertCommand.Parameters.Add(new SqlParameter("@HelpText", SqlDbType.NVarChar, 4000, "HelpText"));
     insertCommand.Parameters.Add(new SqlParameter("@Alias", SqlDbType.NVarChar, 255, "Alias"));
     insertCommand.Parameters.Add(new SqlParameter("@QuestionIdText", SqlDbType.NVarChar, 255, "QuestionIdText"));
     DbConnection.db.UpdateDataSet(updatedQuestion, "Questions", insertCommand, new SqlCommand(), insertCommand, UpdateBehavior.Transactional);
 }
 public static QuestionItem Create(QuestionData.QuestionsRow question, string languageCode, string parentControlUniqueID, 
     int questionRandomSeed, VoterAnswersData.VotersAnswersDataTable voterAnswersState, 
     bool enableAnswerDefaults,bool isDesignMode=false)
 {
     QuestionItem item;
     if ((question.TypeAssembly.Length == 0) || (question.TypeAssembly == null))
     {
         throw new ApplicationException("Could not create an instance because the question data has no assembly type specified");
     }
     try
     {
         item = (QuestionItem) Assembly.Load(question.TypeAssembly).CreateInstance(question.TypeNameSpace);
     }
     catch (InvalidCastException)
     {
         throw new InvalidCastException("Concrete type " + question.TypeNameSpace + " is not a child of the questionitem abstract class");
     }
     catch (NullReferenceException)
     {
         throw new InvalidCastException("specfied type " + question.TypeNameSpace + " could not be found in the specifed assembly " + question.TypeAssembly);
     }
     item.ID = "Question" + question.QuestionId.ToString();
     item.QuestionId = question.QuestionId;
     item.Text = new PipeManager().PipeValuesInText(question.QuestionId, question.QuestionText+
        ( (question.ShowHelpText && !isDesignMode )?(
         question.IsHelpTextNull()?string.Empty: HelpTextInSmallFont(question.HelpText)):string.Empty)//JJSurveyBoxChange
         , voterAnswersState, languageCode) ;
     item.LanguageCode = languageCode;
     item.QuestionId_Text = question.QuestionIdText;
     item.HelpText = question.HelpText;
     SectionQuestion question2 = item as SectionQuestion;
     if ((question2 != null) && (question.RepeatableSectionModeId != 0))
     {
         question2.RepeatMode = (RepeatableSectionMode) question.RepeatableSectionModeId;
         question2.MaxSections = question.MaxSections;
         question2.GridAnswers = new Questions().GetQuestionSectionGridAnswers(question.QuestionId);
         if ((question.AddSectionLinkText != null) && (question.AddSectionLinkText.Length > 0))
         {
             question2.AddSectionLinkText = question.AddSectionLinkText;
         }
         if ((question.DeleteSectionLinkText != null) && (question.DeleteSectionLinkText.Length > 0))
         {
             question2.DeleteSectionLinkText = question.DeleteSectionLinkText;
         }
         if ((question.EditSectionLinkText != null) && (question.EditSectionLinkText.Length > 0))
         {
             question2.EditSectionLinkText = question.EditSectionLinkText;
         }
         if ((question.UpdateSectionLinkText != null) && (question.UpdateSectionLinkText.Length > 0))
         {
             question2.UpdateSectionLinkText = question.UpdateSectionLinkText;
         }
     }
     SingleQuestion question3 = item as SingleQuestion;
     if (question3 != null)
     {
       
         question3.VoterAnswersState = voterAnswersState;
         question3.EnableAnswersDefault = enableAnswerDefaults;
         question3.MinSelectionRequired = question.MinSelectionRequired;
         question3.MaxSelectionAllowed = question.MaxSelectionAllowed;
         question3.ColumnsNumber = question.ColumnsNumber;
         question3.LayoutMode = question.IsLayoutModeIdNull() ? QuestionLayoutMode.Vertical : ((QuestionLayoutMode) question.LayoutModeId);
         if (question.RandomizeAnswers)
         {
             question3.DataSource = new Answers().GetRandomAnswers(question.QuestionId, questionRandomSeed, languageCode);
             return question3;
         }
         question3.DataSource = new Answers().GetAnswers(question.QuestionId, languageCode);
         return question3;
     }
     MatrixQuestion question4 = item as MatrixQuestion;
     if (question4 != null)
     {
         question4.VoterAnswersState = voterAnswersState;
         question4.EnableAnswersDefault = enableAnswerDefaults;
         question4.MinSelectionRequired = question.MinSelectionRequired;
         question4.MaxSelectionAllowed = question.MaxSelectionAllowed;
         question4.DataSource = new Questions().GetMatrixChildQuestions(question.QuestionId, languageCode);
         return question4;
     }
     return item;
 }
 /// <summary>
 /// Creates a new question entity with all
 /// required default values 
 /// </summary>
 /// <returns></returns>
 private QuestionData GetDefaultQuestion()
 {
     QuestionData data = new QuestionData();
     QuestionData.QuestionsRow row = data.Questions.NewQuestionsRow();
     row.ColumnsNumber = 0;
     row.MinSelectionRequired = 0;
     row.MaxSelectionAllowed = 0;
     row.RandomizeAnswers = false;
     row.RatingEnabled = false;
     row.QuestionPipeAlias = null;
     data.Questions.AddQuestionsRow(row);
     return data;
 }