Exemple #1
0
        public static ReadingPartTwoDTO GeneratePart4(TestCategoryManager _TestCategoryManager)
        {
            var category = _TestCategoryManager
                           .GetForGenerateTest(TestCategory.READING, 4)
                           .ToList()
                           .Shuffle()
                           .First();
            var questions = category
                            .ReadingPartTwos
                            .ToList()
                            //.Shuffle() // Không trộn thứ tự câu hỏi
                            .Take(MAX_QUESTION_READING_PART_4)
                            .ToList();

            // Kiến tạo, trộn đáp án
            for (int i = 0; i < questions.Count; i++)
            {
                questions[i].AnswerList = JsonConvert.DeserializeObject <List <BaseAnswer> >(questions[i].Answers);
                if (questions[i].AnswerList != null && questions[i].AnswerList.Count > 0)
                {
                    questions[i].AnswerList.Shuffle();// Chỉ trộn thứ tự câu trả lời
                }
            }
            return(new ReadingPartTwoDTO
            {
                TestCategory = category,
                ReadingPart = questions
            });
        }
        public static WritingPartOneDTO GeneratePart1(TestCategoryManager _TestCategoryManager)
        {
            // Lấy danh mục
            var category = _TestCategoryManager
                           .GetForGenerateTest(TestCategory.WRITING, 1)
                           .ToList()
                           .Shuffle() // Trộn
                           .First();
            // Lấy danh sách câu hỏi
            var questions = category
                            .WritingPartOnes
                            .ToList()
                            .Shuffle() // Trộn câu hỏi
                            .Take(MAX_QUESTION_WRITING_PART_1)
                            .ToList();

            // Kiến tạo danh sách câu trả lời
            for (int i = 0; i < questions.Count; i++)
            {
                questions[i].BaseAnswers = JsonConvert.DeserializeObject <List <BaseAnswer> >(questions[i].Answers);
            }

            return(new WritingPartOneDTO
            {
                TestCategory = category,
                WritingPart = questions
            });
        }
Exemple #3
0
        public static SpeakingDTO Generate(TestCategoryManager _TestCategoryManager, SpeakingEmbedManager _SpeakingEmbedManager)
        {
            var category = _TestCategoryManager
                           .GetForGenerateTest(TestCategory.SPEAKING, Config.SPEAKING_EMBED_PART_ID)
                           .ToList()
                           .Shuffle() // Trộn
                           .First();
            var questions = _SpeakingEmbedManager.GetByCategoryId(category.Id);

            return(new SpeakingDTO
            {
                Scores = -1,
                Speaking = new SpeakingEmbedCombined
                {
                    TestCategory = category,
                    SpeakingEmbed = questions
                }
            });
        }
        public static WritingPartTwoDTO GeneratePart2(TestCategoryManager _TestCategoryManager, WritingPartTwoManager _WritingPartTwoManager)
        {
            var category = _TestCategoryManager
                           .GetForGenerateTest(TestCategory.WRITING, 2)
                           .ToList()
                           .Shuffle() // Trộn
                           .First();
            var questions = _WritingPartTwoManager.GetByCategoryId(category.Id);

            return(new WritingPartTwoDTO
            {
                WritingPart2 = new WritingCombined
                {
                    TestCategory = category,
                    WritingPartTwo = questions
                },
                UserParagraph = string.Empty
            });
        }
        /// <summary>
        /// Tạo danh sách câu hỏi theo phần
        /// </summary>
        public static List <ListeningBaseCombined> Generate(
            int partId,
            TestCategoryManager _TestCategoryManager,
            ListeningMediaManager _ListeningMediaManager,
            ListeningBaseQuestionManager _ListeningBaseQuestionManager)
        {
            // Khai báo nơi chưa kết quả
            List <ListeningBaseCombined> result = new List <ListeningBaseCombined>();
            // Só phần cần lấy và số câu hỏi từng phần
            int numberOfCategory;
            int numberQuestionOfCategory;

            if (partId == 1)
            {
                numberOfCategory         = MAX_CATEGORY_LISTENING_PART_1;
                numberQuestionOfCategory = Config.MAX_LISTENING_PART_1_QUESTION;
            }
            else if (partId == 2)
            {
                numberOfCategory         = MAX_CATEGORY_LISTENING_PART_2;
                numberQuestionOfCategory = Config.MAX_LISTENING_PART_2_QUESTION;
            }
            else
            {
                throw new Exception("Wrong part ID");
            }

            // Lấy danh mục
            var categories = _TestCategoryManager
                             .GetForGenerateTest(TestCategory.LISTENING, partId)
                             .ToList()
                             .Shuffle() // Trộn
                             .Take(numberOfCategory);

            // Mỗi ListeningBaseCombined tương ứng cho một danh mục
            foreach (TestCategory category in categories)
            {
                // Lấy media
                var media = _ListeningMediaManager.GetByCategory(category.Id);

                // Lấy danh sách câu hỏi
                var questions = _ListeningBaseQuestionManager
                                .GetAll(category.Id)
                                .ToList()
                                .Where(x => !string.IsNullOrEmpty(x.QuestionText) && !string.IsNullOrEmpty(x.Answers))
                                //.Shuffle() // Trộn câu hỏi
                                .Take(numberQuestionOfCategory)
                                .ToList();
                // Kiến tạo, trộn đáp án
                for (int i = 0; i < questions.Count; i++)
                {
                    questions[i].AnswerList = JsonConvert.DeserializeObject <List <BaseAnswer> >(questions[i].Answers);
                    if (questions[i].AnswerList != null && questions[i].AnswerList.Count > 0)
                    {
                        questions[i].AnswerList.Shuffle(); // Trộn đáp án
                    }
                }
                // Thêm vào kết quả
                result.Add(new ListeningBaseCombined
                {
                    TestCategory           = category,
                    ListeningMedia         = media,
                    ListeningBaseQuestions = questions
                });
            }
            // Trả về kết quả
            return(result);
        }