// GET: Quiz public ActionResult Quiz() { QuizFactory qf = new QuizFactory(); List <QuizEntity> QuizList = qf.GetQuiz().ToList(); return(View(QuizList)); }
public ActionResult DeleteQuiz(long id) { try { QuizFactory DeleteQuiz = new QuizFactory(); QuizEntity Quiz = new QuizEntity(); Quiz = DeleteQuiz.GetQuizById(id); DataLayer.tblQuiz NewQuiz = new DataLayer.tblQuiz(); NewQuiz.QuizId = id; NewQuiz.QuizName = Quiz.QuizName; NewQuiz.CreatedDate = Quiz.CreatedDate; NewQuiz.CreatedBy = Quiz.CreatedBy; NewQuiz.UpdatedDate = DateTime.Now; NewQuiz.UpdatedBy = null; NewQuiz.IsActive = false; // IsActive will be false in delete record DeleteQuiz.SaveQuiz(NewQuiz); return(RedirectToAction("Quiz")); } catch { return(View()); } }
public void CreateQuiz_Test(KanaType type) { // Arrange var kanaRepository = Substitute.For <IKanaRepository>(); kanaRepository.GetAllByType(type).Returns(_hiraganas); switch (type) { case KanaType.Hiragana: kanaRepository.CountByType(Arg.Any <KanaType>()).Returns((byte)_hiraganas.Count()); break; case KanaType.Katakana: kanaRepository.CountByType(Arg.Any <KanaType>()).Returns((byte)_katakana.Count()); break; } // Act var quizFactory = new QuizFactory(kanaRepository); var result = quizFactory.CreateQuiz(type); // Assert Assert.Equal(4, result.Answers.Count()); Assert.Contains(result.GoodAnswer, result.Answers); }
// GET: Question public void GetQuiz() { QuizFactory UF = new QuizFactory(); List <QuizEntity> QuizList = UF.GetQuiz().ToList(); ViewBag.Quizs = new SelectList(QuizList, "QuizId", "QuizName"); }
// GET: Quiz/Edit/5 public ActionResult EditQuiz(int id) { QuizFactory EditQuiz = new QuizFactory(); QuizEntity quiz = new QuizEntity(); quiz = EditQuiz.GetQuizById(id); return(View(quiz)); }
public ActionResult DeleteQuiz(int id) { QuizFactory EditQuiz = new QuizFactory(); QuizEntity channel = new QuizEntity(); channel = EditQuiz.GetQuizById(id); return(View(channel)); }
public void CreateKatakanaQuiz_OutOfRange_Test(byte nbAnwsers) { // Arrange var kanaRepository = Substitute.For <IKanaRepository>(); kanaRepository.GetAllByType(Arg.Any <KanaType>()).Returns(_katakana); kanaRepository.CountByType(Arg.Any <KanaType>()).Returns((byte)_katakana.Count()); // Act var quizFactory = new QuizFactory(kanaRepository); // Assert Assert.Throws <KanaQuizException>(() => quizFactory.CreateKatakanaQuiz(nbAnwsers)); }
public void CreateHiraganaQuiz_Test(byte nbAnwsers) { // Arrange var kanaRepository = Substitute.For <IKanaRepository>(); kanaRepository.GetAllByType(Arg.Any <KanaType>()).Returns(_hiraganas); kanaRepository.CountByType(Arg.Any <KanaType>()).Returns((byte)_hiraganas.Count()); // Act var quizFactory = new QuizFactory(kanaRepository); var result = quizFactory.CreateHiraganaQuiz(nbAnwsers); // Assert Assert.Equal(nbAnwsers, result.Answers.Count()); Assert.Equal(KanaType.Hiragana, result.Type); Assert.Contains(result.GoodAnswer, result.Answers); }
public ActionResult EditQuiz(int id, QuizEntity Quiz) { try { if (ModelState.IsValid) { QuizFactory EditQuiz = new QuizFactory(); DataLayer.tblQuiz NewQuiz = new DataLayer.tblQuiz(); ValidationFactory VF = new ValidationFactory(); string Message = VF.QuizValidity(Quiz.QuizName, id); if (Message != "Success") { ModelState.AddModelError("QuizName", Message); return(View(Quiz)); } else { NewQuiz.QuizId = id; NewQuiz.QuizName = Quiz.QuizName; NewQuiz.CreatedDate = Quiz.CreatedDate; NewQuiz.CreatedBy = null; NewQuiz.UpdatedDate = DateTime.Now; NewQuiz.UpdatedBy = null; NewQuiz.IsActive = Quiz.IsActive; EditQuiz.SaveQuiz(NewQuiz); return(RedirectToAction("Quiz")); } } else { return(View(Quiz)); } } catch { return(View()); } }
public ActionResult GetQuiz(long QuizId) { Session["QuizId"] = QuizId; QuizFactory EditQuiz = new QuizFactory(); QuizEntity quiz = new QuizEntity(); quiz = EditQuiz.GetQuizById(QuizId); ViewBag.QuizName = quiz.QuizName; UserQuizEntity userQuiz = new UserQuizEntity(); PlayQuizFactory qf = new PlayQuizFactory(); List <QuestionEntity> QuestionListByQuiz = qf.GetQuestionsByQuizId(QuizId).ToList(); ViewBag.QuestionList = QuestionListByQuiz; userQuiz.QuestionEntity = QuestionListByQuiz; // ViewBag.QuizListByQuiz = QuizListByQuiz; List <QuestionOptionMappingEntity> Options = qf.GetOption(); ViewBag.OptionList = Options; userQuiz.QuestionOptionMappingEntity = Options; // ViewBag.OptionList = Options; return(View(userQuiz)); }
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> result) { var question = new QuizFactory().Question; PromptDialog.Choice(context, this.CheckAnswerAfterQuestion, question.Answers, question.Text, "É o que temos pra hoje meu fio. Escolhe ae..", 3); }
public async Task <JsonResult> Submit( [Required][FromRoute] FormType form, [Required][FromForm] string formJsonString, [FromForm] string code) { if (!form.Enable) { throw new UnauthorizedAccessException("該問卷已關閉"); } if (Database.Records.Any(x => x.FormId.Equals(form.Id) && x.UserId == User.Id)) { throw new InvalidOperationException("您已經作答過此問卷"); } if (Database.Writeds.Any(x => x.FormId.Equals(form.Id) && x.UserId == User.Id)) { throw new InvalidOperationException("您已經作答過此問卷"); } ReCaptchaFactory.Vaild(code); if (form.UserType != UserTypes.Null) { if (User.Type != form.UserType) { throw new UnauthorizedAccessException("該問卷您無法填寫"); } } var questions = (from t in Database.Questions //過濾出可回答問題 where t.FormId.Equals(form.Id) && t.ParentId == null select t).ToArray().Where(x => QuizFactory.IsQuestion(x)); var rawRecord = JObject.Parse(formJsonString); var keys = rawRecord.Properties().Select(x => x.Name); /* * { * "QuestionID" : value, * "1" : [Boolean],//是否勾選 如 我同意 * "2" : ["3","4",{"5":["6","7"]}] //多重布林值勾選 * "3" : ["8","9",{"10":"TEST VALUE"}] //多重布林值勾選+文字輸入 * "4" : {"11":"TEST VALUE2"}//單選一+文字輸入 * "5" : {"12":["13","14"]} * } */ #region 檢查該有的題目都有資料 foreach (var question in questions) { if (keys.Contains(question.Id.ToString())) { continue; } if (!question.Required) { continue; //非強制回答內容 } throw new InvalidOperationException("您有題目忘記作答,請再檢查一次"); } #endregion DateTime now = DateTime.Now; List <RecordType> DeepRecord(IQuestion <IdType> q, JToken ans) { List <RecordType> result = new List <RecordType>(); switch (q.Type) { #region 樹狀題目 case QuestionTypes.Checkbox: case QuestionTypes.CheckboxGroup: if (q.Type == QuestionTypes.Checkbox) { result.Add(new RecordType() { QuestionId = q.Id }); } var ary = (JArray)ans; foreach (var item in ary) { if (item.Type == JTokenType.String) //普通選項 { result.Add(new RecordType() { QuestionId = q.Children.First(x => x.Id.Equals(QuizFactory.ParseId <IdType>(item.Value <string>()))).Id, }); } else if (item.Type == JTokenType.Object) //複合選項 { var obj_Temp = item.Value <JObject>(); foreach (var qid in obj_Temp.Properties().Select(x => x.Name)) { result.AddRange(DeepRecord(q.Children.First(x => x.Id.Equals(QuizFactory.ParseId <IdType>(qid))), obj_Temp[qid])); } } } break; case QuestionTypes.Radio: case QuestionTypes.RadioGroup: if (q.Type == QuestionTypes.Radio) { result.Add(new RecordType() { QuestionId = q.Id }); } if (ans.Type == JTokenType.String) //普通選項 { result.Add(new RecordType() { QuestionId = q.Children.First(x => x.Id.Equals(QuizFactory.ParseId <IdType>(ans.Value <string>()))).Id }); } else if (ans.Type == JTokenType.Object) //複合選項 { var obj_Temp2 = ans.Value <JObject>(); foreach (var qid in obj_Temp2.Properties().Select(x => x.Name)) { result.AddRange(DeepRecord(q.Children.First(x => x.Id.Equals(QuizFactory.ParseId <IdType>(qid))), obj_Temp2[qid])); } } break; #endregion #region 單純資料 case QuestionTypes.Dropdown: //簡易多選一 result.Add(new RecordType() { QuestionId = q.Children.First(x => x.Id.Equals(QuizFactory.ParseId <IdType>(ans.Value <string>()))).Id, }); break; case QuestionTypes.InputNumber: result.Add(new RecordType() { QuestionId = q.Id, Value = ans.Value <string>() }); break; case QuestionTypes.InputText: result.Add(new RecordType() { QuestionId = q.Id, Value = ans.Value <string>() }); break; case QuestionTypes.Level: result.Add(new RecordType() { QuestionId = q.Id, Value = ans.Value <string>() }); break; #endregion } return(result); } List <RecordType> record = new List <RecordType>(); foreach (var question in questions) { var userAns = rawRecord[question.Id.ToString()]; record.AddRange(DeepRecord(question, userAns)); } var AnonUserName = "******" + (Database.Writeds.Count(x => x.FormId.Equals(form.Id)) + 1); foreach (var item in record) { item.FormId = form.Id; item.Time = now.ToJsTime(); item.UserId = User.Id; if (form.Anonymous) { item.UserId = AnonUserName; } } if (form.Anonymous) { Database.Writeds.Add(new WritedType() { FormId = form.Id, UserId = User.Id }); } Database.Records.AddRange(record); await Database.SaveChangesAsync(); return(new ApiResult()); }
public QuizController(QuizFactory quizFactory) { _quizFactory = quizFactory; }