Beispiel #1
0
        /// <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>
        /// 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 }));
        }
Beispiel #4
0
        public Task DeleteQuestion(DataLinkQuizQuestionModel dataLinkQuizQuestionModel)
        {
            string sql = @"delete from linkquizquestion where quizId=@QuizId and questionId=@QuestionId;";

            return(_db.SaveData(sql, dataLinkQuizQuestionModel));
        }
Beispiel #5
0
        public Task InsertLink(DataLinkQuizQuestionModel dataLinkQuizQuestionModel)
        {
            string sql = @"insert into linkquizquestion (quizId, questionId) values (@QuizId, @QuestionId);";

            return(_db.SaveData(sql, dataLinkQuizQuestionModel));
        }