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());
            }
        }