public ActionResult Edit(int?id) { if (id == null) { return(BadRequest()); } int userId = User.Identity.GetUserId <int>(); if (!this.questionService.CanEdit(id.Value, userId) && !User.IsInRole(CommonConstants.ModeratorRole)) { return(new HttpUnauthorizedResult()); } QuestionFormViewModel model = new QuestionFormViewModel { Question = this.questionService.GetForm(id.Value), SubCategories = this.GetSubCategories() }; if (model.Question == null) { return(BadRequest()); } return(View(model)); }
public IActionResult Update(int id) { QuestionDto editedQuestion = _questionService.GetById(id); QuestionFormViewModel newEditedQuestion = new QuestionFormViewModel(editedQuestion); return(View("QuestionForm", newEditedQuestion)); }
public IActionResult Edit(int id) { var questionToEdit = _questionService.GetById(id); var questionViewModel = new QuestionFormViewModel(questionToEdit); return(View("QuestionForm", questionViewModel)); }
public void Save_ExistingQuestion_ShouldUpdateQuestionAndItsTopicsInDatabase() { var topic = _context.AddTestTopicToDatabase(); var existingQuestion = _context.AddTestQuestionToDatabase(); var title = existingQuestion.Title; var description = existingQuestion.Description; var question = new Question { Title = title + "?", Description = description + "-", Id = existingQuestion.Id, }; question.SetUserId(existingQuestion.AppUserId); var viewModel = new QuestionFormViewModel { Question = question, TopicIds = new[] { topic.Id } }; _controller.Save(viewModel); var questionInDb = _contextAfterAction.Questions.Include(q => q.Topics).SingleOrDefault(); Assert.That(questionInDb.Title, Is.EqualTo(title + "?")); Assert.That(questionInDb.Description, Is.EqualTo(description + "-")); Assert.That(questionInDb.Topics.Count, Is.EqualTo(1)); }
public ActionResult Create() { QuestionFormViewModel model = new QuestionFormViewModel { SubCategories = this.GetSubCategories() }; return(View(model)); }
public async Task <IActionResult> New() { var categories = await _context.Categories.ToListAsync(); QuestionFormViewModel viewModel = new QuestionFormViewModel() { Categories = categories }; return(View("Edit", viewModel)); }
public ActionResult SaveQuestionTopics(QuestionFormViewModel formViewModel) { var questionPosted = formViewModel.Question; var questionInDb = _unitOfWork.QuestionRepository.Single( q => q.Id == questionPosted.Id, nameof(Question.Topics)); UpdateQuestionTopics(formViewModel.TopicIds, questionInDb); _unitOfWork.Complete(); return(RedirectToAction("Detail", new { id = questionInDb.Id })); }
public ActionResult Edit(int?id, QuestionFormViewModel model) { if (!ModelState.IsValid) { model.SubCategories = this.GetSubCategories(); return(View(model)); } int userId = User.Identity.GetUserId <int>(); if (!this.questionService.CanEdit(id.Value, userId) && !User.IsInRole(CommonConstants.ModeratorRole)) { return(new HttpUnauthorizedResult()); } string oldTitle = this.questionService.GetTitle(id.Value); if (oldTitle == null) { return(BadRequest()); } string newTitle = model.Question.Title; if (this.questionService.TitleExists(newTitle) && newTitle != oldTitle) { model.SubCategories = this.GetSubCategories(); TempData.AddErrorMessage(string.Format(WebConstants.EntryExists, Question)); return(View(model)); } bool success = this.questionService.Edit( id.Value, newTitle, model.Question.Content, model.Question.Tags, model.SubCategoryId); if (!success) { return(BadRequest()); } TempData.AddSuccessMessage(string.Format( WebConstants.SuccessfullEntityOperation, Question, WebConstants.Edited)); return(RedirectToAction(nameof(Details), new { id })); }
public void Delete_WhenCalled_ShouldRemoveAnswerQuestionActivityFromDatabase() { var question = _context.AddTestQuestionToDatabase(); var viewModel = new QuestionFormViewModel { Question = question }; _context.AddTestActivityAddQuestionToDatabase(question.Id); var result = _controller.Delete(viewModel); Assert.That(_context.Activities.Count(), Is.EqualTo(0)); }
public void Delete_WhenCalled_ShouldSoftDeleteQuestionAndItsAnswers() { var question = _context.AddTestQuestionToDatabase("Question 2?"); _context.AddTestAnswerToDatabase(question.Id); var viewModel = new QuestionFormViewModel { Question = question }; var result = _controller.Delete(viewModel); Assert.That(_contextAfterAction.Questions.Single().IsDeleted, Is.True); Assert.That(_contextAfterAction.Answers.Single().IsDeleted, Is.True); }
public ActionResult NewQuestion(int id) { setglobalCourseID(id); var choices = _context.Choices.ToList(); var correspondingCourse = _context.Courses.SingleOrDefault(c => c.Id == id); var viewModel = new QuestionFormViewModel { Question = new Question { CourseID_Id = id }, Choice = choices, Course_id = id }; return(View("QuestionForm", viewModel)); }
public ActionResult Ask(QuestionFormViewModel vm) { Markdown md = new Markdown(); if (ModelState.IsValid) { vm.Question.Active = true; vm.Question.DateCreated = DateTime.Now; vm.Question.Posts.Add(new Post() { Active = true, Content = md.Transform(Request.Form["Post.Content"]), User_id = (int)Session["ID"], DateCreated = DateTime.Now, }); // Was unable to add Tags, but fixed this by following the steps under 'Issues With Views': http://oyonti.wordpress.com/2011/05/26/unable-to-update-the-entityset-because-it-has-a-definingquery/ // var tagNames = Request.Form["Tag.Name"].Split(" ,".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (var t in tagNames) { if (db.Tags.Where(q => q.Name == t).Count() == 0) //More elegant use of extensions goes here { vm.Question.Tags.Add(new Tag() { Active = true, Name = t, Summary = "Requires summary", }); } else { vm.Question.Tags.Add(db.Tags.Where(q => q.Name == t).ToList()[0]); } } //Add and apply changes to the database db.Questions.Add(vm.Question); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(vm.Question)); }
public void Save_NewQuestion_ShouldSaveAddQuestionActivityToDatabase() { var question = new Question { Title = "New Question?", Description = "New desc" }; var viewModel = new QuestionFormViewModel { Question = question }; var result = _controller.Save(viewModel); var activity = _contextAfterAction.Activities.Single(); Assert.That(activity.Type, Is.EqualTo(ActivityType.AddQuestion)); Assert.That(activity.QuestionId, Is.EqualTo(question.Id)); }
public IActionResult Save(QuestionFormViewModel updatedQuestion) { if (!ModelState.IsValid) { return(View("QuestionForm", updatedQuestion)); } var question = updatedQuestion.Question; question.Answers[updatedQuestion.CorrectAnswerIndex].IsCorrect = true; if (question.Id != 0) { _questionService.Update(question); } else { question = _questionService.Add(question); } return(RedirectToAction("Get", new { Id = question.Id })); }
public ActionResult Edit(int id) { setglobalCourseID(id); var choices = _context.Choices.ToList(); var question = _context.Questions.SingleOrDefault(c => c.Id == id); if (question == null) { return(HttpNotFound()); } var viewModel = new QuestionFormViewModel { Question = question, Choice = choices, Course_id = id }; return(View("QuestionForm", viewModel)); }
private Question SaveQuestion(QuestionFormViewModel formViewModel) { var questionToSave = formViewModel.Question; var isQuestionNew = questionToSave.Id == 0; questionToSave = UpdateOrAddQuestion(questionToSave); if (questionToSave.CanUserModify(User)) { UpdateQuestionTopics(formViewModel.TopicIds, questionToSave); _unitOfWork.Complete(); if (isQuestionNew) { AddAddQuestionActivity(User.Identity.GetUserId(), questionToSave.Id); } } return(questionToSave); }
private QuestionFormViewModel ConstructQuestionFormViewModel(Question question) { var topics = _unitOfWork.TopicRepository.GetAll().Select(t => new { TopicId = t.Id, TopicName = t.Name }).ToList(); var selectedTopicIds = question.Topics.Select(t => t.Id).ToArray(); var viewModel = new QuestionFormViewModel { Question = question, Topics = new MultiSelectList(topics, "TopicId", "TopicName"), TopicIds = selectedTopicIds, CanUserDelete = question.CanUserModify(User) }; return(viewModel); }
public ActionResult Save(QuestionFormViewModel formViewModel) { if (!ModelState.IsValid) { // return to current page return(Redirect(Request.UrlReferrer.ToString())); } formViewModel.Question.TrimTitleAndDescription(); // check if new question title is unique if (DoesQuestionTitleExist(formViewModel.Question)) { TempData["pageError"] = "Question already exists."; return(Redirect(Request.UrlReferrer.ToString())); } var questionSaved = SaveQuestion(formViewModel); return(RedirectToAction("Detail", new { id = questionSaved.Id })); }
public ActionResult Delete(QuestionFormViewModel viewModel) { var question = _unitOfWork.QuestionRepository.Single(q => q.Id == viewModel.Question.Id, nameof(Question.Answers)); if (question.CanUserModify(User)) { _unitOfWork.AnswerRepository.RemoveRange(question.Answers); _unitOfWork.QuestionRepository.Remove(question); var activity = _unitOfWork.ActivityRepository.SingleOrDefault(a => a.Type == ActivityType.AddQuestion && a.QuestionId == viewModel.Question.Id); if (activity != null) { _unitOfWork.ActivityRepository.Remove(activity); } _unitOfWork.Complete(); } return(RedirectToAction("Index", "Home")); }
public async Task <IActionResult> Edit(int id) { var questionInDb = await _context.Question.SingleOrDefaultAsync(q => q.Id == id); if (questionInDb == null) { return(StatusCode(404)); } var viewModel = new QuestionFormViewModel { Id = questionInDb.Id, Text = questionInDb.Text, CategoryId = questionInDb.CategoryId, Explanation = questionInDb.Explanation, ImagePath = questionInDb.ImagePath, Answers = await _context.Answers.Where(a => a.QuestionId == id).ToListAsync(), Categories = await _context.Categories.ToListAsync() }; return(View(viewModel)); }
public ActionResult Create(QuestionFormViewModel model) { if (!ModelState.IsValid) { model.SubCategories = this.GetSubCategories(); return(View(model)); } string title = model.Question.Title; if (this.questionService.TitleExists(title)) { model.SubCategories = this.GetSubCategories(); TempData.AddErrorMessage(string.Format(WebConstants.EntryExists, Question)); return(View(model)); } int authorId = User.Identity.GetUserId <int>(); int id = this.questionService.Create( authorId, title, model.Question.Content, model.Question.Tags, model.SubCategoryId); if (id < 1) { return(BadRequest()); } TempData.AddSuccessMessage(string.Format( WebConstants.SuccessfullEntityOperation, Question, WebConstants.Added)); return(RedirectToAction(nameof(Details), new { id })); }
public ActionResult Save(QuestionFormViewModel viewModel) { if (!ModelState.IsValid) { return(View("QuestionForm", viewModel)); } if (viewModel.Question.Id == 0) { viewModel.Question.CourseID_Id = viewModel.Course_id; _context.Questions.Add(viewModel.Question); } else { var questionInDb = _context.Questions.Single(c => c.Id == viewModel.Question.Id); questionInDb.Body = viewModel.Question.Body; questionInDb.AnswerA = viewModel.Question.AnswerA; questionInDb.AnswerB = viewModel.Question.AnswerB; questionInDb.AnswerC = viewModel.Question.AnswerC; questionInDb.AnswerD = viewModel.Question.AnswerD; questionInDb.RightAnswer_Id = viewModel.Question.RightAnswer_Id; questionInDb.CourseID_Id = viewModel.Question.CourseID_Id; } _context.SaveChanges(); var firstQuery = _context.Questions.Where(c => c.CourseID_Id.Equals(viewModel.Question.CourseID_Id)).ToList(); var questionsViewModel = new SelectedQuestionsViewModel { Question = firstQuery, Course_id = viewModel.Question.CourseID_Id, }; return(View("Index", questionsViewModel)); }
public void SaveQuestionTopics_WhenCalled_ShouldUpdateQuestionTopicsInDatabase() { var topic = _context.AddTestTopicToDatabase(); var existingQuestion = _context.AddTestQuestionToDatabase(); var question = new Question { Title = existingQuestion.Title, Id = existingQuestion.Id, }; question.SetUserId(existingQuestion.AppUserId); var viewModel = new QuestionFormViewModel { Question = question, TopicIds = new[] { topic.Id } }; var result = _controller.SaveQuestionTopics(viewModel); var questionInDb = _contextAfterAction.Questions.Include(q => q.Topics).SingleOrDefault(); Assert.That(questionInDb.Topics.Count, Is.EqualTo(1)); }
public void Save_NewQuestion_ShouldSaveQuestionAndItsTopicsToDatabase() { var topic = _context.AddTestTopicToDatabase(); var question = new Question { Title = "New Question?", Description = "New desc" }; var viewModel = new QuestionFormViewModel { Question = question, TopicIds = new[] { topic.Id } }; var result = _controller.Save(viewModel); var questionInDb = _contextAfterAction.Questions.Include(q => q.Topics).SingleOrDefault(); Assert.That(questionInDb, Is.Not.Null); Assert.That(questionInDb.Title, Is.EqualTo(questionInDb.Title)); Assert.That(questionInDb.Description, Is.EqualTo(questionInDb.Description)); Assert.That(questionInDb.Topics.Count, Is.EqualTo(1)); }
public IActionResult Create() { var newQuestion = new QuestionFormViewModel(); return(View("QuestionForm", newQuestion)); }