public JsonResult Add(QuestionViewModel questionInput) { if (ModelState.IsValid) { var question = AutoMapperConfig.Configuration.CreateMapper().Map<QuestionViewModel, Question>(questionInput); if (question.AuthorId != null) { question.Author = this.usersService.GetUserById(question.AuthorId); } question.Receiver = this.usersService.GetUserById(question.ReceiverId); var questionAdded = this.questionsService.Add(question); //Checking if the question is added successfully if (questionAdded.IsAnswered == false) { return Json(new { isSuccessfullyAdded = true }); } return Json(new { isSuccessfullyAdded = false }); } else { return Json(new { isSuccessfullyAdded = false }); } }
public static QuestionViewModel Map(Question question) { QuestionViewModel viewModel = new QuestionViewModel(); viewModel.Id = question.Id; viewModel.Title = question.Title; return viewModel; }
public ActionResult EditQuestion(QuestionViewModel model, FormCollection form) { if (model != null && ModelState.IsValid) { var answers = form["item.Content"].ToString().Split(','); if (model.IsDependsOn) { var selected = form["Questions"].ToString().Split(','); if (answers.Length != selected.Length) { return this.PartialView("_EditQuestionPartial", model); } for (int i = 0; i < answers.Length; i++) { var answer = questions.SelectMany(q => q.PossibleAnswers).FirstOrDefault(a => a.Content == answers[i]); var question = questions.Where(q => q.Content == selected[i]).FirstOrDefault(); question.ParentContent = model.Content + "|" + answer.Content; } } else { var selected = form["Questions"].ToString(); var question = questions.FirstOrDefault(q => q.Content == selected); question.ParentContent = model.Content; } } return this.RedirectToAction("Create"); }
public void Given_A_Bespoke_Question_Is_Being_Saved_Then_Returns_Status_OK() { QuestionViewModel model = new QuestionViewModel() { Id = Guid.NewGuid(), Text = "Is there life on Mars?", CategoryId = Guid.Parse("3DEE8018-575E-4609-A5AC-C1DE2475C2DB"), // Employees }; model.PossibleResponses = new List<QuestionResponseViewModel>(); model.PossibleResponses.Add( new QuestionResponseViewModel() { Id = Guid.NewGuid(), ResponseType = "Neutral", Title="Improvement Required" }); model.PossibleResponses.Add( new QuestionResponseViewModel() { Id = Guid.NewGuid(), ResponseType = "Positive", Title = "Acceptable" }); model.PossibleResponses.Add( new QuestionResponseViewModel() { Id = Guid.NewGuid(), ResponseType = "Negative", Title = "Unacceptable" }); model.Category = new CategoryViewModel() {Id = model.CategoryId}; Guid checklistID = Guid.Parse("EDAD1451-EF0F-2D38-16BF-BBFF6920C192"); ResourceUrl = string.Format("{0}{1}?newQuestionId={2}&checklistId={3}", ApiBaseUrl, "question", model.Id.ToString(), checklistID); // Given var client = new RestClient(Url.AbsoluteUri); var request = new RestRequest(ResourceUrl); request.AddHeader("Content-Type", "application/json"); request.RequestFormat = DataFormat.Json; request.Method = Method.POST; request.AddBody(model); // When var response = client.Execute(request); // Then Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
public ActionResult CreateTeacher() { var model = new QuestionViewModel() { IsAboutTeacher = true }; return View("Create", model); }
public ActionResult CreateTeacher(QuestionViewModel viewModel) { if (!ModelState.IsValid) return View(viewModel); var model = DecomposeQuestionViewModel(viewModel); Site.QuestionManager.Create(model); return RedirectToAction("TeacherList"); }
public static Question Map(QuestionViewModel viewModel) { var model = mapper.Map(viewModel); model.UserId = viewModel.AuthorId; model.Disciplines = viewModel.Disciplines.Select( DisciplineMapper.Map).ToList(); return model; }
public ActionResult AddNew(QuestionViewModel model) { if (model != null && ModelState.IsValid) { model.PossibleAnswers.RemoveAll(item => item.Content == null); questions.Add(model); } return this.RedirectToAction("Create"); }
public ActionResult Index(QuestionViewModel model) { //save result QuizRepository repo = new QuizRepository(); DAL.QuizResponse response = new QuizResponse(); response.AnswerId = model.SelectedAnswer; response.QuestionId = model.Id; repo.SaveAnswer(response); return RedirectToAction("Thanks"); }
// // GET: /Home/ public ActionResult Index() { int quizId = 1; QuizRepository repo = new QuizRepository(); var question = repo.GetQuestion(quizId); QuestionViewModel result = new QuestionViewModel(); result.Id = question.Id; result.QuestionText = question.QuestionText; result.Answers = new List<Models.Answer>(); foreach (var answer in question.Answers) { result.Answers.Add(new Models.Answer { AnswerText = answer.Answer1, Id = answer.AnswerId }); } return View(result); }
public static QuestionViewModel Map(this Question question) { var questionViewModel = new QuestionViewModel() { Id = question.Id, Text = question.Title, CategoryId = question.Category.Id , Category = new CategoryViewModel() {Id = question.Category.Id, Title = question.Category.Title, OrderNumber = question.Category.OrderNumber, TabTitle = question.Category.TabTitle}, Mandatory = question.Mandatory, SpecificToClientId = question.SpecificToClientId, OrderNumber = question.OrderNumber ,Deleted = question.Deleted, CustomQuestion = question.CustomQuestion }; if (question.PossibleResponses != null) { questionViewModel.PossibleResponses = question.PossibleResponses .Select( x => new QuestionResponseViewModel() { SupportingEvidence = x.SupportingEvidence, ActionRequired = x.ActionRequired, ResponseType = x.ResponseType, GuidanceNotes = x.GuidanceNotes, Title = x.Title, Id = x.Id, ReportLetterStatement = x.ReportLetterStatement, ReportLetterStatementCategory = x.ReportLetterStatementCategory != null ? x.ReportLetterStatementCategory.Name : string.Empty }).Distinct(new QuestionResponseViewModel.PossibleResponsesComparer()).ToList(); } return questionViewModel; }
public async Task <IActionResult> PostValidateCustomBundle(CustomBundleViewModel cbvm, QuestionViewModel qvm) { try { var products = cbvm.Products; int accountCount = 0; bool checkIfAccPresent = false; bool isConflictResult = false; List <string> errorMessages = new List <string>(); foreach (var p in products) { isConflictResult = false; switch (p.Name) { case "Current Account": if (qvm.Income <= 0 || qvm.Age <= 17) { isConflictResult = true; } accountCount++; break; case "Current Account Plus": if (qvm.Income <= 40000 || qvm.Age <= 17) { isConflictResult = true; } accountCount++; break; case "Junior Saver Account": if (qvm.Age >= 18) { isConflictResult = true; } accountCount++; break; case "Student Account": if (!qvm.IsStudent || qvm.Age <= 17) { isConflictResult = true; } accountCount++; break; case "Debit Card": checkIfAccPresent = true; break; case "Credit Card": if (qvm.Income <= 12000 || qvm.Age <= 17) { isConflictResult = true; } break; case "Gold Credit Card": if (qvm.Income <= 40000 || qvm.Age <= 17) { isConflictResult = true; } break; } if (isConflictResult) { errorMessages.Add(String.Format("{0} product is not valid for selected answers", p.Name)); } } if (errorMessages.Count != 0) { return(new ConflictObjectResult(errorMessages)); } if (accountCount > 1) { return(new ConflictObjectResult("Too many accounts: only one account can be in a bundle")); } else if (checkIfAccPresent && accountCount == 0) { return(new ConflictObjectResult("Debit Card cannot be added without having an account")); } return(new OkResult()); } catch { return(new BadRequestResult()); } }
private bool IsQuestionReady(QuestionViewModel q) { int questionItems = 0; foreach(QuestionItem item in q.Items) { if (item.ItemType != DisplayType.Text) questionItems++; } if (questionItems == 0) return false; IEnumerable<AnswerViewModel> answers = answerService.GetAllAnswers(q.ToBllQuestion()).Select(entity => entity.ToMvcAnswer()); foreach (AnswerViewModel a in answers) if (answers.Where(b => a!=b).Any(b => a.Structure == b.Structure)) { return false; } return true; }
public ActionResult NewQuestion(QuestionViewModel qvm) { qvm = questionService.GetById(qvm.Id).ToMvcQuestion(); var post = Request.Form; for (int i = 0; i<qvm.Items.Count; i++) { qvm.Items[i].Value = post[i.ToString()]; } if (!ModelState.IsValid) { ModelState.AddModelError("", "Invalid data"); return View(qvm); } //!user, rights questionService.UpdateQuestion(qvm.ToBllQuestion()); return View(qvm); }
public ActionResult EditQuestion(QuestionViewModel qvm) { qvm = questionService.GetById(qvm.Id).ToMvcQuestion(); var post = Request.Form; for (int i = 0; i < qvm.Items.Count; i++) { qvm.Items[i].Value = post[i.ToString()]; } if (!ModelState.IsValid) { ModelState.AddModelError("", "Invalid data"); return View(qvm); } //!user, rights ViewBag.Answers = answerService.GetAllAnswers(qvm.ToBllQuestion()).Select(entity => entity.ToMvcAnswer()); questionService.UpdateQuestion(qvm.ToBllQuestion()); return View(qvm); }
private void NextQuestion() { SaveQuestion(); if (_enumerator.MoveNext()) { QuestionIndex++; CurrentQuestion = new QuestionViewModel(_enumerator.Current.Question); _questionInstance = CurrentQuestion.Poco; _questionInstance.QuizInstanceId = _quizInstance.QuizInstanceId; SelectedAnswer = null; return; } StopQuiz(); }
public ActionResult NewQuestion(int? testId) { if (testId == null) return RedirectToAction("Index"); TestEntity e = testService.GetById(testId.Value); if (e == null) return RedirectToAction("Index"); e.QuestionCount++; testService.UpdateTest(e); ViewBag.Test = e; QuestionViewModel qvm = new QuestionViewModel() { TestId = e.Id, QuestionNumber = 0 }; questionService.CreateQuestion(qvm.ToBllQuestion()); qvm = questionService.GetAllTestQuestions(e).Select(entity => entity.ToMvcQuestion()).OrderByDescending(model => model.QuestionNumber).First(); return RedirectToAction("EditQuestion", new {questionId = qvm.Id}); }
public QuestionResult(QuestionViewModel viewModel) { _questionViewModel = viewModel; }
private void AddQuestion() { if (IsNewQuestion) return; IsNewQuestion = true; SelectedQuestion = new QuestionViewModel(); }
public void QuestionViewModel_AddQuestion_CannotAddEmptyText() { var mock = new Mock<IRepository<Question>>(); var mockCat = new Mock<IRepository<Category>>(); var q = new Question() { Category = new Category() { Name = "" } }; q.Answers = new List<Answer>(); var Questionvm = new QuestionViewModel(q, mock.Object, mockCat.Object, mockNS.Object); Assert.AreEqual(false, Questionvm.CanAddQuestion()); }
// GET: Questions/Create //public ActionResult CreateQuestion() //{ // UpdateList(); // ViewBag.QuestionTypeId = new SelectList(listQuestionType, "Id", "Type"); // ViewBag.SurveyId = new SelectList(listSurvey, "Id", "Title"); // return View(); //} public ActionResult CreateQuestion(Guid QuestionTypeId, string Content, int?Count, string[] dynamicField) { QuestionViewModel questionViewModel = new QuestionViewModel(); if (QuestionTypeId != null && Content != null && Content != "") { questionViewModel.Id = Guid.NewGuid(); questionViewModel.QuestionTypeId = QuestionTypeId; questionViewModel.Content = Content; questionViewModel.Number = AccountController.Count(); questionViewModel.SurveyId = AccountController.GetSurveyId(); questionViewModel.Survey = AccountController.GetSurvey(); questionViewModel.TimeLength = TimeSpan.FromSeconds(3); if (Count != null) { if (Count < 2) { return(RedirectToAction("Create", "Surveys", new { error = "Scale should more than two" })); } questionViewModel.IsScale = true; questionViewModel.Count = (int)Count; questionViewModel.AddQuestion(questionViewModel); } else if (dynamicField.Count() > 0 && dynamicField[0] != "") { questionViewModel.AddQuestion(questionViewModel); List <QuestionAnswerViewModel> answer = new List <QuestionAnswerViewModel>(); QuestionAnswerViewModel q = new QuestionAnswerViewModel(); int i = 1; foreach (var item in dynamicField) { if (item != "" && item != null) { q = new QuestionAnswerViewModel(); q.Id = Guid.NewGuid(); q.QuestionId = questionViewModel.Id; q.Answer = item; q.OrderNumber = i; answer.Add(q); i++; } else { return(RedirectToAction("Create", "Surveys", new { error = "Answer can't be empty" })); } } foreach (var item in answer) { item.AddQuestionAnswer(item); } } else { questionViewModel.IsFreeText = true; questionViewModel.AddQuestion(questionViewModel); } TemporaryQuestion(); UpdateList(); ViewBag.QuestionTypeId = new SelectList(listQuestionType, "Id", "Type", questionViewModel.QuestionTypeId); ViewBag.SurveyId = new SelectList(listSurvey, "Id", "Title", questionViewModel.SurveyId); return(RedirectToAction("Create", "Surveys")); } UpdateList(); ViewBag.QuestionTypeId = new SelectList(listQuestionType, "Id", "Type", questionViewModel.QuestionTypeId); ViewBag.SurveyId = new SelectList(listSurvey, "Id", "Title", questionViewModel.SurveyId); return(RedirectToAction("Create", "Surveys", new { error = "Question can't be empty" })); }
void OnAddQuestion() { SelectedQuestion = new QuestionViewModel(new Question() { Answers = new List<Answer>(), Category = new Category() }, _questionRepo, _categoryRepo, _notificationService); AllQuestions.Add(SelectedQuestion); RaisePropertyChanged("SelectedQuestion"); RaisePropertyChanged("CanEditQuestion"); RaisePropertyChanged("CanSaveQuestion"); }
public ActionResult Create() { var model = new QuestionViewModel(); return View(model); }
private Question DecomposeQuestionViewModel(QuestionViewModel model) { var question = Map<QuestionViewModel, Question>(model); if (model.LeftLimit != null && model.LeftLimit.ImageFile != null && model.LeftLimit.ImageFile.ContentLength > 0) question.LeftLimit.Image = SaveImage(model.LeftLimit.ImageFile, model.Id + 'l', "question"); if (model.RightLimit != null && model.RightLimit.ImageFile != null && model.RightLimit.ImageFile.ContentLength > 0) question.RightLimit.Image = SaveImage(model.RightLimit.ImageFile, model.Id + 'r', "question"); return question; }
public EditorViewModel(IRepository<Quiz> quizRepo, IRepository<Category> categoryRepo, IRepository<Question> questionRepo, INotificationService notificationService, IWindowService windowService) { _windowService = windowService; _notificationService = notificationService; _quizRepo = quizRepo; _questionRepo = questionRepo; _categoryRepo = categoryRepo; AllQuizes = new ObservableCollection<QuizViewModel>(); AllQuestions = new ObservableCollection<QuestionViewModel>(); AllCategories = new ObservableCollection<CategoryViewModel>(); notificationService.OnStartedLoading += NotificationService_OnLoadingChanged; notificationService.OnStoppedLoading += NotificationService_OnLoadingChanged; notificationService.OnNewDisplayMessage += NotificationService_OnNewDisplayMessage; notificationService.OnMessageReceived += NotificationService_OnMessageReceived; LoadingVisibility = Visibility.Hidden; NotificationVisibility = Visibility.Hidden; RemoveQuizCommand = new RelayCommand(OnRemoveQuiz, CanRemoveQuiz); AddQuizCommand = new RelayCommand(OnAddQuiz); RemoveQuestionCommand = new RelayCommand(OnRemoveQuestion, CanRemoveQuestion); AddQuestionCommand = new RelayCommand(OnAddQuestion); AddAnswerCommand = new RelayCommand(OnAddAnwer, CanAddAnswer); RemoveAnswerCommand = new RelayCommand(OnRemoveAnswer, CanRemoveAnswer); SaveQuestionCommand = new RelayCommand(OnSaveQuestion, CanSaveQuestion); CloseNotificationCommand = new RelayCommand(OnCloseNotification); Task.Run(() => { DispatcherHelper.CheckBeginInvokeOnUI(() => { LoadingVisibility = Visibility.Visible; }); var allQuizes = new List<QuizViewModel>(); var allQuestions = new List<QuestionViewModel>(); var allCategories = new List<CategoryViewModel>(); foreach (var quiz in _quizRepo.GetAllItems()) { allQuizes.Add(new QuizViewModel(quiz, _quizRepo, _questionRepo, _categoryRepo, notificationService)); } foreach (var question in _questionRepo.GetAllItems()) { allQuestions.Add(new QuestionViewModel(question, _questionRepo, _categoryRepo, _notificationService)); } foreach (var categorie in _categoryRepo.GetAllItems()) { allCategories.Add(new CategoryViewModel(categorie, _categoryRepo, _notificationService)); } DispatcherHelper.CheckBeginInvokeOnUI(() => { allQuizes.ForEach(q => AllQuizes.Add(q)); allQuestions.ForEach(q => AllQuestions.Add(q)); allCategories.ForEach(c => AllCategories.Add(c)); RaisePropertyChanged("AllQuizes"); RaisePropertyChanged("AllQuestions"); RaisePropertyChanged("AllCategories"); LoadingVisibility = Visibility.Hidden; }); }); SelectedQuiz = new QuizViewModel(new Quiz() { Questions = new List<QuizQuestion>() }, _quizRepo, _questionRepo, _categoryRepo, notificationService); SelectedQuestion = new QuestionViewModel(new Question() { Answers = new List<Answer>(), Category = new Category() }, _questionRepo, _categoryRepo, _notificationService); NewCategory = new CategoryViewModel(new Category(), _categoryRepo, _notificationService); //SelectedTabIndex = 1; }
private void SaveQuestion() { if (string.IsNullOrEmpty(SelectedQuestion.Text)) MessageBox.Show("Vul a.u.b. een tekst in."); else if (SelectedQuestion.CategoryId == 0) MessageBox.Show("Selecteer a.u.b. een categorie."); else if (IsNewQuestion) { var poco = _questionRepository.CreateQuestion(SelectedQuestion); SelectedQuestion = new QuestionViewModel(poco); Questions.Add(SelectedQuestion); IsNewQuestion = false; MessageBox.Show("Vraag toegevoegd."); } else if (SelectedQuestion != null) { _questionRepository.UpdateQuestion(SelectedQuestion); MessageBox.Show("Vraag aagepast."); } }
void OnRemoveQuestion() { if (_windowService.AskConfirmation("Wil je deze vraag echt verwijderen?", "EditorView")) { SelectedQuestion.RemoveQuestionCommand.Execute(null); AllQuestions.Remove(SelectedQuestion); foreach (var quiz in AllQuizes.AsQueryable().Where(q => q.Questions.Contains(SelectedQuestion))) { quiz.Questions.Remove(SelectedQuestion); } SelectedQuestion = new QuestionViewModel(new Question() { Text = "", Answers = new List<Answer>(), Category = new Category() }, _questionRepo, _categoryRepo, _notificationService); SelectedCategory = new CategoryViewModel(new Category(), _categoryRepo, _notificationService); RaisePropertyChanged("SelectedCategory"); RemoveQuestionCommand.RaiseCanExecuteChanged(); } }
public void Post(QuestionViewModel m) { throw new NotImplementedException(); }
public void QuestionViewModel_AddQuestion_CannotAddAllWrongAnswers() { var mock = new Mock<IRepository<Question>>(); var mockCat = new Mock<IRepository<Category>>(); var q = new Question() { Category = new Category() { Name = "" } }; q.Answers = new List<Answer>(); q.Answers.Add(new Answer() { IsCorrect = false }); q.Text = "asdasf"; var Questionvm = new QuestionViewModel(q, mock.Object, mockCat.Object, mockNS.Object); Assert.AreEqual(false, Questionvm.CanAddQuestion()); }
public ActionResult Edit(QuestionViewModel viewModel) { if (!ModelState.IsValid) return View("Create", viewModel); var model = DecomposeQuestionViewModel(viewModel); Site.QuestionManager.Update(model); if (viewModel.IsAboutTeacher) return RedirectToAction("TeacherList"); return RedirectToAction("List"); }
public void QuestionViewModel_AddQuestion_CannotAddTooManyAnswers() { var mock = new Mock<IRepository<Question>>(); var mockCat = new Mock<IRepository<Category>>(); var answers = new List<Answer>() { new Answer() { AnswerText = "Answer1", IsCorrect = true }, new Answer() { AnswerText = "Answer2", IsCorrect = false }, new Answer() { AnswerText = "Answer3", IsCorrect = true }, }; var q = new Question() { Category = new Category() { Name = "" } }; q.Answers = new List<Answer>(); q.Answers.Add(new Answer() { AnswerText = "Answer1", IsCorrect = true }); q.Answers.Add(new Answer() { AnswerText = "Answer2", IsCorrect = false }); q.Answers.Add(new Answer() { AnswerText = "Answer3", IsCorrect = true }); q.Text = "asdasf"; var list = new List<Question>(); list.Add(q); var w = new Question() { Category = new Category() { Name = "" } }; w.Text = "asdasdasf"; w.Answers = new List<Answer>(); w.Answers.Add(new Answer() { AnswerText = "Answer1", IsCorrect = true }); w.Answers.Add(new Answer() { AnswerText = "Answer2", IsCorrect = false }); w.Answers.Add(new Answer() { AnswerText = "Answer3", IsCorrect = false }); w.Answers.Add(new Answer() { AnswerText = "Answer3", IsCorrect = false }); w.Answers.Add(new Answer() { AnswerText = "Answer3", IsCorrect = false }); var Questionvm = new QuestionViewModel(w, mock.Object, mockCat.Object, mockNS.Object); mock.Setup(r => r.GetAllItems()).Returns(list); Assert.AreEqual(false, Questionvm.CanAddQuestion()); }
public void Setup() { _model = new QuestionViewModel(); }