public async Task <IActionResult> Edit(int id, [Bind("QuestionRuleId,SubjectId,ScorePerQuestion,AnswerAllQuestion,TotalQuestion,UseUnlimitedTime,MaximumTime,StartDate,EndDate,NoOfAllowedAttempt,NoOfAttemptPerDay")] QuestionRule questionRule)
        {
            if (id != questionRule.QuestionRuleId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(questionRule);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!QuestionRuleExists(questionRule.QuestionRuleId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["SubjectId"] = new SelectList(_context.Subjects, "SubjectId", "SubjectId", questionRule.SubjectId);
            return(View(questionRule));
        }
Exemple #2
0
        public ActionResult DeleteConfirmed(int id)
        {
            QuestionRule questionRule = db.QuestionRules.Find(id);

            db.QuestionRules.Remove(questionRule);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #3
0
        public override object Visit(QuestionRule expression, TypeAnalyzerEnvironment environment)
        {
            var questionType = this.qlQuestionMappings[expression.Name];

            this.CheckWidgetTyping(expression.Widget, questionType);

            return(base.Visit(expression, environment));
        }
Exemple #4
0
        public ActionResult RuleParameters([Bind(Include = "QuestionID,RuleParam")] QuestionRule rules)
        {
            db.QuestionRules.Add(rules);
            db.SaveChanges();

            Session.Remove("QuestionID");

            return(RedirectToAction("Create"));
        }
Exemple #5
0
 public ActionResult Edit(QuestionRule questionRule)
 {
     if (ModelState.IsValid)
     {
         db.Entry(questionRule).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index", new { questionId = questionRule.QuestionId }));
     }
     ViewBag.QuestionId = new SelectList(db.Questions.Where(x => x.QuestionId == questionRule.QuestionId), "QuestionId", "Text", questionRule.QuestionId);
     return(View(questionRule));
 }
 private StyleSheet GetStyleSheetWrapper(QuestionRule rule)
 {
     return(new StyleSheet("SampleStyleShett", new List <Page>
     {
         new Page("SamplePage", new List <Section>
         {
             new Section(new StringLiteral("Sample Section"), null, new List <QuestionRule> {
                 rule
             })
         })
     }));
 }
Exemple #7
0
        public ActionResult Create(QuestionRule questionRule)
        {
            if (ModelState.IsValid)
            {
                db.QuestionRules.Add(questionRule);
                db.SaveChanges();
                return(RedirectToAction("Index", new { questionId = questionRule.QuestionId }));
            }

            ViewBag.QuestionId = new SelectList(db.Questions, "QuestionId", "Text", questionRule.QuestionId);
            return(View(questionRule));
        }
        public async Task <IActionResult> Create([Bind("QuestionRuleId,SubjectId,ScorePerQuestion,AnswerAllQuestion,TotalQuestion,UseUnlimitedTime,MaximumTime,StartDate,EndDate,NoOfAllowedAttempt,NoOfAttemptPerDay")] QuestionRule questionRule)
        {
            if (ModelState.IsValid)
            {
                _context.Add(questionRule);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["SubjectId"] = new SelectList(_context.Subjects, "SubjectId", "SubjectId", questionRule.SubjectId);
            return(View(questionRule));
        }
Exemple #9
0
        public override object Visit(QuestionRule rule, IFormAnalyzerEnvironment environment)
        {
            if (environment.SectionNames.Contains(rule.Identifier))
            {
                this.Report.Add(new DuplicateQuestionLabelMessage(rule));
            }
            else
            {
                environment.SectionNames.Add(rule.Identifier);
            }

            return(base.Visit(rule, environment));
        }
        public override object Visit(QuestionRule rule, IQuestionUsageEnviorment environment)
        {
            if (environment.HasQuestion(rule.Identifier))
            {
                environment.MarkQuestionAsUsed(rule.Identifier);
            }
            else
            {
                this.Report.Add(new UndeclaredQuestionMessage(rule.Identifier));
            }

            return(base.Visit(rule, environment));
        }
Exemple #11
0
        public override object Visit(QuestionRule expression, FormAnalyzerEnvironment environment)
        {
            if (environment.SectionNames.Contains(expression.Name))
            {
                this.Report.Add(new DuplicateQuestionLabelMessage(expression));
            }
            else
            {
                environment.SectionNames.Add(expression.Name);
            }

            return(base.Visit(expression, environment));
        }
Exemple #12
0
        public override object Visit(QuestionRule rule, ITypeAnalyzerEnvironment environment)
        {
            if (!this.qlQuestionMappings.ContainsKey(rule.Identifier))
            {
                this.Report.Add(new UndeclaredQuestionMessage(rule.Identifier));
                return(base.Visit(rule, environment));
            }

            var questionType = this.qlQuestionMappings[rule.Identifier];

            this.CheckWidgetTyping(rule.Widget, questionType, environment);

            return(base.Visit(rule, environment));
        }
Exemple #13
0
        // GET: QuestionRule/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            QuestionRule questionRule = db.QuestionRules.Find(id);

            if (questionRule == null)
            {
                return(HttpNotFound());
            }
            return(View(questionRule));
        }
Exemple #14
0
        // GET: QuestionRule/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            QuestionRule questionRule = db.QuestionRules.Find(id);

            if (questionRule == null)
            {
                return(HttpNotFound());
            }
            ViewBag.QuestionId = new SelectList(db.Questions.Where(x => x.QuestionId == questionRule.QuestionId), "QuestionId", "Text", questionRule.QuestionId);
            return(View(questionRule));
        }
Exemple #15
0
        public void Analyze_ShouldDetectErrorIfInvalidQuestionRuleIsGiven(
            Widget widget,
            IList <ValueType> invalidTypes)
        {
            const string sampleQuestionName = "SampleQuestion";

            var questionRule = new QuestionRule(sampleQuestionName, widget, null);

            foreach (var invalidType in invalidTypes)
            {
                var typeAnamyzer = new TypeAnalyzer();

                var sampleQuestionMapings = new Dictionary <string, ValueType>
                {
                    { sampleQuestionName, invalidType }
                };

                typeAnamyzer.Analyze(this.GetStyleSheetWrapper(questionRule), sampleQuestionMapings);

                Assert.NotEmpty(typeAnamyzer.Report.AllMessages);
                Assert.IsType <InvalidWidgetTypeMessage>(typeAnamyzer.Report.Errors.FirstOrDefault());
                Assert.Equal(1, typeAnamyzer.Report.AllMessages.Count());
            }
        }
 public QuestionRule(QuestionRule rule)
     : base(rule)
 {
     AllowedValues = rule.AllowedValues;
     Questions = rule.Questions;
 }
        public Questionnaire GetStoreModel()
        {
            // create store model questionnaire
            var questionnaire = new Questionnaire
            {
                Category      = _questionnairePostViewModel.Category,
                Version       = _questionnairePostViewModel.Version,
                Questions     = new Collection <Question>(),
                QuestionRules = new Collection <QuestionRule>()
            };

            // create stopre model questions and questionrules
            foreach (var viewModelQuestion in _questionnairePostViewModel.Questions)
            {
                var question = new Question
                {
                    QuestionTemplate = new Collection <Template>(),
                    Name             = viewModelQuestion.Key,
                    Type             = viewModelQuestion.Type,
                    Version          = viewModelQuestion.Version
                };

                var questionRule = new QuestionRule
                {
                    ExpressionModel = new Collection <ExpressionModel>(),
                    Name            = viewModelQuestion.Key,
                    HideQuestion    = viewModelQuestion.HideExpression
                };

                if (viewModelQuestion.ExpressionProperties != null)
                {
                    foreach (var(key, value) in viewModelQuestion.ExpressionProperties)
                    {
                        var expressionModel = new ExpressionModel
                        {
                            Key        = key,
                            Expression = value
                        };
                        questionRule.ExpressionModel.Add(expressionModel);
                    }
                }

                var globalTemplate = viewModelQuestion.TemplateOptions;

                foreach (var translation in globalTemplate.Translations)
                {
                    // check if question is required
                    questionRule.Required = globalTemplate.Required;

                    // Add all templateswith different languages to the template
                    var questionTemplate = new Template
                    {
                        Description = translation.Description,
                        InputType   = globalTemplate.Type,
                        Label       = translation.Label,
                        Language    = translation.Language,
                        Placeholder = translation.Placeholder,
                        Validations = new Collection <Validation>()
                    };

                    if (translation.Validation.Messages != null)
                    {
                        foreach (var(key, value) in translation.Validation.Messages)
                        {
                            var expressionModel = new Validation()
                            {
                                Type    = key,
                                Message = value
                            };
                            questionTemplate.Validations.Add(expressionModel);
                        }
                    }

                    if (translation.MultipleChoiceOptions != null)
                    {
                        questionTemplate.SelectAllOption = translation.SelectAllOption;
                        questionTemplate.AllowedToSelectMultipleOptions = globalTemplate.Multiple;
                        questionTemplate.Options = new Collection <MultipleChoiceOption>();

                        foreach (var option in translation.MultipleChoiceOptions)
                        {
                            var multipleChoiceOption = new MultipleChoiceOption
                            {
                                Value = option.Value,
                                Label = option.Label
                            };
                            questionTemplate.Options.Add(multipleChoiceOption);
                        }

                        question.QuestionTemplate.Add(questionTemplate);
                    }
                    else
                    {
                        question.QuestionTemplate.Add(questionTemplate);
                    }
                }

                questionnaire.Questions.Add(question);
                questionnaire.QuestionRules.Add(questionRule);
            }

            return(questionnaire);
        }
 public DuplicateQuestionLabelMessage(QuestionRule question)
     : base($"Duplicate question label \"{question.Identifier}\" at: {question.SourceCode}")
 {
 }
Exemple #19
0
 public virtual TResult Visit(QuestionRule expression, TEnvironment environment)
 {
     expression.Properties?.ForEach(x => x.Accept(this, environment));
     expression.Widget?.Accept(this, environment);
     return(default(TResult));
 }