Пример #1
0
        public ActionResult Create(Question question)
        {
            if (ModelState.IsValid)
            {
                db.Questions.Add(question);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(question);
        }
        // POST api/Question
        public HttpResponseMessage PostQuestion(Question question)
        {
            if (ModelState.IsValid)
            {
                db.Questions.Add(question);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, question);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = question.QuestionID }));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public ActionResult EditQuestions(FormCollection collection)
        {
            Enquete e = db.Enquetes.Find(int.Parse(collection["Enquete_id"]));
            if (!db.Enrollments.Where(en => en.UserID == WebSecurity.CurrentUserId && en.role == EnrollmentRole.Owner).Select(en => en.EnqueteID).Contains(e.EnqueteID))
            {
                return RedirectToAction("Index", "EnqueteBuilder");
            }
            foreach(Question q in e.Questions)
            {
                if (q.Type == QuestionType.Checkbox || q.Type == QuestionType.MultipleChoice)
                {
                    for (int a = q.PossibleAnswers.Count - 1; a >= 0;--a)
                    {
                        db.PossibleAnswers.Remove(q.PossibleAnswers.ElementAt(a));
                    }
                }
            }
            db.SaveChanges();
            var questionCount = int.Parse(collection["questionCount"]);
            questionCount--;
            var questions = new Dictionary<string,Question>();
            for (var a = 1;a <= questionCount;++a)
            {
                var c = e.Questions.Where(qu => qu.QuestionNumber == a);
                Question q;
                if (c.Count() == 0)
                {
                    q = new Question();
                }
                else
                {
                    q = c.First();
                    db.Entry(q).State = EntityState.Modified;
                }
                q.EnqueteID = e.EnqueteID;
                q.Enquete = e;
                q.QuestionNumber = a;
                q.Text = collection["Question_" + a + "_Text"]; //Question_1_Text
                q.Type = (QuestionType)Enum.Parse(typeof(QuestionType),collection["Question_" + a + "_Type"]); //Question_1_Type
                questions.Add(a.ToString(), q);
            }
            var allPossibleAnswers = new Dictionary<int, ICollection<PossibleAnswer>>();
            for (var a = 1; a <= questionCount; ++a)//Question_1_Next
            {
                var q = questions[a.ToString()];
                int tmp;
                if (int.TryParse(collection["Question_" + a + "_Next"],out tmp))
                {
                    q.NextQuestionID = questions[tmp+""].QuestionID;
                    q.NextQuestion = questions[tmp+""];
                }
                if (q.Type == QuestionType.MultipleChoice || q.Type == QuestionType.Checkbox) // type == multiplechoice
                {
                    var answerCount = int.Parse(collection["Question_" + a + "_AnswerCount"]);
                    List<PossibleAnswer> possibleAnswers = new List<PossibleAnswer>();
                    for (var b = 1; b <= answerCount; ++b) //Question_1_AnswerCount
                    {
                        var possibleAnswer = new PossibleAnswer();
                        possibleAnswer.Text = collection["Question_" + a + "_Answer_" + b + "_Text"]; //Question_1_Answer_1_Text
                        if (int.TryParse(collection["Question_" + a + "_Answer_" + b + "_Next"], out tmp))
                        {
                            possibleAnswer.NextQuestionID = questions[tmp + ""].QuestionID;
                            possibleAnswer.NextQuestion = questions[tmp + ""];
                        }
                        else
                        {
                            possibleAnswer.NextQuestionID = q.NextQuestionID;
                            possibleAnswer.NextQuestion = q;
                        }
                        possibleAnswer.QuestionID = q.QuestionID;
                        possibleAnswer.Question = q;
                        possibleAnswers.Add(possibleAnswer);
                    }
                    q.PossibleAnswers = possibleAnswers;
                    allPossibleAnswers[q.QuestionNumber] = possibleAnswers;
                }
            }
            var questionList = new List<Question>(questionCount);
            for (var a = 1; a <= questionCount; ++a)
            {
                questionList.Insert(a - 1, questions[a.ToString()]);
                e.Questions = questionList;
            }
            if (ModelState.IsValid)

            {
                db.Entry(e).State = EntityState.Modified;
                db.SaveChanges();
            }
            ViewBag.PossibleAnswers = allPossibleAnswers;
            ViewBag.QuestionTypes = Enum.GetValues(typeof(QuestionType));
            return View(e);
        }
        // PUT api/Question/5
        public HttpResponseMessage PutQuestion(int id, Question question)
        {
            if (ModelState.IsValid && id == question.QuestionID)
            {
                db.Entry(question).State = EntityState.Modified;

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return Request.CreateResponse(HttpStatusCode.NotFound);
                }

                return Request.CreateResponse(HttpStatusCode.OK);
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
Пример #5
0
 public ActionResult Edit(Question question)
 {
     if (ModelState.IsValid)
     {
         db.Entry(question).State = EntityState.Modified;
         db.SaveChanges();
         return RedirectToAction("Index");
     }
     return View(question);
 }