예제 #1
0
        public async Task <IActionResult> DefineQuiz([FromBody] QuizDefinition request)
        {
            if (request == null ||
                string.IsNullOrEmpty(request.QuizName) ||
                string.IsNullOrEmpty(request.QuizType))
            // || request.QuestionSet?.Count == 0)
            {
                return(BadRequest("Mandatory Fields Missing."));
            }
            request.DocumentType = "Define";
            var parameters = new Dictionary <string, object>();
            var query      = string.Format(@"SELECT quizName FROM {0} WHERE status=""{1}"" and quizName = $quizName and quizType = $quizType and documentType=""{2}""", CouchbaseHelper.Bucket, "Published", "Define");

            parameters.Add("$quizName", request.QuizName);
            parameters.Add("$quizType", request.QuizType);
            var req = new QueryRequest(query);

            req.AddNamedParameter(parameters.ToArray());
            var result = await CouchbaseHelper.CouchbaseClient.GetByQueryAsync <QuizDefinition>(req);

            if (result.Count > 0)
            {
                return(BadRequest("This Quiz is already Published."));
            }

            var response = await CouchbaseHelper.CouchbaseClient.UpsertAsync(request.QuizName + "_" + request.QuizType, request);

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