public void Add_FinishedPressedWhenOnPage1NoQuestionAdded_GoTo() { //Arrange var mockHttpContext = new Mock <IHttpContextAccessor>(); mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession() { Id = "abba1", IsAvailable = true }); IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository(); var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase(); CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM() { QuestionNr = 1, Answer1 = "", Answer2 = "", Answer3 = "A3", Answer4 = "", RadioButtonAlternativeAnswer = 1, QuestionString = "Test" }; //Act NewQuestionVM newQuestion = new NewQuestionVM(); var result = createQuestionsController.ButtonFinished(question, newQuestion) as ViewResult; //Assert Assert.Equal("Add", result.ViewName); }
public void Add_NextPressedValidQuestionAddedToList() { //Arrange CreateQuestionsController createQuestionsController = setupBeforeTests(); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 3, QuestionString = "Test" }; //Act createQuestionsController.Add(question, "", "buttonNext", ""); var result = createQuestionsController.MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList").ElementAt(0); //Assert Assert.Equal(question.QuestionNr, result.QuestionNr); Assert.Equal(question.Answer1, result.Answer1); Assert.Equal(question.Answer2, result.Answer2); Assert.Equal(question.Answer3, result.Answer3); Assert.Equal(question.Answer4, result.Answer4); Assert.Equal(question.RadioButtonAlternativeAnswer, result.RadioButtonAlternativeAnswer); Assert.Equal(question.QuestionString, result.QuestionString); }
public void Add_NextPressedValidQuestionAdded_OpenAddView() { //Arrange CreateQuestionsController createQuestionsController = setupBeforeTests(); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM() { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 1, QuestionString = "Test" }; //Act NewQuestionVM newQuestionVM = new NewQuestionVM(); var result = createQuestionsController.ButtonNext(question, newQuestionVM) as ViewResult; //Assert Assert.Equal("Add", result.ViewName); }
public void Add_NextPressedQuestionAdded_ReturnedNewEmptyQuestionObjectWithQuestionNrEqualtTo2() { //Arrange CreateQuestionsController createQuestionsController = setupBeforeTests(); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM() { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 1, QuestionString = "Test" }; //Act NewQuestionVM newQuestionVM = new NewQuestionVM(); var model = (NewQuestionVM)(createQuestionsController.ButtonNext(question, newQuestionVM) as ViewResult)?.ViewData.Model; //Assert Assert.Equal(model.QuestionNr, 2); }
public void Add_FinishedPressedWhenOnPage1NoQuestionAdded_ReturnInvalidModelstate() { //Arrange var mockHttpContext = new Mock <IHttpContextAccessor>(); mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession() { Id = "abba1", IsAvailable = true }); IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository(); var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase(); CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM(); //Act NewQuestionVM newQuestion = new NewQuestionVM(); createQuestionsController.ButtonFinished(question, newQuestion); //Assert Assert.False(createQuestionsController.ModelState.IsValid); }
public bool ValidateIfFormIsEmpty(NewQuestionVM newQuestionVM) { var result = String.IsNullOrEmpty(newQuestionVM.QuestionString + newQuestionVM.Answer1 + newQuestionVM.Answer2 + newQuestionVM.Answer3 + newQuestionVM.Answer4); return(result); }
public void Add_FinishedPressedWhenOnPage1AndOnlyQuestion1IsEnteredCorrectly_StoreToInMemoryDb() { //Arrange var mockHttpContext = new Mock <IHttpContextAccessor>(); mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession() { Id = "abba1", IsAvailable = true }); IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository(); var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase(); CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object); AddNewQuizVM addNewQuizVM = new AddNewQuizVM { QuizId = 1, QuizName = "TestQuiz", UserId = "UserId-GUID" }; createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM); inMemoryDatabase.Quizzes.Add(new Quiz { QuizId = addNewQuizVM.QuizId, QuizName = addNewQuizVM.QuizName, UserId = addNewQuizVM.UserId }); inMemoryDatabase.SaveChanges(); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM() // filling the list { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 3, QuestionString = "Test" }; list.Add(question); //Act NewQuestionVM newQuestion = new NewQuestionVM(); createQuestionsController.ButtonFinished(question, newQuestion); var result = inMemoryDatabase.Questions.FirstOrDefault(); //Assert Assert.Equal(question.QuestionNr, result.QuestionNr); Assert.Equal(question.Answer1, result.Answers.ElementAt(0).AnswerText); Assert.Equal(question.Answer2, result.Answers.ElementAt(1).AnswerText); Assert.Equal(question.Answer3, result.Answers.ElementAt(2).AnswerText); Assert.Equal(question.Answer4, result.Answers.ElementAt(3).AnswerText); Assert.Equal(question.RadioButtonAlternativeAnswer, result.RadioButtonAlternativeAnswer); Assert.Equal(question.QuestionString, result.QuestionString); }
public HttpResponseMessage NewQuestion([FromBody] NewQuestionVM model) { var hubContext = GlobalHost.ConnectionManager.GetHubContext <MainHub>(); foreach (var con in model.Connection) { hubContext.Clients.Client(con).newQuestion(model.Id); } return(Request.CreateResponse(HttpStatusCode.OK)); }
public async Task <IActionResult> PostQuestion(NewQuestionVM vm, string tags) { if (ModelState.IsValid) { var user = await OnGetSesstion(); UserQuestion userQuestion = new UserQuestion(); userQuestion.Title = vm.Title; userQuestion.PostTime = DateTime.Now; userQuestion.Description = HttpUtility.HtmlEncode(vm.Description); userQuestion.UserId = user; _context.UserQuestion.Add(userQuestion); _context.SaveChanges(); string[] tagArray = tags.Split(','); foreach (string tag in tagArray) { var tagFromDB = _context.SkillTag.Where(x => x.SkillName == tag.ToLower()).SingleOrDefault(); if (tagFromDB == null) { SkillTag sktag = new SkillTag { ApprovedStatus = false, SkillName = tag.ToLower(), TimeApproved = DateTime.Now, UserId = user }; _context.SkillTag.Add(sktag); _context.SaveChanges(); QuestionSkill qs = new QuestionSkill { SkillTagId = sktag.SkillTagId, UserQuestionId = userQuestion.UserQuestionId }; _context.QuestionSkill.Add(qs); _context.SaveChanges(); } else { QuestionSkill qs = new QuestionSkill { SkillTagId = tagFromDB.SkillTagId, UserQuestionId = userQuestion.UserQuestionId }; _context.QuestionSkill.Add(qs); _context.SaveChanges(); } } return(RedirectToAction($"QuestionDetail", new { id = _context.UserQuestion.OrderByDescending(c => c.UserQuestionId).FirstOrDefault().UserQuestionId })); } return(View("New", vm)); }
public void ValidateInput(NewQuestionVM question) { if (string.IsNullOrEmpty(question.QuestionString) || string.IsNullOrWhiteSpace(question.QuestionString)) { ModelState.AddModelError(nameof(question.QuestionString), "Please check the correct answer!"); } if (question.RadioButtonAlternativeAnswer == null || question.RadioButtonAlternativeAnswer < 0 || question.RadioButtonAlternativeAnswer > 4) { ModelState.AddModelError(nameof(question.RadioButtonAlternativeAnswer), "Please check the correct answer!"); } else { switch (question.RadioButtonAlternativeAnswer) { case 0: { if (string.IsNullOrEmpty(question.Answer1)) { ModelState.AddModelError("", "You need to check a valid question!"); } break; } case 1: { if (string.IsNullOrEmpty(question.Answer2)) { ModelState.AddModelError("", "You need to check a valid question!"); } break; } case 2: { if (string.IsNullOrEmpty(question.Answer3)) { ModelState.AddModelError("", "You need to check a valid question!"); } break; } case 3: { if (string.IsNullOrEmpty(question.Answer4)) { ModelState.AddModelError("", "You need to check a valid question!"); } break; } } } }
public IActionResult ButtonNext(NewQuestionVM question, NewQuestionVM newQuestion) { ValidateInput(question); if (ModelState.IsValid) { ModelState.Clear(); var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList"); if (sessionResult.Count == 0) //executes when we input the first question { question.QuestionNr = 1; } else if (question.QuestionNr > 100 || question.QuestionNr < 1) { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } bool QuestionExists = sessionResult.Any(x => x.QuestionNr == question.QuestionNr); if (!QuestionExists) { if ((sessionResult.Count + 1) == question.QuestionNr) { sessionResult.Add(question); MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object newQuestion.QuestionNr = (question.QuestionNr) + 1; return(View(nameof(Add), newQuestion)); ////////////////////////////// } else //if questionNr is messed with by user { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } } else if (QuestionExists) { var oldQuestion = sessionResult.Single(x => x.QuestionNr == question.QuestionNr); sessionResult[sessionResult.IndexOf(oldQuestion)] = question; MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object if (question.QuestionNr < sessionResult.Count()) { return(View(sessionResult.ElementAt(question.QuestionNr))); ////////////////////////////// } else { newQuestion.QuestionNr = ++(question.QuestionNr); return(View(newQuestion)); ////////////////////////////// } } } return(View(question)); }
public IActionResult Add(NewQuestionVM question, string buttonBack, string buttonNext, string buttonFinished) { NewQuestionVM newQuestion = new NewQuestionVM(); IActionResult result = View(newQuestion); if (!string.IsNullOrEmpty(buttonNext)) { result = ButtonNext(question, newQuestion); } else if (!string.IsNullOrEmpty(buttonBack)) { result = ButtonBack(question, newQuestion); } else if (!string.IsNullOrEmpty(buttonFinished)) { result = ButtonFinished(question, newQuestion); } return(result); }
public void ValidateInput_InputMissingValueForAllAnswersRadioButtonChecked_ModelstateIsNotValid() { //Arrange CreateQuestionsController createQuestionsController = setupBeforeTests(); NewQuestionVM question = new NewQuestionVM() { Answer1 = "", Answer2 = "", Answer3 = "", Answer4 = "", RadioButtonAlternativeAnswer = 1, QuestionString = "Test" }; //Act createQuestionsController.ValidateInput(question); //Assert Assert.False(createQuestionsController.ModelState.IsValid); }
public void Add_BackPressedWhenQuestionNrEqualtTo3AndOnlyQuestion1IsStored_RedirectToIndexOnMainPageAndDeleteCreateNewQuestionsList() { //Arrange CreateQuestionsController createQuestionsController = setupBeforeTests(); List <NewQuestionVM> list = new List <NewQuestionVM>(); NewQuestionVM question = new NewQuestionVM() { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 3, QuestionString = "Test" }; list.Add(question); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); NewQuestionVM questionSendIn = new NewQuestionVM() { QuestionNr = 3, Answer1 = "B1", Answer2 = "B2", Answer3 = "B3", Answer4 = "B4", RadioButtonAlternativeAnswer = 2, QuestionString = "Test2" }; //Act NewQuestionVM newQuestionVM = new NewQuestionVM(); RedirectToActionResult result = (RedirectToActionResult)createQuestionsController.ButtonBack(questionSendIn, newQuestionVM); var sessionResult = createQuestionsController.MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList"); //Assert Assert.Equal(null, sessionResult); Assert.Equal("Index", result.ActionName); Assert.Equal("Main", result.ControllerName); }
public IActionResult AddNewQuiz(AddNewQuizVM addNewQuizVM) { var UserId = userManagerRepository.GetUserIdFromIdentity(HttpContext?.User); if (UserId == null) { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); } addNewQuizVM.UserId = UserId; int QuizId = repository.SaveNewQuiz(addNewQuizVM); addNewQuizVM.QuizId = QuizId; MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM); List <NewQuestionVM> list = new List <NewQuestionVM>(); MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM { QuestionNr = 1 }; return(View(nameof(Add), question)); }
public void Add_BackPressedWhenOnPage2WithInvalidInputAndOnlyQuestion1IsStoredInSession_ReturnViewModelWithQuestionNr2AndModelStateInvalid() { //Arrange CreateQuestionsController createQuestionsController = setupBeforeTests(); List <NewQuestionVM> list = new List <NewQuestionVM>(); NewQuestionVM question = new NewQuestionVM() { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 1, QuestionString = "Test" }; list.Add(question); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); NewQuestionVM questionSendIn = new NewQuestionVM() { QuestionNr = 2, Answer1 = "B1", Answer2 = "B2", Answer3 = "B3", Answer4 = "B4", RadioButtonAlternativeAnswer = 2, QuestionString = "" }; //Act NewQuestionVM newQuestionVM = new NewQuestionVM(); var model = (NewQuestionVM)(createQuestionsController.ButtonBack(questionSendIn, newQuestionVM) as ViewResult)?.ViewData.Model; //Assert Assert.Equal(model.QuestionNr, 2); Assert.False(createQuestionsController.ModelState.IsValid); }
public void Add_FinishedPressedQuestionAdded_RedirectedToShowNewQuizStored() { //Arrange CreateQuestionsController createQuestionsController = setupBeforeTestWithFakeDb(); AddNewQuizVM addNewQuizVM = new AddNewQuizVM { QuizId = 1, QuizName = "TestQuiz", UserId = "UserId-GUID" }; createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM); inMemoryDatabase.Quizzes.Add(new Quiz { QuizId = addNewQuizVM.QuizId, QuizName = addNewQuizVM.QuizName, UserId = addNewQuizVM.UserId }); inMemoryDatabase.SaveChanges(); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM() { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 1, QuestionString = "Test" }; //Act NewQuestionVM newQuestion = new NewQuestionVM(); RedirectToActionResult result = (RedirectToActionResult)createQuestionsController.ButtonFinished(question, newQuestion); //Assert Assert.Equal("ShowNewQuizStored", result.ActionName); Assert.Equal("Main", result.ControllerName); }
public void Add_XXXXXXFinishedPressedWhenOnPage1TwoQuestionsAddedInSessionAndFormFilledWithValidData_StoreToInMemoryDb() { //Arrange var mockHttpContext = new Mock <IHttpContextAccessor>(); mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession() { Id = "abba1", IsAvailable = true }); IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository(); var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase(); CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object); AddNewQuizVM addNewQuizVM = new AddNewQuizVM { QuizId = 1, QuizName = "TestQuiz", UserId = "UserId-GUID" }; createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM); inMemoryDatabase.Quizzes.Add(new Quiz { QuizId = addNewQuizVM.QuizId, QuizName = addNewQuizVM.QuizName, UserId = addNewQuizVM.UserId }); inMemoryDatabase.SaveChanges(); List <NewQuestionVM> list = new List <NewQuestionVM>(); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question = new NewQuestionVM() // filling the list { QuestionNr = 1, Answer1 = "A1", Answer2 = "A2", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 3, QuestionString = "Test" }; list.Add(question); question = new NewQuestionVM() // filling the list { QuestionNr = 2, Answer1 = "A1-2", Answer2 = "A2-2", Answer3 = "A3-2", Answer4 = "A4-2", RadioButtonAlternativeAnswer = 2, QuestionString = "Test2" }; list.Add(question); createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object NewQuestionVM question2 = new NewQuestionVM() // filling the list { QuestionNr = 1, Answer1 = "A1-1", Answer2 = "A2-1", Answer3 = "A3", Answer4 = "A4", RadioButtonAlternativeAnswer = 3, QuestionString = "Test" }; //Act NewQuestionVM newQuestion = new NewQuestionVM(); createQuestionsController.ButtonFinished(question2, newQuestion); var result = inMemoryDatabase.Questions.Count(); //Assert Assert.Equal(2, result); }
public IActionResult ButtonFinished(NewQuestionVM question, NewQuestionVM newQuestion) { ValidateInput(question); if (ModelState.IsValid) { ModelState.Clear(); var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList"); if (sessionResult.Count == 0) //executes when we input the first question { question.QuestionNr = 1; } else if (question.QuestionNr > 100 || question.QuestionNr < 1) { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } bool QuestionExists = sessionResult.Any(x => x.QuestionNr == question.QuestionNr); if (!QuestionExists) //-- { if ((sessionResult.Count + 1) == question.QuestionNr) { sessionResult.Add(question); var sessionResultAddNewQuizVM = MyContextAccessor.HttpContext.Session.GetJson <AddNewQuizVM>("CreateNewQuizId"); var AddNewQuizVMFromDb = repository.GetNewQuiz(sessionResultAddNewQuizVM.QuizId); if (sessionResultAddNewQuizVM.QuizName == AddNewQuizVMFromDb.QuizName && sessionResultAddNewQuizVM.UserId == AddNewQuizVMFromDb.UserId) { repository.SaveQuestions(sessionResult, sessionResultAddNewQuizVM.QuizId); return(RedirectToAction("ShowNewQuizStored", "Main")); ////////////////////////////// } else { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } } else //if questionNr is messed with by user { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } } else if (QuestionExists) { var oldQuestion = sessionResult.Single(x => x.QuestionNr == question.QuestionNr); sessionResult[sessionResult.IndexOf(oldQuestion)] = question; MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object var sessionResultAddNewQuizVM = MyContextAccessor.HttpContext.Session.GetJson <AddNewQuizVM>("CreateNewQuizId"); var AddNewQuizVMFromDb = repository.GetNewQuiz(sessionResultAddNewQuizVM.QuizId); if (sessionResultAddNewQuizVM.QuizName == AddNewQuizVMFromDb.QuizName && sessionResultAddNewQuizVM.UserId == AddNewQuizVMFromDb.UserId) { repository.SaveQuestions(sessionResult, sessionResultAddNewQuizVM.QuizId); return(RedirectToAction("ShowNewQuizStored", "Main")); ////////////////////////////// } else { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } } } else { //if (ValidateIfFormIsEmpty(question)) //{ // return View(question); //} if (ValidateIfFormIsEmpty(question)) //we have not input any question save questions for quiz { var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList"); var sessionResultAddNewQuizVM = MyContextAccessor.HttpContext.Session.GetJson <AddNewQuizVM>("CreateNewQuizId"); if (sessionResultAddNewQuizVM != null) { var AddNewQuizVMFromDb = repository.GetNewQuiz(sessionResultAddNewQuizVM.QuizId); if (sessionResultAddNewQuizVM.QuizName == AddNewQuizVMFromDb.QuizName && sessionResultAddNewQuizVM.UserId == AddNewQuizVMFromDb.UserId) { repository.SaveQuestions(sessionResult, sessionResultAddNewQuizVM.QuizId); return(RedirectToAction("ShowNewQuizStored", "Main")); ////////////////////////////// } else { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } } else { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } } else { return(View("Add", question)); ////////////////////////////// } } return(View(nameof(Add), question)); ////////////////////////////// }
public IActionResult ButtonBack(NewQuestionVM question, NewQuestionVM newQuestion) { ValidateInput(question); if (ModelState.IsValid) //no validation error { ModelState.Clear(); var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList"); if (sessionResult.Count == 0) //executes when we input the first question { question.QuestionNr = 1; } else if (question.QuestionNr > 100 || question.QuestionNr < 1) { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } bool QuestionExists = sessionResult.Any(x => x.QuestionNr == question.QuestionNr); if (!QuestionExists) { if ((sessionResult.Count + 1) == question.QuestionNr) { sessionResult.Add(question); MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object newQuestion = sessionResult[(question.QuestionNr) - 2]; return(View(newQuestion)); ////////////////////////////// } else //if questionNr is messed with by user { deleteQuestionsAndAnswersStoredInSession(); return(RedirectToAction("Index", "Main")); ////////////////////////////// } } else if (QuestionExists) { var oldQuestion = sessionResult.Single(x => x.QuestionNr == question.QuestionNr); sessionResult[sessionResult.IndexOf(oldQuestion)] = question; MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object if (question.QuestionNr == 1) { return(View(sessionResult.ElementAt(question.QuestionNr - 1))); ////////////////////////////// } else { return(View(sessionResult.ElementAt(question.QuestionNr - 2))); ////////////////////////////// } } } else { if (string.IsNullOrEmpty(question.QuestionString) && string.IsNullOrEmpty(question.Answer1)) //we have not input any question save questions for quiz { if (question.QuestionNr > 1 && question.QuestionNr < 100) { var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList"); ModelState.Clear(); return(View(sessionResult.ElementAt(question.QuestionNr - 2))); ////////////////////////////// } } else { return(View(question)); ////////////////////////////// } } return(View(question)); ////////////////////////////// }