/// <summary> /// Phương thức kiểm tra xem dã đầy đủ câu trả lời chưa, nếu chưa trả về lỗi, còn không bỏ trống /// </summary> public string IsFullAnswers() { if (!Config.IsCheckFullTestPaper) { return(string.Empty); } if (!ListeningTestPaper.IsPaperFullSelection()) { return("You have not yet answered all the questions of the Listening test"); } if (!ReadingTestPaper.IsPaperFullSelection()) { return("You have not yet answered all the questions of the Reading test"); } if (!WritingTestPaper.IsPaperFullSelection()) { return("You have not written the Writing Part 2 section"); } if (string.IsNullOrEmpty(WritingTestPaper.WritingPartTwos.UserParagraph)) { return("You have not yet answered all the questions of the Writing test"); } // Đã đầy đủ thì trả về rỗng return(string.Empty); }
/// <summary> /// Tính toán số điểm /// </summary> public float ScoreCalculate(ListeningTestPaper paper) { // Tính điểm cho part 1 var totalTrue1 = CalculateTrueOfPart(1, paper); if (totalTrue1 >= 0) { Part1Scores = ScoresUtils.ScoresCalculate(totalTrue1, ListeningPartOnes.Count, Config.SCORES_FULL_LISTENING_PART_1); } // Tính điểm cho part 2 var totalTrue2 = CalculateTrueOfPart(2, paper); if (totalTrue2 >= 0) { Part2Scores = ScoresUtils.ScoresCalculate(totalTrue2, ListeningPartTwos.Sum(x => x.ListeningBaseQuestions.Count) * ListeningPartTwos.Count, Config.SCORES_FULL_LISTENING_PART_2); } if (Part1Scores >= 0 && Part2Scores >= 0) { return(Part1Scores + Part2Scores); } else { return(-1); } }
public void ClearTrueAnswers() { ReadingTestPaper.RemoveCorrectAnswers(); ListeningTestPaper.RemoveCorrectAnswers(); // Xóa answers writing for (int i = 0; i < WritingTestPaper.WritingPartOnes.WritingPart.Count; i++) { WritingTestPaper.WritingPartOnes.WritingPart[i].Answers = string.Empty; } }
/// <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); }
public void ScoreCalculate(GeneralTestPaper resultPaper) { // Tính điểm cho Listening ListeningTestPaper.ScoreCalculate(resultPaper.ListeningTestPaper); // Tính điểm cho READING ReadingTestPaper.ScoresCalculate(resultPaper.ReadingTestPaper); // Tính điểm cho Writin Part 1 WritingTestPaper.ScoreCalculate(resultPaper.WritingTestPaper); // Điểm tổng phải là -1 kèm WRITING PART 2 và SPEAKING WritingTestPaper.WritingPartTwos.Scores = -1; SpeakingTestPaper.SpeakingPart.Scores = -1; }
/// <summary> /// Copy những đáp án đã chọn vào trang hiện tại /// </summary> public ListeningTestPaper CopySelectedAnswers(ListeningTestPaper paper) { if (paper.ListeningPartOnes == null || ListeningPartOnes == null || ListeningPartOnes.Count <= 0 || paper.ListeningPartOnes.Count != ListeningPartOnes.Count || paper.ListeningPartOnes == null || ListeningPartOnes == null || ListeningPartOnes.Count <= 0 || paper.ListeningPartOnes.Count != ListeningPartOnes.Count) { return(this); } // PART 1 for (int i = 0; i < ListeningPartOnes.Count && i < paper.ListeningPartOnes.Count; i++) { for (int j = 0; j < ListeningPartOnes[i].ListeningBaseQuestions.Count; j++) { var correctIndex = paper.ListeningPartOnes[i].ListeningBaseQuestions[j].AnswerList.FindIndex(0, paper.ListeningPartOnes[i].ListeningBaseQuestions[j].AnswerList.Count, x => x.IsCorrect); if (correctIndex >= 0) { ListeningPartOnes[i].ListeningBaseQuestions[j].AnswerList[correctIndex].IsCorrect = true; } } } // PART 2 for (int i = 0; i < ListeningPartTwos.Count && i < paper.ListeningPartTwos.Count; i++) { for (int j = 0; j < ListeningPartTwos[i].ListeningBaseQuestions.Count; j++) { var correctIndex = paper.ListeningPartTwos[i].ListeningBaseQuestions[j].AnswerList.FindIndex(0, paper.ListeningPartTwos[i].ListeningBaseQuestions[j].AnswerList.Count, x => x.IsCorrect); if (correctIndex >= 0) { ListeningPartTwos[i].ListeningBaseQuestions[j].AnswerList[correctIndex].IsCorrect = true; } } } return(this); }
/// <summary> /// Tính toán số điểm /// </summary> public float ScoreCalculate(string readingTestPaperJson) { ListeningTestPaper paper = JsonConvert.DeserializeObject <ListeningTestPaper>(readingTestPaperJson); return(ScoreCalculate(paper)); }
/// <summary> /// Tính số câu đúng theo phần /// </summary> public int CalculateTrueOfPart(int partId, ListeningTestPaper paper) { // Khung chứa câu hỏi và câu trả lời List <ListeningBaseCombined> currentCombined; List <ListeningBaseCombined> destCombined; if (partId == 1) { if (ListeningPartOnes == null || ListeningPartOnes.Count <= 0 || paper.ListeningPartOnes == null || paper.ListeningPartOnes.Count != ListeningPartOnes.Count) { return(-1); } // Gắn kết dữ liệu currentCombined = ListeningPartOnes; destCombined = paper.ListeningPartOnes; } else { if (ListeningPartTwos == null || ListeningPartTwos.Count <= 0 || paper.ListeningPartTwos == null || paper.ListeningPartTwos.Count != ListeningPartTwos.Count) { return(-1); } // Gắn kết dữ liệu currentCombined = ListeningPartTwos; destCombined = paper.ListeningPartTwos; } // Biến chứa giá trị đếm số câu đúng int count = 0; // vì chắc chắn 2 cặp dữ liệu trên có size bằng nhau, nên ta tiến hành cho lặp kép for (int i = 0; i < currentCombined.Count; i++) { // Lấy danh sách câu hỏi hiện tại List <ListeningBaseQuestion> current = currentCombined[i].ListeningBaseQuestions; List <ListeningBaseQuestion> dest = destCombined[i].ListeningBaseQuestions; // Nếu mục hiện tại không có câu hỏi hoặc mục đích có số lượng câu hỏi khác mục hiện tại thì thoát if (current != null && current.Count > 0 && dest != null && current.Count == dest.Count) { for (int j = 0; j < current.Count; j++) { try { string trueAnswerOfCurrent = current[j].AnswerList.First(x => x.IsCorrect).AnswerContent; string trueAnswerOfDestination = dest[j].AnswerList.First(x => x.IsCorrect).AnswerContent; if (trueAnswerOfCurrent.ToLower().Trim() == trueAnswerOfDestination.ToLower().Trim()) { count++; } } catch (Exception) { // Bỏ qua } } } } return(count); }