public async Task <ActionResult> EditDailyQuestion(PDQQuestionViewModel viewModel)
        {
            UserProfile profile = await HttpContext.GetUserAsync();

            ViewBag.ViewModel = viewModel;

            var item = models.GetTable <PDQQuestion>().Where(q => q.QuestionID == viewModel.QuestionID).FirstOrDefault();

            if (item != null)
            {
                viewModel.QuestionID   = item.QuestionID;
                viewModel.Question     = item.Question;
                viewModel.QuestionType = item.QuestionType;
                viewModel.GroupID      = item.GroupID;
                viewModel.AskerID      = item.AskerID;
                var rightAns = item.PDQSuggestion.Where(s => s.RightAnswer == true).FirstOrDefault();
                viewModel.RightAnswerIndex = rightAns != null?item.PDQSuggestion.IndexOf(rightAns) : 0;

                viewModel.Suggestion = item.PDQSuggestion.Select(s => s.Suggestion).ToArray();
                viewModel.BonusPoint = item.PDQQuestionExtension.BonusPoint;
            }
            else if (profile.IsCoach())
            {
                viewModel.AskerID = profile.UID;
            }

            return(View("~/Views/Activity/Module/EditDailyQuestion.ascx", item));
        }
        public async Task <ActionResult> CommitDailyQuestion(PDQQuestionViewModel viewModel)
        {
            UserProfile profile = await HttpContext.GetUserAsync();

            ViewBag.ViewModel = viewModel;
            //if (!viewModel.AskerID.HasValue)
            //{
            //    ModelState.AddModelError("AskerID", "請選擇提問者!!");
            //    ViewBag.ModelState = ModelState;
            //    return View("EditDailyQuestion", profile);
            //}
            //if (!viewModel.BonusPoint.HasValue)
            //{
            //    ModelState.AddModelError("BonusPoint", "請輸入回饋點數!!");
            //    ViewBag.ModelState = ModelState;
            //    return View("EditDailyQuestion", profile);
            //}
            viewModel.BonusPoint = 1;

            if (viewModel.Suggestion == null || viewModel.Suggestion.Length < 1)
            {
                ModelState.AddModelError("Suggestion", "請輸入選項!!");
            }
            else
            {
                viewModel.Suggestion = viewModel.Suggestion
                                       .Select(s => s.GetEfficientString())
                                       .Where(s => s != null).ToArray();

                if (viewModel.Suggestion.Length < 4)
                {
                    ModelState.AddModelError("Suggestion", "請輸入選項!!");
                }
            }

            if (!viewModel.RightAnswerIndex.HasValue)
            {
                ModelState.AddModelError("RightAnswerIndex", "請正確設定答案!!");
            }

            if (!ModelState.IsValid)
            {
                ViewBag.ModelState = this.ModelState;
                return(View("~/Views/Shared/ReportInputError.ascx"));
            }

            PDQQuestion item = models.GetTable <PDQQuestion>().Where(q => q.QuestionID == viewModel.QuestionID).FirstOrDefault();

            if (item == null)
            {
                item = new PDQQuestion
                {
                    PDQQuestionExtension = new PDQQuestionExtension
                    {
                        BonusPoint   = 1,
                        CreationTime = DateTime.Now
                    },
                    GroupID      = 6,
                    QuestionType = (int)Naming.QuestionType.單選題,
                };

                models.GetTable <PDQQuestion>().InsertOnSubmit(item);

                for (int i = 0; i < viewModel.Suggestion.Length; i++)
                {
                    item.PDQSuggestion.Add(new PDQSuggestion {
                    });
                }
            }

            item.AskerID  = viewModel.AskerID ?? profile.UID;
            item.Question = viewModel.Question;
            item.PDQQuestionExtension.CreationTime = DateTime.Now;
            //item.QuestionType = viewModel.QuestionType;
            //item.GroupID = viewModel.GroupID;
            //item.AskerID = viewModel.AskerID;

            for (int i = 0; i < viewModel.Suggestion.Length; i++)
            {
                item.PDQSuggestion[i].Suggestion  = viewModel.Suggestion[i];
                item.PDQSuggestion[i].RightAnswer = i == viewModel.RightAnswerIndex;
            }

            //item.PDQQuestionExtension.BonusPoint = viewModel.BonusPoint;

            models.SubmitChanges();
            return(Content(new { result = true, item.QuestionID }.JsonStringify(), "application/json"));
        }