Exemplo n.º 1
0
        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;
        }
Exemplo n.º 3
0
 public int AddPaperquestionType(PaperQuestionType paperQuestionType)
 {
     _myDbContext.PaperQuestionType.Add(paperQuestionType);
     _myDbContext.SaveChanges();
     return(paperQuestionType.Id);
 }
Exemplo n.º 4
0
        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("生成成功");
        }
Exemplo n.º 5
0
        public PaperQuestionType GetPaperQuestionTypeById(int id)
        {
            PaperQuestionType result = _myDbContext.PaperQuestionType.AsNoTracking().FirstOrDefault(c => c.Id == id);

            return(result);
        }