public RoundViewModelTest() { _quizzes = GenerateQuizzesList(); _selectedQuizIndex = _random.Next(_quizzes.Count); _selectedQuiz = _quizzes[_selectedQuizIndex]; _selectedRoundIndex = _random.Next(_selectedQuiz.QuizRounds.Count); _selectedRound = _selectedQuiz.QuizRounds[_selectedRoundIndex]; _quizServiceMock = new Mock <IQuizService>(); _quizServiceMock.Setup(qS => qS.GetAllQuizzes()).ReturnsAsync(_quizzes); _quizServiceMock.Setup(qS => qS.DeleteQuiz(It.IsAny <int>())).ReturnsAsync(true); _quizServiceMock.Setup(qS => qS.EditQuiz(It.IsAny <int>(), It.IsAny <Quiz>())).ReturnsAsync(true); _roundServiceMock = new Mock <IRoundService>(); _roundServiceMock.Setup(rS => rS.EditRound(It.IsAny <int>(), It.IsAny <Round>())).ReturnsAsync(true); _navigationServiceExMock = new Mock <INavigationServiceEx>(); _navigationServiceExMock.Setup(nS => nS.GoBack()).Returns(true); _navigationServiceExMock.Setup(nS => nS.Navigate(It.IsAny <string>(), It.IsAny <object>(), It.IsAny <NavigationTransitionInfo>())).Returns(true); _messengerCacheMock = new Mock <IMessengerCache>(); _messengerCacheMock.Setup(mC => mC.CachedSelectedQuiz).Returns(_selectedQuiz); _messengerCacheMock.Setup(mC => mC.CachedSelectedRound).Returns(_selectedRound); _sender = new QuizzenViewModel(_quizServiceMock.Object, _navigationServiceExMock.Object); _sender.EditQuizCommand.Execute(_selectedQuizIndex); _intermediate = new EditQuizViewModel(_quizServiceMock.Object, _navigationServiceExMock.Object, _messengerCacheMock.Object); _intermediate.NavigateToRoundCommand.Execute(_selectedRound); _sut = new RoundViewModel(_roundServiceMock.Object, _navigationServiceExMock.Object, _messengerCacheMock.Object); }
public IActionResult Edit(int id, EditQuizViewModel model) { var quiz = _dbContext.Quizzes .Include(x => x.Questions) .FirstOrDefault(x => x.Id == id); if (quiz == null) { return(NotFound()); } if (ModelState.IsValid) { quiz.Title = model.Title; quiz.Description = model.Description; _dbContext.Update(quiz); _dbContext.SaveChanges(); return(RedirectToAction("Show", new { id = id })); } return(View(model)); }
public ActionResult AddQuestions(EditQuizViewModel model) { Question question = new Question(); question.Text = model.NewQuestion.Text; question.CorrectAnswerId = null; question.QuizId = db.Quizes.Where(x => x.vId == model.QuizvId).First().Id; db.Questions.Add(question); db.SaveChanges(); foreach (var answer in model.NewQuestion.Answers) { var a = new QuestionOption { Text = answer.Text, QuestionId = question.Id }; db.QuestionOptions.Add(a); db.SaveChanges(); if (answer.IsCorrect) { question.CorrectAnswerId = a.Id; } question.PossibleAnswers.Add(a); db.SaveChanges(); } return(AddQuestions(model.QuizvId)); }
public IActionResult OnPostDeleteQuiz(EditQuizViewModel model) { //get quiz by supplied ID and check if this User is its owner var quiz = _context.Quizzes.Include(x => x.Questions) .Include("Questions.Options").FirstOrDefault(x => x.Id == model.ID); if (quiz == null) { return(NotFound()); } _context.Quizzes.Attach(quiz); quiz.Questions.ForEach(qu => _context.Options.RemoveRange(qu.Options)); _context.Questions.RemoveRange(quiz.Questions); _context.Quizzes.Remove(quiz); if (_context.SaveChanges() > 0) { return(Redirect("~/admin/quizzes")); } else { return(StatusCode(500)); } }
public PartialViewResult AddQuestions(int vId) { Quiz q = db.Quizes.Include(x => x.Questions.Select(y => y.PossibleAnswers)).Where(x => x.vId == vId).First(); EditQuizViewModel vm = new EditQuizViewModel { QuizvId = q.vId, QuizName = q.Name, NewQuestion = null, Questions = q.Questions.Select(x => new EditQuizViewModel.QuestionInfo { Id = x.Id, Text = x.Text, Answers = x.PossibleAnswers.Select(z => new EditQuizViewModel.QuestionInfo.AnswerInfo { Id = z.Id, IsCorrect = z.Id == x.CorrectAnswerId, Text = z.Text }).ToList() }).OrderByDescending(x => x.Id).ToList() }; vm.NewQuestion.Text = ""; return(PartialView("_AddQuizQuestionPartial", vm)); }
public ActionResult EditQuiz(int id) { if (id < 1) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } EditQuizViewModel viewModel = this.service.GetEditViewModel(id); return(this.View(viewModel)); }
public async Task <ActionResult> EditQuiz(EditQuizViewModel model) { //get quiz by supplied ID and check if this User is its owner var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var quiz = UserHasRights() ? QuizzesService.Instance.GetQuizForAdmin(model.ID) : QuizzesService.Instance.GetUserQuiz(userId, model.ID); if (quiz == null) { return(NotFound()); } //check if Model is valid if (!ModelState.IsValid) { model.PageInfo = new PageInfo() { PageTitle = "Modify Quiz", PageDescription = "Modify this quiz." }; return(View(model)); } //populate quiz from Model //quiz.OwnerID = User.Identity.GetUserId(); //<- Do not change owner of Quiz on update. Reason: if the Super Admin updated the quiz, it will no longer show in original owner quiz.Name = model.Name; quiz.Description = model.Description; //quiz type should not be changed because this will affect the display of questions //quiz.QuizType = model.SelectedQuizType; quiz.EnableQuizTimer = model.EnableQuizTimer; if (quiz.EnableQuizTimer) { quiz.TimeDuration = new TimeSpan(model.Hours, model.Minutes, 0); quiz.EnableQuestionTimer = model.EnableQuestionTimer; } else { quiz.TimeDuration = new TimeSpan(0, 0, 0); quiz.EnableQuestionTimer = false; } quiz.ModifiedOn = DateTime.Now; if (await QuizzesService.Instance.UpdateQuiz(quiz)) { //now redirect to Quiz listing Page return(RedirectToAction("Index")); } else { return(StatusCode(500)); } }
public void Constructor_ShouldLoadSelectedQuizAndAllQuizzes() { //Act var sut = new EditQuizViewModel(_quizServiceMock.Object, _navigationServiceExMock.Object, _messengerCacheMock.Object); //Assert Assert.Equal(_selectedQuiz, sut.SelectedQuiz); Assert.Equal(_quizzes, sut.AllQuizzes); _quizServiceMock.Verify(qS => qS.GetAllQuizzes(), Times.Exactly(3)); /*Normally it should be once but the _sender constructor in this test's constructor calls the function one time, * the _sut constructor in this test's constructor calls it a second time and this test calls it a third time*/ }
public ActionResult EditQuiz([Bind(Include = "Id,Title")] EditQuizBindingModel model) { if (ModelState.IsValid) { this.service.EditQuiz(model); return(this.RedirectToAction("PreviewQuiz", "Quizzes", new { area = "Admin", id = model.Id })); } EditQuizViewModel viewModel = this.service.GetEditViewModel(model.Id); return(this.View(viewModel)); }
/// <summary> /// Выполняет трансляцию DTO в модель редактирования теста. /// </summary> /// <param name="dto">DTO-объект теста.</param> /// <returns>Модель с описанием теста.</returns> private EditQuizViewModel TranslateEditQuizModel(QuizDto dto) { var model = new EditQuizViewModel { QuizId = dto.Id, Title = dto.Title, TotalTimeSecs = dto.TotalTimeSecs, QuizBlocks = dto.QuizBlocks.Select(TranslateQuizBlockModel).ToList() }; return(model); }
public ActionResult Add(EditQuizViewModel input) { if (!ModelState.IsValid) { return(View("Edit", input)); } var quiz = input.MapTo <Quiz>(); RavenSession.Store(quiz); return(RedirectToAction("Details", new { id = quiz.Id.ToIntId() })); }
protected override void OnNavigatedTo(NavigationEventArgs e) { quizParams = (QuizParams)e.Parameter; // get parameter Frame rootFrame = Window.Current.Content as Frame; if (quizParams != null) { ViewModel = new EditQuizViewModel(); } ViewModel.Initialize(quizParams); DataContext = ViewModel; }
// GET: Edit Quiz public ActionResult EditQuiz(EditQuizViewModel model, string QuizName) { if (model.Id == 0) { model.CurrentQuiz = quizViewModel.GetQuizByTitle(QuizName); model.SetQuizVariables(model.CurrentQuiz); } else { model.SaveQuizDetails(); } model.Categories = quizViewModel.Categories; return(View(model)); }
public void Edit_Post() { var c = _controllerProvider.CreateQuizzesController(); EditQuizViewModel model = _mockRepository.QuizService.Get(1).ToEditQuizViewModel(_mockRepository.QuestionService, _mockRepository.AnswerService, _mockRepository.QuizCategoryService); model.Quiz.Name = "test"; var result = c.Edit(model) as PartialViewResult; model = result.Model as EditQuizViewModel; Assert.IsNotNull(model); Assert.AreEqual("test", model.Quiz.Name); }
public void Edit_Post() { var c = ControllerProvider.CreateQuizzesController(); EditQuizViewModel model = Mocks.ModelConverter.ToEditQuizViewModel(Mocks.QuizService.Get(1)); model.Quiz.Name = "test"; var result = c.Edit(model) as PartialViewResult; model = result.Model as EditQuizViewModel; Assert.IsNotNull(model); Assert.AreEqual("test", model.Quiz.Name); }
//GET: Edit Questions public ActionResult EditQuestions(EditQuizViewModel model, int QuestionId, string QuizName) { if (model.CurrentQuestion == null) { model.CurrentQuiz = quizViewModel.GetQuizByTitle(QuizName); model.SetQuestionVariables(QuestionId); } else { model.SaveQuestionDetails(); return(RedirectToAction("EditQuiz", new { QuizName = model.CurrentQuiz.Title })); } return(View(model)); }
public ActionResult EditQuiz(int ID) { //get quiz by supplied ID and check if this User is its owner var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var quiz = UserHasRights() ? QuizzesService.Instance.GetQuizForAdmin(ID) : QuizzesService.Instance.GetUserQuiz(userId, ID); if (quiz == null) { return(NotFound()); } EditQuizViewModel model = new EditQuizViewModel(); model.PageInfo = new PageInfo() { PageTitle = "Modify Quiz", PageDescription = "Modify this quiz." }; model.ID = quiz.ID; model.Name = quiz.Name; model.Description = quiz.Description; model.QuizTypes = new List <QuizType>() { QuizType.Text, QuizType.Image }; model.SelectedQuizType = quiz.QuizType; model.EnableQuizTimer = quiz.EnableQuizTimer; if (model.EnableQuizTimer) { model.Hours = quiz.TimeDuration.Hours; model.Minutes = quiz.TimeDuration.Minutes; model.EnableQuestionTimer = quiz.EnableQuestionTimer; } else { model.Hours = 0; model.Minutes = 0; model.EnableQuestionTimer = false; } model.NoOfQuestions = quiz.Questions.Count; return(View(model)); }
public IActionResult OnPost(EditQuizViewModel model) { //get quiz by supplied ID and check if this User is its owner var quiz = _context.Quizzes.FirstOrDefault(x => x.Id == model.ID); if (quiz == null) { return(NotFound()); } //check if Model is valid if (!ModelState.IsValid) { QuizViewModel = model; return(Page()); } //populate quiz from Model //quiz.OwnerID = User.Identity.GetUserId(); //<- Do not change owner of Quiz on update. Reason: if the Super Admin updated the quiz, it will no longer show in original owner quiz.Name = model.Name; quiz.Description = model.Description; //quiz type should not be changed because this will affect the display of questions //quiz.QuizType = model.SelectedQuizType; quiz.EnableQuizTimer = model.EnableQuizTimer; if (quiz.EnableQuizTimer) { quiz.TimeDuration = new TimeSpan(model.Hours, model.Minutes, 0); quiz.EnableQuestionTimer = model.EnableQuestionTimer; } else { quiz.TimeDuration = new TimeSpan(0, 0, 0); quiz.EnableQuestionTimer = false; } _context.Entry(quiz).State = Microsoft.EntityFrameworkCore.EntityState.Modified; if (_context.SaveChanges() > 0) { return(Redirect("~/admin/quizzes")); } else { return(StatusCode(500)); } }
public EditQuizViewModel GetEditViewModel(int id) { Quiz quiz = this.GetQuiz(id); if (quiz == null) { throw new ArgumentNullException(nameof(id), "There is no Quiz with such Id."); } EditQuizViewModel viewModel = Mapper.Instance .Map <Quiz, EditQuizViewModel>(quiz); viewModel.QuestionsInQuiz = this.SearchQuestions(quiz.Title).ToList(); viewModel.UnassignedQuestions = this.SearchQuestions("Unassigned").ToList(); return(viewModel); }
public EditQuizViewModel ToEditQuizViewModel(Quiz quiz) { var vm = new EditQuizViewModel(); vm.Quiz = ToQuizViewModel(quiz, true); var sortedQuestions = quiz.Questions.AsQueryable().AsNoTracking().OrderBy(x => x.OrderId).Select(x => x.Id); vm.QuestionOrder = string.Join(",", sortedQuestions); vm.Categories = _quizCategorytService.GetCategoriesAsSelectList(); vm.SelectedCategory = quiz.Category.Id; vm.EstimatedTime = (uint)quiz.Questions.Sum(x => x.EstimatedTime); return(vm); }
public ActionResult Edit(EditQuizViewModel vm) { if (ModelState.IsValid) { Quiz quiz; if (_quizService.GetAll().Any(x => x.Name == vm.Quiz.Name && x.Id != vm.Quiz.QuizId)) { ModelState.AddModelError("Name", "Name already exists"); quiz = _quizService.Get(vm.Quiz.QuizId); vm = quiz.ToEditQuizViewModel(_questionService, _answerService, _quizCategoryService); return(PartialView("_EditQuizPartial", vm)); } if (!String.IsNullOrEmpty(vm.NewCategory)) { if (_quizCategoryService.Exists(vm.NewCategory)) { ModelState.AddModelError("NewCategory", "Category already exists"); quiz = _quizService.Get(vm.Quiz.QuizId); vm = quiz.ToEditQuizViewModel(_questionService, _answerService, _quizCategoryService); return(PartialView("_EditQuizPartial", vm)); } vm.SelectedCategory = _quizCategoryService.InsertByName(vm.NewCategory).Id; } quiz = vm.ToModel(_quizService, _quizCategoryService); _quizService.Update(quiz); if (quiz.Questions.Count > 1) { _questionService.SaveOrder(quiz.Id, vm.QuestionOrder); } ModelState.Clear(); vm = _quizService.Get(quiz.Id).ToEditQuizViewModel(_questionService, _answerService, _quizCategoryService); return(PartialView("_EditQuizPartial", vm)); } return(PartialView("_EditQuizPartial", vm)); }
public ActionResult Edit(EditQuizViewModel vm) { if (ModelState.IsValid) { Quiz quiz; if (_quizService.GetAll().Any(x => x.Name == vm.Quiz.Name && x.Id != vm.Quiz.QuizId)) { ModelState.AddModelError("Name", "Name already exists"); } if (!String.IsNullOrEmpty(vm.NewCategory)) { if (_quizCategoryService.Exists(vm.NewCategory)) { ModelState.AddModelError("NewCategory", "Category already exists"); } vm.SelectedCategory = _quizCategoryService.InsertByName(vm.NewCategory).Id; } if (!ModelState.IsValid) { quiz = _quizService.Get(vm.Quiz.QuizId); vm = _modelConverter.ToEditQuizViewModel(quiz); return(PartialView("_EditQuizPartial", vm)); } quiz = _viewModelConverter.ToQuizModel(vm); _quizService.Update(quiz); _questionService.SaveOrder(quiz, vm.QuestionOrder); ModelState.Clear(); vm = _modelConverter.ToEditQuizViewModel(_quizService.Get(quiz.Id)); _userActivityService.Add(User.Identity.Name, ActivityItem.Quiz, ActivityAction.Edit, quiz.Id); return(PartialView("_EditQuizPartial", vm)); } return(PartialView("_EditQuizPartial", vm)); }
public ActionResult Edit(int id, EditQuizViewModel input) { if (!ModelState.IsValid) { return(View("Edit", input)); } var quiz = RavenSession.Load <Quiz>(id); if (quiz == null) { return(HttpNotFound()); } input.MapPropertiesToInstance(quiz); RavenSession.Store(quiz); return(RedirectToAction("Details", new { id = quiz.Id.ToIntId() })); }
public IActionResult Edit(int id) { var quiz = _dbContext.Quizzes .Include(x => x.Questions) .FirstOrDefault(x => x.Id == id); if (quiz == null) { return(NotFound()); } var model = new EditQuizViewModel { Id = quiz.Id, Title = quiz.Title, Description = quiz.Description }; return(View(model)); }
public async Task <ActionResult> DeleteQuiz(EditQuizViewModel model) { //get quiz by supplied ID and check if this User is its owner var quiz = UserHasRights() ? QuizzesService.Instance.GetQuizForAdmin(model.ID) : QuizzesService.Instance.GetUserQuiz(User.Identity.GetUserId(), model.ID); if (quiz == null) { return(HttpNotFound()); } quiz.ModifiedOn = DateTime.Now; if (await QuizzesService.Instance.DeleteQuiz(quiz)) { //now redirect to Quiz listing Page return(RedirectToAction("Index")); } else { return(new HttpStatusCodeResult(500)); } }
public static EditQuizViewModel ToEditQuizViewModel(this Quiz quiz, IQuestionService questions, IAnswerService answers, IQuizCategoryService categories) { var vm = new EditQuizViewModel(); vm.Quiz = quiz.ToQuizViewModel(questions, answers, true); var sortedQuestions = quiz.Questions.AsQueryable().AsNoTracking().OrderBy(x => x.OrderId).Select(x => x.Id); vm.QuestionOrder = string.Join(",", sortedQuestions); vm.Categories = categories.GetCategoriesAsSelectList(); vm.SelectedCategory = quiz.Category.Id; vm.EstimatedTime = (uint)quiz.Questions.Sum(x => x.EstimatedTime); return(vm); }
public static Quiz ToModel(this EditQuizViewModel vm, IQuizService quizService, IQuizCategoryService quizCategoryService) { var model = quizService.Get(vm.Quiz.QuizId); if (!String.IsNullOrEmpty(vm.NewCategory)) { model.Category = quizCategoryService.InsertByName(vm.NewCategory); model.Category.Id = model.Category.Id; } else { model.Category = quizCategoryService.Get(vm.SelectedCategory); model.Category.Id = vm.SelectedCategory; } model.Summary = vm.Quiz.Summary; model.Name = vm.Quiz.Name; model.IsTimeable = vm.Quiz.IsTimeable; model.Locked = vm.Quiz.Locked; model.AllowPoints = vm.Quiz.AllowPoints; return(model); }
public async Task <ActionResult> DeleteQuiz(EditQuizViewModel model) { //get quiz by supplied ID and check if this User is its owner var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var quiz = UserHasRights() ? QuizzesService.Instance.GetQuizForAdmin(model.ID) : QuizzesService.Instance.GetUserQuiz(userId, model.ID); if (quiz == null) { return(NotFound()); } quiz.ModifiedOn = DateTime.Now; if (await QuizzesService.Instance.DeleteQuiz(quiz)) { //now redirect to Quiz listing Page return(RedirectToAction("Index")); } else { return(StatusCode(500)); } }
public IActionResult OnGet(int quizId) { QuizId = quizId; var quiz = _context.Quizzes.Include(x => x.Questions).FirstOrDefault(x => x.Id == quizId); if (quiz == null) { return(NotFound()); } QuizViewModel = new EditQuizViewModel(); QuizViewModel.ID = quiz.Id; QuizViewModel.Name = quiz.Name; QuizViewModel.Description = quiz.Description; QuizViewModel.EnableQuizTimer = quiz.EnableQuizTimer; if (QuizViewModel.EnableQuizTimer) { QuizViewModel.Hours = quiz.TimeDuration.Hours; QuizViewModel.Minutes = quiz.TimeDuration.Minutes; QuizViewModel.EnableQuestionTimer = quiz.EnableQuestionTimer; } else { QuizViewModel.Hours = 0; QuizViewModel.Minutes = 0; QuizViewModel.EnableQuestionTimer = false; } QuizViewModel.NoOfQuestions = quiz.Questions.Count; return(Page()); }
public async Task <IActionResult> Edit(int?id) { if (!id.HasValue) { return(BadRequest(Constants.ErrorMessages.BadRequest)); } var quiz = await _quizRepository.GetById(id); if (quiz == null) { return(NotFound(Constants.ErrorMessages.NotFound)); } var questions = await _questionRepository.GetByQuizId(id); var model = new EditQuizViewModel { Quiz = quiz, Questions = questions }; return(View(model)); }