/// <summary> /// Get a random question linked to the quiz. /// </summary> /// <param name="id">The quiz id.</param> /// <returns>A random question.</returns> private async Task <DisplayGameQuestionModel> GetRandomQuestionFromQuiz(string id) { Random random = new Random(); // Database related helpers LinkQuizQuestionData linkQuizQuestionData = new LinkQuizQuestionData(_db); QuestionData questionData = new QuestionData(_db); QuestionTypeData questionTypeData = new QuestionTypeData(_db); // Get Quiz questions and select one randomly List <DataLinkQuizQuestionModel> dataLinkQuizQuestionModels = await linkQuizQuestionData.GetLinkedQuestions(id); DataLinkQuizQuestionModel randomlySelectedlink = dataLinkQuizQuestionModels[random.Next(dataLinkQuizQuestionModels.Count)]; DataQuestionModel randomlySelectedQuestion = await questionData.GetQuestionById(randomlySelectedlink.QuestionId).ContinueWith((x) => { return(x.Result[0]); }); // Get Question Type to get the real name DataQuestionTypeModel dataQuestionTypeModel = await questionTypeData.GetQuestionTypeById(randomlySelectedQuestion.QuestionTypeId).ContinueWith((x) => { return(x.Result[0]); }); // Result the translated object return(new DisplayGameQuestionModel { Id = randomlySelectedQuestion.Id, Question = randomlySelectedQuestion.Question, QuestionType = dataQuestionTypeModel.QuestionType, }); }
/// <summary> /// Get the quiz's questions. /// </summary> /// <param name="id">The quiz's id.</param> public async Task OnGetAsync(string id) { DisplayQuestions = new List <DisplayQuestionModel>(); // Getting the current quiz QuizData quizData = new QuizData(_db); var dataQuizModels = await quizData.GetQuizById(id); DisplayQuizModel = new DisplayQuizModel { Duration = dataQuizModels[0].Duration, Id = dataQuizModels[0].Id, Quiz = dataQuizModels[0].Quiz, }; // Getting links List <DisplayLinkQuizQuestionModel> displayLinkQuizQuestionModels = new List <DisplayLinkQuizQuestionModel>(); LinkQuizQuestionData linkQuizQuestionData = new LinkQuizQuestionData(_db); List <DataLinkQuizQuestionModel> dataAccessLinkQuizQuestionModels = await linkQuizQuestionData.GetLinkedQuestions(id); foreach (DataLinkQuizQuestionModel dataAccessLinkQuizQuestionModel in dataAccessLinkQuizQuestionModels) { displayLinkQuizQuestionModels.Add(new DisplayLinkQuizQuestionModel { Id = dataAccessLinkQuizQuestionModel.Id, QuestionId = dataAccessLinkQuizQuestionModel.QuestionId, QuizId = dataAccessLinkQuizQuestionModel.QuizId, }); } DisplayLinks = displayLinkQuizQuestionModels; // Gettings questions for the dropdown list Questions = new SelectList(await GetQuestions(), "Id", "Question"); }
/// <summary> /// Remove the question of the quiz. /// </summary> /// <param name="id">The question's id.</param> /// <returns>Refresh the page</returns> public async Task <IActionResult> OnPostDeleteAsync(int id) { LinkQuizQuestionData linkQuizQuestionData = new LinkQuizQuestionData(_db); DataLinkQuizQuestionModel newDataLinkQuizQuestionModel = new DataLinkQuizQuestionModel { Id = string.Empty, QuestionId = id.ToString(), QuizId = DisplayLink.QuizId, }; await linkQuizQuestionData.DeleteQuestion(newDataLinkQuizQuestionModel); return(RedirectToPage("./linkquiztoquestion", new { id = DisplayLink.QuizId })); }
/// <summary> /// Adding a new question to the quiz. /// </summary> /// <returns>Refresh the page.</returns> public async Task <IActionResult> OnPost() { if (!ModelState.IsValid) { return(Page()); } LinkQuizQuestionData linkQuizQuestionData = new LinkQuizQuestionData(_db); DataLinkQuizQuestionModel newLinkQuizQuestionModel = new DataLinkQuizQuestionModel { Id = DisplayLink.Id, QuestionId = DisplayLink.QuestionId, QuizId = DisplayLink.QuizId, }; await linkQuizQuestionData.InsertLink(newLinkQuizQuestionModel); return(RedirectToPage("./linkquiztoquestion", new { id = DisplayLink.QuizId })); }