예제 #1
0
        public ActionResult CreateQuestion(Questionnaire questionnaire, QuestionnaireEditData model,
                                           string selectedQType, int id = 0)
        {
            if (ModelState.IsValid)
            {
                model.Question.QTypeName = selectedQType;

                _db.Questions.Add(model.Question);
                _db.SaveChanges();
                return(RedirectToAction("Edit", "Questionnaire", new { id }));
            }

            return(View(model));
        }
예제 #2
0
        //
        // GET: /Questionnaire/Edit/5

        public ActionResult Edit(int id = 1, int err = 0)
        {
            if (err != 0)
            {
                ViewBag.message = "The section is still being used and cannot be deleted.";
            }
            else
            {
                ViewBag.message = "";
            }

            var viewModel = new QuestionnaireEditData();

            List <SelectListItem> qTypeNames = _db.QTypes
                                               .ToList()
                                               .Select(q => new SelectListItem
            {
                Value = q.QTypeName,
                Text  = q.QTypeName
            }).OrderBy(o => o.Text).ToList();

            viewModel.QTypeNames = new SelectList(qTypeNames, "Value", "Text");

            /* Add Fully Loaded (.Included) Questionnaire to the ViewModel */

            viewModel.Questionnaire =
                _db.Questionnaires
                .Include(a => a.QuestionnaireQuestions
                         .Select(b => b.Question))
                .Include(a => a.QuestionnaireQuestions
                         .Select(b => b.QuestionnaireQCategory).Select(c => c.QCategory))
                .Include(a => a.QuestionnaireQCategories)
                .Where(n => n.QuestionnaireId == id)
                .Single();

            viewModel.Questionnaire.QuestionnaireQuestions =
                viewModel.Questionnaire.QuestionnaireQuestions.Where(x => x.UserId == 0).ToList();
            viewModel.Questionnaire.QuestionnaireQCategories =
                viewModel.Questionnaire.QuestionnaireQCategories.Where(x => x.UserId == 0).ToList();

            ICollection <QuestionnaireQuestion> sortQQs = viewModel.Questionnaire.QuestionnaireQuestions;

            viewModel.Questionnaire.QuestionnaireQuestions =
                sortQQs.OrderBy(x => x.QuestionnaireQCategory.Ordinal).ThenBy(x => x.Ordinal).ToList();

            /* Build Questionnaire Question DropDownList and add to ViewModel */
            List <SelectListItem> allQuestions = _db.Questions
                                                 .ToList()
                                                 .Select(q => new SelectListItem
            {
                Value = q.QuestionId.ToString(CultureInfo.InvariantCulture),
                Text  = q.QuestionText
            }).ToList();

            viewModel.QuestionDropDownLists = new List <KeyValuePair <int, SelectList> >();
            var newSelectList = new SelectList(allQuestions, "Value", "Text");

            viewModel.QuestionDropDownLists.Add(new KeyValuePair <int, SelectList>(-1, newSelectList));

            foreach (QuestionnaireQuestion QQ in viewModel.Questionnaire.QuestionnaireQuestions)
            {
                newSelectList = new SelectList(allQuestions, "Value", "Text", QQ.QuestionId);
                viewModel.QuestionDropDownLists.Add(new KeyValuePair <int, SelectList>(QQ.Id, newSelectList));
            }

            /* Build Questionnaire Question Category DropDownList and add to ViewModel */
            //var allQCategories = _db.QCategories
            List <SelectListItem> allQCategories = _db.QuestionnaireQCategories.Where(x => x.UserId == 0)
                                                   .ToList()
                                                   .Select(q => new SelectListItem
            {
                //Value = q.QCategoryId.ToString(CultureInfo.InvariantCulture),
                Value = q.Id.ToString(CultureInfo.InvariantCulture),
                //Text = q.QCategoryName
                Text = _db.QCategories.Single(x => x.QCategoryId == q.QCategoryId).QCategoryName
            }).OrderBy(o => o.Text).ToList();

            viewModel.QCategoryDropDownLists = new List <KeyValuePair <int, SelectList> >();
            newSelectList = new SelectList(allQCategories, "Value", "Text");
            viewModel.QCategoryDropDownLists.Add(new KeyValuePair <int, SelectList>(-1, newSelectList));
            foreach (QuestionnaireQuestion QQ in viewModel.Questionnaire.QuestionnaireQuestions)
            {
                newSelectList = new SelectList(allQCategories, "Value", "Text", QQ.QQCategoryId);
                viewModel.QCategoryDropDownLists.Add(new KeyValuePair <int, SelectList>(QQ.Id, newSelectList));
            }

            /* Build Questionnaire Question Ordinal DropDownList and add to ViewModel */
            List <SelectListItem> allOrdinals = new List <SelectListItem>();

            for (int i = 1; i < 101; i++)
            {
                var item = new SelectListItem();
                item.Value = i.ToString();
                item.Text  = i.ToString();
                allOrdinals.Add(item);
            }
            viewModel.OrdinalDropDownLists = new List <KeyValuePair <int, SelectList> >();
            newSelectList = new SelectList(allOrdinals, "Value", "Text");
            viewModel.OrdinalDropDownLists.Add(new KeyValuePair <int, SelectList>(-1, newSelectList));
            foreach (QuestionnaireQuestion QQ in viewModel.Questionnaire.QuestionnaireQuestions)
            {
                newSelectList = new SelectList(allOrdinals, "Value", "Text", QQ.Ordinal);
                viewModel.OrdinalDropDownLists.Add(new KeyValuePair <int, SelectList>(QQ.Id, newSelectList));
            }

            /* Get Sections Assigned to this Questionnaire*/
            List <KeyValuePair <int, string> > questionnaireSections = _db.QuestionnaireQCategories.Where(x => x.UserId == 0 && x.QuestionnaireId == 1)
                                                                       .ToList()
                                                                       .Select(q => new KeyValuePair <int, string>(q.Id, q.QCategory.QCategoryName))
                                                                       .OrderBy(o => o.Value)
                                                                       .ToList();

            viewModel.QuestionnaireSections = questionnaireSections;

            /* Get all Sections*/
            List <SelectListItem> allSections = _db.QCategories
                                                .ToList()
                                                .Select(q => new SelectListItem
            {
                Value = q.QCategoryId.ToString(CultureInfo.InvariantCulture),
                Text  = q.QCategoryName
            }).OrderBy(o => o.Text).ToList();

            allSections.Add(new SelectListItem()
            {
                Value = "-1", Text = ""
            });
            viewModel.Sections = allSections;


            ViewBag.QuestionnaireId = id;

            if (viewModel.Questionnaire == null)
            {
                return(HttpNotFound());
            }
            return(View(viewModel));
        }