public string AutoAddTestPaper(TestPaper testPaper, double percent) { using (DbContextTransaction transaction = _myDbContext.Database.BeginTransaction()) { try { testPaper.IsFinish = true; _myDbContext.TestPaper.Add(testPaper); _myDbContext.SaveChanges(); int QuestionTypenumber = (int)((percent * 10) / 2); List <QuestionType> questionType = new List <QuestionType>(); foreach (var qi in _myDbContext.QuestionType.Include(c => c.ExaminationQuestions).ToArray()) { if (qi.ExaminationQuestions.Count() > 0) { questionType.Add(qi); } } int percentNum = questionType.Count(); Random rd = new Random(); List <ExaminationQuestion> examinationQuestions = _myDbContext.ExaminationQuestion.Where(c => c.SubjectId == testPaper.SubjectId).ToList(); if (examinationQuestions.Count() == 0) { return("该科目题库没有题目"); } for (int i = 0; i < 3; i++) { int questionTypeNumber = rd.Next(0, 3); PaperQuestionType paperQuestionType = new PaperQuestionType() { PaperQuestionTitle = questionType[questionTypeNumber].QuestionTypeName, QuestionTypeId = questionType[questionTypeNumber].Id, TestPaperId = testPaper.Id }; _myDbContext.PaperQuestionType.Add(paperQuestionType); _myDbContext.SaveChanges(); for (int j = 0; j < 5; j++) { ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType[questionTypeNumber].Id, percentNum); _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType() { PaperQuestionTypeId = paperQuestionType.Id, ExaminationQuestionId = examinationQuestion.Id }); } } _myDbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); } } return("生成成功"); }
private void UpdateQuestionTableList() { List <ExaminationQuestion> examinationQuestions = _quetionBankBusiness.GetExaminationQuestionsByPaperTypeId(PaperquestionTypeSelectValue); PaperQuestionType paperQuestionTyp = _quetionBankBusiness.GetPaperQuestionTypeById(PaperquestionTypeSelectValue); BindableCollection <ExaminationQuestionModel> eqnlist = new BindableCollection <ExaminationQuestionModel>(); QuestionTypesItems = new BindableCollection <PUComboBoxItemModel>(); QuestionTypesItems.AddRange(_quetionBankBusiness.GetAllQuestionType().Select((subject) => new PUComboBoxItemModel { Value = subject.Id, Header = subject.QuestionTypeName }).ToList()); foreach (var eq in examinationQuestions) { eqnlist.Add(new ExaminationQuestionModel { SubjectName = paperQuestionTyp.PaperQuestionTitle, Content = eq.Content.Length > 10?eq.Content.Substring(0, 10):eq.Content, Score = eq.Score, ExaminationQuestionId = eq.Id }); } QuestionTableList = eqnlist; }
public int AddPaperquestionType(PaperQuestionType paperQuestionType) { _myDbContext.PaperQuestionType.Add(paperQuestionType); _myDbContext.SaveChanges(); return(paperQuestionType.Id); }
public string AutoAddTemplateTestPaper(TestPaper testPaper, double percent) { using (DbContextTransaction transaction = _myDbContext.Database.BeginTransaction()) { try { testPaper.IsFinish = true; _myDbContext.TestPaper.Add(testPaper); _myDbContext.SaveChanges(); int percentNum = (int)((percent * 10)); List <QuestionType> questionTypes = new List <QuestionType>(); foreach (var qt in _myDbContext.QuestionType.Include(c => c.ExaminationQuestions).ToList()) { int count = qt.ExaminationQuestions.Where(c => c.SubjectId == testPaper.SubjectId).Count(); if (count >= 10) { questionTypes.Add(qt); } } ; if (questionTypes.Count() < 3) { return("题目类型不足"); } List <ExaminationQuestion> examinationQuestions = _myDbContext.ExaminationQuestion.Where(c => c.SubjectId == testPaper.SubjectId).ToList(); #region 添加非选择题 QuestionType questionType2 = questionTypes.FirstOrDefault(c => !c.HasOption); if (questionType2 == null) { transaction.Rollback(); return("题目类型不足"); } else { questionTypes.Remove(questionType2); } PaperQuestionType paperQuestionType2 = new PaperQuestionType() { PaperQuestionTitle = questionType2.QuestionTypeName, QuestionTypeId = questionType2.Id, TestPaperId = testPaper.Id }; _myDbContext.PaperQuestionType.Add(paperQuestionType2); _myDbContext.SaveChanges(); for (int j = 0; j < 10; j++) { ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType2.Id, percentNum); if (examinationQuestion == null) { transaction.Rollback(); return("该科目题库题目数量不足"); } examinationQuestions.Remove(examinationQuestion); _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType() { PaperQuestionTypeId = paperQuestionType2.Id, ExaminationQuestionId = examinationQuestion.Id }); } #endregion #region 添加非选择题 QuestionType questionType3 = questionTypes.FirstOrDefault(c => !c.HasOption); if (questionType3 == null) { transaction.Rollback(); return("题目类型不足"); } else { questionTypes.Remove(questionType3); } PaperQuestionType paperQuestionType3 = new PaperQuestionType() { PaperQuestionTitle = questionType3.QuestionTypeName, QuestionTypeId = questionType3.Id, TestPaperId = testPaper.Id }; _myDbContext.PaperQuestionType.Add(paperQuestionType3); _myDbContext.SaveChanges(); for (int j = 0; j < 5; j++) { ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType3.Id, percentNum); if (examinationQuestion == null) { transaction.Rollback(); return("该科目题库题目数量不足"); } examinationQuestions.Remove(examinationQuestion); _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType() { PaperQuestionTypeId = paperQuestionType3.Id, ExaminationQuestionId = examinationQuestion.Id }); } #endregion #region 添加选择题 QuestionType questionType = questionTypes.FirstOrDefault(c => c.HasOption); if (questionType == null) { return("题目类型不足"); } else { questionTypes.Remove(questionType); } if (examinationQuestions.Count() == 0) { return("该科目题库没有题目"); } if (examinationQuestions.Count() < 20) { return("该科目题库题目数量不足"); } PaperQuestionType paperQuestionType = new PaperQuestionType() { PaperQuestionTitle = questionType.QuestionTypeName, QuestionTypeId = questionType.Id, TestPaperId = testPaper.Id }; _myDbContext.PaperQuestionType.Add(paperQuestionType); _myDbContext.SaveChanges(); for (int j = 0; j < 10; j++) { ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType.Id, percentNum); if (examinationQuestion == null) { transaction.Rollback(); return("该科目题库题目数量不足"); } examinationQuestions.Remove(examinationQuestion); _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType() { PaperQuestionTypeId = paperQuestionType.Id, ExaminationQuestionId = examinationQuestion.Id }); } #endregion _myDbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); return(e.Message); } } return("生成成功"); }
public PaperQuestionType GetPaperQuestionTypeById(int id) { PaperQuestionType result = _myDbContext.PaperQuestionType.AsNoTracking().FirstOrDefault(c => c.Id == id); return(result); }