Beispiel #1
0
        private void cmdLoadQuestionnaire_Click(object sender, EventArgs e)
        {
            fLoadQuestionnaire loadForm = new fLoadQuestionnaire(Teacher);

            loadForm.ShowDialog();
            if (loadForm.ValidatedData)
            {
                QuestionnaireSession = loadForm.QuestionnaireSession;
                ShowQuestionnaireData();
            }
        }
 private void cmdConfirm_Click(object sender, EventArgs e)
 {
     if (ValidatedData = dblwQuestionnaireSessions.SelectedItems.Count > 0)
     {
         QuestionnaireSession = (QuestionnaireSession)dblwQuestionnaireSessions.SelectedItems[0].Tag;
         Close();
     }
     else
     {
         MessageBox.Show("Seleziona un questionario precedente prima di procedere.", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        public fCurrentQuestionnaireSession(QuestionnaireSession qSession, Teacher teacher)
        {
            InitializeComponent();
            ControlsUtilities.ApplyAppIcon(this);
            Text += teacher.FullName;

            ElapsedTime          = TimeSpan.FromSeconds(0);
            QuestionnaireSession = qSession;
            Teacher         = teacher;
            Submissions     = new BindingList <QuestionnaireSubmission>();
            IsActiveSession = true;

            dgwSubmissions.DataSource = Submissions;

            Watcher = new FileSystemWatcher();
            Watcher.SynchronizingObject = this;
            Watcher.Path                = Path.Combine(AppConfiguration.questionnaireSessionsFolderPath, QuestionnaireSession.FilesystemDirectoryName);
            Watcher.NotifyFilter        = NotifyFilters.LastWrite;
            Watcher.Filter              = "*.*";
            Watcher.Changed            += new FileSystemEventHandler(FileAddedHandler);
            Watcher.EnableRaisingEvents = true;
        }
Beispiel #4
0
        private async Task <bool> TryParseQuestionnaireSessionDataAsync()
        {
            QuestionnaireOptions options = new QuestionnaireOptions();

            options.QuestionsGenerationMethod = (QElementGenerationMethod)cboQuestionsGenerationMethod.SelectedItem;
            int    answersPerQuestion = 0;
            double correctAnswerScore = 0;
            double emptyAnswerScore   = 0;
            double maxmiumGrade       = 0;
            double minimumGrade       = 0;
            int    questionsNumber    = 0;
            double wrongAnswerScore   = 0;

            Topic topic = (Topic)cboTopic.SelectedItem;

            Questionnaire questionnaire = new Questionnaire(topic, options);

            if (options.QuestionsGenerationMethod != QElementGenerationMethod.RANDOM)
            {
                if (dblswQuestions.SelectedItems.Count > 0)
                {
                    foreach (ListViewItem item in dblswQuestions.Items)
                    {
                        questionnaire.Questions.Add((Question)item.Tag);
                    }
                }
                else
                {
                    return(false);
                }
            }

            bool notNull = Helpers.IsValuedString(txtAnswersPerQuestion.Text) &&
                           Helpers.IsValuedString(txtCorrectAnswerScore.Text) &&
                           Helpers.IsValuedString(txtEmptyAnswerScore.Text) &&
                           Helpers.IsValuedString(txtMaximumGrade.Text) &&
                           Helpers.IsValuedString(txtMinimumGrade.Text) &&
                           Helpers.IsValuedString(txtQuestionsNumber.Text) &&
                           Helpers.IsValuedString(txtWrongAnswerScore.Text) &&
                           Helpers.IsValuedString(lblSessionDescription.Text);

            if (notNull)
            {
                bool validNumbers = int.TryParse(txtAnswersPerQuestion.Text, out answersPerQuestion) &&
                                    double.TryParse(txtCorrectAnswerScore.Text, out correctAnswerScore) &&
                                    double.TryParse(txtEmptyAnswerScore.Text, out emptyAnswerScore) &&
                                    double.TryParse(txtMaximumGrade.Text, out maxmiumGrade) &&
                                    double.TryParse(txtMinimumGrade.Text, out minimumGrade) &&
                                    int.TryParse(txtQuestionsNumber.Text, out questionsNumber) &&
                                    double.TryParse(txtWrongAnswerScore.Text, out wrongAnswerScore);

                if (validNumbers)
                {
                    bool validSigns = answersPerQuestion > 0 &&
                                      correctAnswerScore > 0 &&
                                      emptyAnswerScore <= 0 &&
                                      maxmiumGrade >= 0 &&
                                      questionsNumber > 0 &&
                                      wrongAnswerScore < 0;

                    if (validSigns)
                    {
                        List <Student> involvedStudents = await Class.FromData(cboSchoolYear.Text, cboCourse.Text).GetStudentsAsync();

                        options.MaximumGrade       = maxmiumGrade;
                        options.AnswersPerQuestion = answersPerQuestion;
                        options.CorrectAnswerScore = correctAnswerScore;
                        /**/
                        options.WrongAnswerScore = wrongAnswerScore;
                        /**/
                        options.EmptyAnswerScore = emptyAnswerScore;
                        options.MinimumGrade     = minimumGrade;
                        options.QuestionsNumber  = questionsNumber;

                        bool enoughAnswers   = questionnaire.Questions.Where(x => x.Answers.Count < answersPerQuestion).Count() == 0;
                        bool enoughQuestions = options.QuestionsGenerationMethod != QElementGenerationMethod.RANDOM ? questionnaire.Questions.Count >= options.QuestionsNumber
                            : (await questionnaire.Topic.GetQuestionsAsync()).Count >= options.QuestionsNumber;
                        bool enoughStudents     = involvedStudents.Count > 0;
                        bool validConfiguration = enoughAnswers && enoughQuestions && enoughStudents;

                        if (validConfiguration)
                        {
                            QuestionnaireSession = new QuestionnaireSession(questionnaire, involvedStudents, lblSessionDescription.Text);
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }