Пример #1
0
        /// <summary>
        /// 在线学习-[单元测试]提交
        /// </summary>
        /// <returns></returns>
        public ActionResult LearnOnLineQuizEdit(List<Member_CourseContentAnswerOther> listOther)
        {
            string strVerson = string.Empty;
            int iClassId = 0, iAccountId = 0, iPlanId = 0, iResultId = 0, iUnitContent = 0, iTrainingId = 0, iQuestionCnt = 0, iRightCount = 0, iWrongCount = 0;
            double dblScoreTotal = 0, dblGetScore = 0, dblResultScore = 0;
            var stbSqlWhere = new StringBuilder();
            //获取 答题总数,答题正确的个数,答题错误的个数,结果
            iQuestionCnt = listOther.Count;//总题数
            bool bolResult = false;

            var unitQuesBll = new Course_UnitQuestionBLL();
            var CourseContentAnswerBll = new Member_CourseContentAnswerBLL();
            var unitBll = new Course_UnitContentBLL();
            var Member_ClassUnitContentSchedulebll = new Member_ClassUnitContentScheduleBLL();

            iAccountId = Code.SiteCache.Instance.LoginInfo.UserId;
            iPlanId = Code.SiteCache.Instance.PlanId;

            //获取[单元测试]总得分
            foreach (var item in listOther)
            {
                //获取该题目的正确答案
                var Model_Ques = unitQuesBll.GetModel(item.Id, string.Empty);
                if (!string.IsNullOrEmpty(item.Credits))
                {
                    double dblCre = 0;
                    double.TryParse(item.Credits, out dblCre);
                    dblScoreTotal += dblCre;//获取所有题目的答案的总得分

                    if (item.Answer == Model_Ques.Answer)
                    {
                        iRightCount++;//正确答题数
                        dblResultScore += dblCre;//用户得分
                    }
                    else
                        iWrongCount++;//错误答题数

                    strVerson = item.Verson;//题目版本号,一批题目的版本号都一样
                    iUnitContent = item.UnitContentId;//一批题目的UnitContentId都一样
                    iClassId = item.ClassId;//一批题目的ClassId都一样
                    iTrainingId = item.TrainingId;//一批题目的TrainingId都一样
                }
            }

            //若课程已结束禁止操作
            if (this.GetCourseIsOver(iClassId, iTrainingId, iAccountId))
                return Json(new { Result = true, Msg = "提交失败.当前课程已结束,不能执行该操作!" }, JsonRequestBehavior.AllowGet);
            ////查看当前活动是否已打分,若已打分则禁止操作[待删除.打分操作为自动打分,不作为判断条件]
            //if (this.GetActivityScore(iClassId, iTrainingId, iAccountId, iUnitContent))
            //    return Json(new { Result = false, Msg = "提交失败.当前活动已打分,不能执行该操作!" }, JsonRequestBehavior.AllowGet);

            //提交时,判断其剩余考试次数
            stbSqlWhere.AppendFormat(@"UnitContent = {0} AND ClassId = {1} AND AccountId = {2} AND Delflag = 0", iUnitContent, iClassId, iAccountId);
            var ResultBll = new Member_ContentAnswerResultBLL();
            var List_Member_ContentAnswerResult = ResultBll.GetList(stbSqlWhere.ToString());
            int iRowsCount = List_Member_ContentAnswerResult.Tables[0].Rows.Count;//获取已考试的次数

            var model = unitBll.GetModel(iUnitContent, string.Empty);
            if (iRowsCount >= model.TestCnt && model.TestCnt != -1)
            {
                return Json(new { Result = false, Msg = "试题提交失败。你的单元测试 - [ " + model.Title + " ] 剩余答题次数不足!" }, JsonRequestBehavior.AllowGet);
            }

            var ResultModel = new Member_ContentAnswerResult();
            ResultModel.Verson = strVerson;
            ResultModel.UnitContent = iUnitContent;
            ResultModel.ClassId = iClassId;
            ResultModel.Score = decimal.Parse(dblResultScore.ToString());//用户的答题得分
            ResultModel.QuestionCnt = iQuestionCnt;
            ResultModel.RightAnswer = iRightCount;
            ResultModel.WrongAnswer = iWrongCount;
            ResultModel.Result = bolResult;
            ResultModel.AccountId = iAccountId;
            ResultModel.Delflag = false;
            ResultModel.CreateDate = DateTime.Now;

            //将数据插入到总分表
            bool bolRes = this.InsertMember_ContentAnswerResult(ResultModel, out iResultId);

            if (bolRes)
            {
                foreach (var itemQues in listOther)
                {
                    //获取该题目的正确答案
                    var Model_Ques = unitQuesBll.GetModel(itemQues.Id, string.Empty);

                    double dblGetCreTmp = 0;
                    double.TryParse(itemQues.Credits, out dblGetCreTmp);

                    //将用户的[单元测试]答案保存
                    Member_CourseContentAnswer Model_Answer = new Member_CourseContentAnswer();
                    Model_Answer.AnswerResult = iResultId;
                    Model_Answer.Question = itemQues.Id;
                    Model_Answer.Answer = itemQues.Answer;
                    Model_Answer.Result = Model_Ques.Answer == itemQues.Answer;//比对正确答案
                    dblGetScore += Model_Ques.Answer == itemQues.Answer ? dblGetCreTmp : 0;//当前学员答题得分
                    Model_Answer.AccountId = iAccountId;
                    Model_Answer.Delflag = false;
                    Model_Answer.CreateDate = DateTime.Now;

                    //将数据插入到学员答题内容表,用户的[课程评价]答案保存
                    bolRes = CourseContentAnswerBll.Add(Model_Answer);
                }
            }

            if (bolRes)
            {
                //更新总进度
                this.UpdateOverallProgress(model.UnitId.Value, iClassId, iTrainingId, iAccountId, iUnitContent);
                //查询该学员的[单元测试]的成绩中最大分数的数据对象
                var Model_ActivityMaxScore = this.GetActivityMaxScore(iClassId, iTrainingId, iAccountId, iUnitContent);
                if (Model_ActivityMaxScore != null)
                {
                    var strWhere_Activity = string.Format(@" Status = 1 AND Delflag = 0 AND ClassId = {0} AND TrainingId = {1} AND AccountId = {2} AND UnitContent IN ({3})",
                        iClassId, iTrainingId, iAccountId, iUnitContent);
                    var List_ClassUnitContentSchedule = Member_ClassUnitContentSchedulebll.GetList(strWhere_Activity, "Id");
                    if (List_ClassUnitContentSchedule != null && List_ClassUnitContentSchedule.Count == 1)
                    {
                        var Model_ClassUnitContentSchedule = List_ClassUnitContentSchedule[0];
                        ScoreSetHelper.ScoreSet(Model_ClassUnitContentSchedule.Id, 4, iClassId, iPlanId, iAccountId, Model_ActivityMaxScore.Score.ToDouble(), Model_ClassUnitContentSchedule.score == null);
                    }
                }

                return Json(new { Result = true, Msg = "单元测试提交成功!", TotalScore = dblGetScore }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Msg = "单元测试提交失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
Пример #2
0
        public ActionResult EditUnitQuestion(Course_Question model)
        {
            Course_UnitQuestionBLL bll = new Course_UnitQuestionBLL();

            if (bll.UpdateCourseQuestion(model))
            {
                return Json(new { Result = true, Msg = "修改成功!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Msg = "修改失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
Пример #3
0
        /// <summary>
        /// 获取[单元测试]题目信息
        /// </summary>
        /// <param name="iUnitContentId"></param>
        /// <param name="strVerson"></param>
        /// <returns></returns>
        private List<Course_UnitQuestion> GetQuizCourseUnitTest(int iUnitContentId = 0, string strVerson = "")
        {
            var List_Course_UnitQuestion = new List<Course_UnitQuestion>();
            var UnitQuestionBll = new Course_UnitQuestionBLL();
            var strOrderBy = "CreateDate";
            var stbSqlWhere = new StringBuilder();

            if (!string.IsNullOrEmpty(strVerson))
            {
                stbSqlWhere.AppendFormat(" UnitContent = {0} AND Verson = '{1}'", iUnitContentId, strVerson);
            }
            else
            {
                stbSqlWhere.Append(" Display = 1 AND Delflag = 0 AND UnitContent = " + iUnitContentId);
            }

            List_Course_UnitQuestion = UnitQuestionBll.GetList(stbSqlWhere.ToString(), strOrderBy);
            ViewBag.List_Course_UnitQuestion = List_Course_UnitQuestion;
            ViewBag.QuizQuestionCount = List_Course_UnitQuestion.Count;

            return List_Course_UnitQuestion;
        }
Пример #4
0
        public ActionResult CourseActivityQuizEdit(int TrainingId, int UnitId)
        {
            //ViewBag.Title = "测试编辑";
            Course_DetailBLL bll_CourseDetail = new Course_DetailBLL();
            Course_UnitContentBLL bll = new Course_UnitContentBLL();
            Course_UnitQuestionBLL bll_UnitQuestion = new Course_UnitQuestionBLL();

            //指定课程的课程ID
            ViewBag.TrainingId = TrainingId;
            //获取指定课程ID对应的课程单元信息
            ViewBag.TrainingInfo = bll_CourseDetail.GetTrainingInfoById(Convert.ToInt32(TrainingId));
            //获取测试Model
            ViewBag.ActivityQuizModel = bll.GetModel(Convert.ToInt32(UnitId), "Delflag = 0");
            //指定单元活动是否已经添加试题
            ViewBag.IsExistsQuizQues = bll_UnitQuestion.IsExistsQuizQues(Convert.ToInt32(UnitId));

            return View();
        }
Пример #5
0
        public ActionResult DeleteUnitQuestion(int id)
        {
            Course_UnitQuestionBLL bll = new Course_UnitQuestionBLL();

            if (bll.Delete(id))
            {
                return Json(new { Result = true, Msg = "删除成功!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Msg = "删除失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
Пример #6
0
        public ActionResult AddQuizQues(Course_UnitQuestion model)
        {
            Course_UnitQuestionBLL bll = new Course_UnitQuestionBLL();

            if (bll.Add(model))
            {
                return Json(new { Result = true, Msg = "新增成功!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Msg = "新增失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
Пример #7
0
        public ActionResult TestExeclTemp(int UnitContent)
        {
            Course_UnitQuestionBLL course_UnitQuestionBLL = new Course_UnitQuestionBLL();
            string msg = "";
            HttpPostedFileBase excel = Request.Files[0];
            string fileName = Server.MapPath(Code.UploadCore.UploadAttach(excel, ref msg));
            int GroupId = Code.SiteCache.Instance.GroupId;
            int OrganId = Code.SiteCache.Instance.ManageOrganId;

            DataTable dt = ReadExcel(fileName);
            if (dt.Columns[0].ColumnName.ToString() != "类型" || dt.Columns[1].ColumnName.ToString() != "题目内容" || dt.Columns[2].ColumnName.ToString() != "答案内容" || dt.Columns[3].ColumnName.ToString() != "正确答案序号" || dt.Columns[4].ColumnName.ToString() != "权重")
            {
                return Content("no:导入的格式不正确!");
            }
            else
            {
                List<Course_UnitQuestion> list = new List<Course_UnitQuestion>();
                if (dt.Rows.Count == 0)
                {
                    return Content("no:无导入数据!");
                }
                else
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        try
                        {
                            for (int k = 0; k < dt.Columns.Count; k++)
                            {
                                if (string.IsNullOrEmpty(dt.Rows[i][k].ToString()))
                                {
                                    return Content("no:导入的数据有空值!");
                                }
                            }

                            Course_UnitQuestion model = new Course_UnitQuestion();
                            model.UnitContent = UnitContent;
                            model.Verson = "-1";
                            if (dt.Rows[i][2].ToString().Trim().IndexOf(',') > 0)
                            {
                                string[] Questions = dt.Rows[i][2].ToString().Trim().Split(',');
                                model.Question = "[";
                                for (int c = 0; c < Questions.Length; c++)
                                {
                                    model.Question += "{Id:" + (c + 1) + ",Content:'" + Questions[c] + "'},";
                                }

                                model.Question = model.Question.TrimEnd(',') + "]";
                            }
                            else
                            {
                                model.Question = dt.Rows[i][2].ToString().Trim();
                            }
                            switch (dt.Rows[i][0].ToString().Trim())
                            {
                                case "单选题":
                                    model.QTtype = 1;
                                    break;
                                case "多选题":
                                    model.QTtype = 2;
                                    break;
                                case "判断题":
                                    model.QTtype = 3;
                                    model.Question = "[{Id:1,Content:'1'},{Id:2,Content:'0'}]";
                                    break;
                                default:
                                    break;
                            }
                            model.Content = dt.Rows[i][1].ToString().Trim();

                            model.Answer = dt.Rows[i][3].ToString().Trim();

                            if (Regex.IsMatch(dt.Rows[i][4].ToString(), @"^[+-]?\d*[.]?\d*$"))
                            {
                                model.Credit = Convert.ToDouble(dt.Rows[i][4]);
                            }
                            else
                            {
                                return Content("no:权重必须是数字类型!");
                            }

                            if (dt.Rows[i][4].ToString().Length > 2)
                            {
                                return Content("no:权重数字长度不能超过五位数!");
                            }

                            if (dt.Rows[i][4].ToString() == "0")
                            {
                                return Content("no:第" + (i + 1) + "行的权重不能为0!");
                            }

                            model.Display = true;
                            model.Delflag = false;
                            model.CreateDate = DateTime.Now;
                            list.Add(model);
                        }
                        catch (Exception ex)
                        {
                            return Content("no:" + ex);
                        }
                    }

                    int count = course_UnitQuestionBLL.AddExem(list);
                    if (count > 0)
                    {
                        return Content("yes:成功导入" + list.Count + "行数据");
                    }
                    else
                    {
                        return Content("no:导入失败");
                    }

                }
            }
        }
Пример #8
0
        public ActionResult SetQuizVerson(int UnitContent)
        {
            Course_UnitQuestionBLL bll = new Course_UnitQuestionBLL();

            if (bll.SetVerson(UnitContent))
            {
                return Json(new { Result = true, Msg = "您已经完成单元活动测试试题制作!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Msg = "单元活动测试试题制作失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
Пример #9
0
 public ActionResult QuizQuesModel(int Id)
 {
     Course_UnitQuestion model = new Course_UnitQuestionBLL().GetModel(Id, "Display = 1 and Delflag = 0");
     return Json(new { Data = model }, JsonRequestBehavior.AllowGet);
 }
        /// <summary>
        /// 获取[单元测试]题目信息
        /// </summary>
        /// <returns></returns>
        private List<Course_UnitQuestion> GetQuizCourseUnitTest(int iUnitContentId = 0)
        {
            var List_Course_UnitQuestion = new List<Course_UnitQuestion>();
            var UnitQuestionBll = new Course_UnitQuestionBLL();
            var strOrderBy = "CreateDate";
            var stbSqlWhere = new StringBuilder();
            stbSqlWhere.Append("Display = 1 AND Delflag = 0 AND UnitContent = " + iUnitContentId);

            List_Course_UnitQuestion = UnitQuestionBll.GetList(stbSqlWhere.ToString(), strOrderBy);
            ViewBag.List_Course_UnitQuestion = List_Course_UnitQuestion;
            ViewBag.QuizQuestionCount = List_Course_UnitQuestion.Count;

            return List_Course_UnitQuestion;
        }