public TestPaperController(
     IHostEnvironment _host,
     IDataRepository <TestCategory> _TestCategoryManager,
     IDataRepository <ReadingPartOne> _ReadingPartOneManager,
     IDataRepository <ReadingPartTwo> _ReadingPartTwoManager,
     IDataRepository <ListeningMedia> _ListeningMediaManager,
     IDataRepository <ListeningBaseQuestion> _ListeningBaseQuestionManager,
     IDataRepository <WritingPartOne> _WritingPartOneManager,
     IDataRepository <WritingPartTwo> _WritingPartTwoManager,
     IDataRepository <PieceOfTest> _PieceOfTestManager,
     IDataRepository <SpeakingEmbed> _SpeakingEmbedManager,
     IDataRepository <User> _UserManager)
 {
     host = _host;
     this._TestCategoryManager          = (TestCategoryManager)_TestCategoryManager;
     this._ReadingPartOneManager        = (ReadingPartOneManager)_ReadingPartOneManager;
     this._ReadingPartTwoManager        = (ReadingPartTwoManager)_ReadingPartTwoManager;
     this._ListeningMediaManager        = (ListeningMediaManager)_ListeningMediaManager;
     this._ListeningBaseQuestionManager = (ListeningBaseQuestionManager)_ListeningBaseQuestionManager;
     this._WritingPartOneManager        = (WritingPartOneManager)_WritingPartOneManager;
     this._WritingPartTwoManager        = (WritingPartTwoManager)_WritingPartTwoManager;
     this._PieceOfTestManager           = (PieceOfTestManager)_PieceOfTestManager;
     this._SpeakingEmbedManager         = (SpeakingEmbedManager)_SpeakingEmbedManager;
     this._UserManager = (UserManager)_UserManager;
 }
        public static int GenerateListeningTestPaper(
            this TestCategoryManager _TestCategoryManager,
            ListeningMediaManager _ListeningMediaManager,
            ListeningBaseQuestionManager _ListeningBaseQuestionManager,
            PieceOfTestManager _PieceOfTestManager,
            int UserId,
            int?InstructorId)
        {
            // Kiến tạo danh sách câu hỏi và câu trả lời, đồng thời xáo trộn câu trả lời
            var paper = new ListeningTestPaper
            {
                ListeningPartOnes = ListeningTestPaper.Generate(1, _TestCategoryManager, _ListeningMediaManager, _ListeningBaseQuestionManager),
                ListeningPartTwos = ListeningTestPaper.Generate(2, _TestCategoryManager, _ListeningMediaManager, _ListeningBaseQuestionManager),
            };
            // Khởi tạo đối tượng lưu trữ bài kiểm tra này và lưu paper mặc định có đáp án đúng vào
            var piceOfTest = new PieceOfTest
            {
                UserId           = UserId,
                InstructorId     = InstructorId,
                TypeCode         = TestCategory.LISTENING,
                PartId           = -1,
                ResultOfTestJson = JsonConvert.SerializeObject(paper),
            };

            // Lưu trữ bài thi vào database trước khi bắt đầu
            _PieceOfTestManager.Add(piceOfTest);
            // Xóa đáp án đúng trong paper
            return(piceOfTest.Id);
        }
Example #3
0
        /// <summary>
        /// Phương thức tạo bài thi tổng quát
        /// </summary>
        public static GeneralTestPaper Generate(
            TestCategoryManager _TestCategoryManager,
            ReadingPartOneManager _ReadingPartOneManager,
            ReadingPartTwoManager _ReadingPartTwoManager,
            ListeningBaseQuestionManager _ListeningBaseQuestionManager,
            ListeningMediaManager _ListeningMediaManager,
            WritingPartTwoManager _WritingPartTwoManager,
            SpeakingEmbedManager _SpeakingEmbedManager,
            PieceOfTestManager _PieceOfTestManager,
            int UserId,
            int?InstructorId)
        {
            GeneralTestPaper generateTestPaper = new GeneralTestPaper
            {
                // Tạo bài thi Listening
                ListeningTestPaper = new ListeningTestPaper
                {
                    ListeningPartOnes = ListeningTestPaper.Generate(1, _TestCategoryManager, _ListeningMediaManager, _ListeningBaseQuestionManager),
                    ListeningPartTwos = ListeningTestPaper.Generate(2, _TestCategoryManager, _ListeningMediaManager, _ListeningBaseQuestionManager),
                },

                // Kiến tạo danh sách câu hỏi và câu trả lời, đồng thời xáo trộn câu trả lời
                ReadingTestPaper = _TestCategoryManager.GenerateReadingTestPaper(_ReadingPartOneManager, _ReadingPartTwoManager),

                // Kiến tạo danh sách câu hỏi và câu trả lời, đồng thời xáo trộn câu trả lời
                WritingTestPaper = _TestCategoryManager.GenerateWritingTestPaper(_WritingPartTwoManager),

                // Kiến tạo danh sách câu hỏi và câu trả lời, đồng thời xáo trộn câu trả lời
                SpeakingTestPaper = _TestCategoryManager.GenerateSpeakingTestPaper(_SpeakingEmbedManager)
            };

            // Khởi tạo đối tượng lưu trữ bài kiểm tra này và lưu paper mặc định có đáp án đúng vào
            var piceOfTest = new PieceOfTest
            {
                UserId           = UserId,
                InstructorId     = InstructorId,
                TypeCode         = TestCategory.TEST_ALL,
                PartId           = -1,
                ResultOfTestJson = JsonConvert.SerializeObject(generateTestPaper),
                Scores           = -1
            };

            // Lưu trữ bài thi vào database trước khi bắt đầu
            _PieceOfTestManager.Add(piceOfTest);

            // Lưu mã bài thi vào
            generateTestPaper.PieceOfTestId = piceOfTest.Id;

            return(generateTestPaper);
        }
Example #4
0
        public ListeningManagerController(
            IHostEnvironment _host,
            IDataRepository <User> _UserManager,
            IDataRepository <UserType> _UserTypeManager,
            IDataRepository <TestCategory> _TestCategoryManager,
            IDataRepository <ListeningMedia> _ListeningMediaManager,
            IDataRepository <ListeningBaseQuestion> _ListeningBaseQuestionManager)
        {
            host = _host;

            this._UserManager                  = (UserManager)_UserManager;
            this._UserTypeManager              = (UserTypeManager)_UserTypeManager;
            this._TestCategoryManager          = (TestCategoryManager)_TestCategoryManager;
            this._ListeningMediaManager        = (ListeningMediaManager)_ListeningMediaManager;
            this._ListeningBaseQuestionManager = (ListeningBaseQuestionManager)_ListeningBaseQuestionManager;
        }
        /// <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);
        }