public ActionResult AddOption(IFormCollection collection, Question_VM model) { ViewBag.quizId = model.QuizId; //int aantalOpties = Int32.Parse(collection["aantalOpties"].ToString()); //model.OptionCount = model.OptionDescriptions.Count() + 1; model.OptionAnswers.Add(false); model.OptionDescriptions.Add(""); return(View("CreateQuestion", model)); }
public ActionResult CreateQuestion(Guid id) { ViewBag.quizId = id; Question_VM vm = new Question_VM() { QuizId = id }; vm.OptionDescriptions.Add(""); vm.OptionAnswers.Add(false); vm.OptionDescriptions.Add(""); vm.OptionAnswers.Add(false); //vm.OptionCount = 2; return(View(vm)); }
public async Task <ActionResult> CreateQuestion(IFormCollection collection, Question_VM model) { try { if (!ModelState.IsValid) //validatie error { return(View(model)); } ViewBag.quizId = model.QuizId; if (await quizRepo.GetQuizByIdAsync(model.QuizId) == null) { return(Redirect("/Error/404")); } if (await questionRepo.GetQuestionByDescriptionAsync(model.Description) != null) { ModelState.AddModelError("", "This description is already being used by another question"); return(View(model)); } List <Option> options = new List <Option>(); int corrects = 0; for (int i = 0; i < model.OptionDescriptions.Count(); i++) { if (!string.IsNullOrWhiteSpace(model.OptionDescriptions[i])) { Option option = new Option() { OptionDescription = model.OptionDescriptions[i], CorrectAnswer = model.OptionAnswers[i] }; options.Add(option); if (model.OptionAnswers[i]) { corrects += 1; } } } if (options.Count() < 2) { ModelState.AddModelError("", "Add at least 2 Options"); return(View(model)); } if (corrects == 0) { ModelState.AddModelError("", "Add at least 1 right answer"); return(View(model)); } Question question = new Question() { Description = model.Description, PossibleOptions = options }; if (model.ImageString != null) { byte[] b; using (BinaryReader br = new BinaryReader(model.ImageString.OpenReadStream())) { b = br.ReadBytes((int)model.ImageString.OpenReadStream().Length); question.ImageData = b; } } if (await questionRepo.Create(question) == null) { throw new Exception("Couldn't create the question"); } if (await quizRepo.AddQuestionToQuizAsync(model.QuizId, question.QuestionId) == null) { throw new Exception("Couldn't add the question to the quiz"); } return(RedirectToAction("Questions", new { id = model.QuizId })); } catch (Exception exc) { Console.WriteLine("Create is giving an error: " + exc.Message); ModelState.AddModelError("", "Create actie is failed try again"); return(View()); } }