示例#1
0
        public async Task <IActionResult> Create(CreateViewModel model)
        {
            var serverValidation = new ServerValidation(_quizRepository);

            if (ModelState.IsValid)
            {
                var quiz = new Quiz
                {
                    Title     = model.Title,
                    Questions = model.Questions
                };

                // A second validation on top of the client-side validation
                // It makes sure the inputs the client-side validation covers are correct
                // and performs other validation that is not executed in the client-side
                var isModelValidInServer = serverValidation.IsModelValidInServer(quiz, ModelState);

                if (isModelValidInServer)
                {
                    _quizRepository.Save(quiz);

                    await _context.SaveChangesAsync();

                    // Passing which page the user comes from
                    // It is to difference the message coming from the Edit page
                    TempData["create"] = "Create";

                    return(RedirectToAction("Details", new { id = quiz.QuizId }));
                }

                return(View(model));
            }

            return(View(model));
        }
示例#2
0
        public async Task <IActionResult> Edit(int id, Quiz quiz)
        {
            var serverValidation = new ServerValidation(_quizRepository);

            if (id != quiz.QuizId)
            {
                return(NotFound());
            }

            if (!_quizRepository.QuizExists(quiz.QuizId))
            {
                return(NotFound($"The Quiz with id - {quiz.QuizId} does not exist in the system."));
            }

            if (ModelState.IsValid)
            {
                var isModelValidInServer = serverValidation.IsModelValidInServer(quiz, ModelState);

                if (isModelValidInServer)
                {
                    foreach (var question in quiz.Questions)
                    {
                        foreach (var answer in question.Answers)
                        {
                            _context.Entry(answer).State = EntityState.Modified;
                            _answerRepository.Edit(answer);
                        }

                        _context.Entry(question).State = EntityState.Modified;
                        _questionRepository.Edit(question);
                    }

                    _context.Entry(quiz).State = EntityState.Modified;

                    _quizRepository.Edit(quiz);

                    await _context.SaveChangesAsync();

                    TempData["edit"] = "Edit";

                    return(RedirectToAction("Details", new { id = quiz.QuizId }));
                }

                return(View(quiz));
            }

            return(View(quiz));
        }