private QuizDefinition CreateQuiz(QuizUserViewModel quizViewModel, bool replace)
        {
            QuizDefinition newQuiz = new QuizDefinition();

            this.MapViewModelToModel(quizViewModel, newQuiz, replace);
            this.Db.QuizzesDefinitions.Add(newQuiz);
            return(newQuiz);
        }
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            QuizUserViewModel quizViewModel = this.GetViewModelById(id);

            this.ViewBag.CategoryId = new SelectList(this.Db.Categories.All().ToList(), "Id", "Name", quizViewModel.CategoryId);

            return(this.View(quizViewModel));
        }
        public ActionResult Create(QuizUserViewModel quizViewModel)
        {
            if (this.ModelState.IsValid)
            {
                QuizDefinition newQuiz = this.CreateQuiz(quizViewModel, false);
                this.Db.SaveChanges();

                quizViewModel.Id = newQuiz.Id;

                return(this.RedirectToAction("Index"));
            }

            return(this.View(quizViewModel));
        }
        public ActionResult Edit(QuizUserViewModel quizViewModel)
        {
            if (this.ModelState.IsValid)
            {
                // create new and disable the old //TODO Manage questions
                QuizDefinition newQuiz = this.CreateQuiz(quizViewModel, false);

                this.Db.QuizzesDefinitions.Delete(quizViewModel.Id);

                this.Db.SaveChanges();
                return(this.RedirectToAction("Index"));
            }

            return(this.View(quizViewModel));
        }
        private void MapViewModelToModel(QuizUserViewModel quizViewModel, QuizDefinition dbQuiz, bool replace)
        {
            var category = this.Db.Categories.SearchFor(c => c.Id == quizViewModel.CategoryId).FirstOrDefault();

            if (category == null)
            {
                throw new HttpException("Category not found.");
            }

            dbQuiz.Title      = quizViewModel.Title;
            dbQuiz.CategoryId = quizViewModel.CategoryId;
            dbQuiz.IsPublic   = quizViewModel.IsPublic;
            dbQuiz.Rating     = quizViewModel.Rating;

            var user = this.Db.Users.Find(this.User.Identity.GetUserId());

            dbQuiz.Author = user;
            dbQuiz.QuestionsDefinitions = new List <QuestionDefinition>();
        }