/// <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); } }
/// <summary> /// 讨论新增 /// </summary> /// <param name="model"></param> /// <returns></returns> public ActionResult EditCourseUnitReply(Course_UnitReplyDetail model) { //此处借用model.AttList传递TrainingId if (this.GetCourseIsOver(model.ClassId, int.Parse(model.AttList), model.AccountId)) return Json(new { Result = false, Msg = "提交失败.当前课程已结束,不能执行该操作!" }, JsonRequestBehavior.AllowGet); model.AttList = string.Empty; var UnitContentBll = new Course_UnitContentBLL(); var ReplyBll = new Course_UnitReplyDetailBLL(); var Model_UnitContent = UnitContentBll.GetModel(model.UnitContent, string.Empty); var iUnitType = Model_UnitContent.UnitType;//[1文本,2影音教材,3讨论,4作业,5测试,6结业考试] if (model.Id == 0)//新增 { model.Delflag = false; model.Display = true; model.CreateDate = DateTime.Now; if (iUnitType == 3)//仅当活动为讨论时,计分(视频下的讨论不再记分) this.ScoreSet(2, 0, 0, 0, true, model);//设置分数并更新讨论的进度 if (ReplyBll.Add(model)) { return Json(new { Result = true, Msg = "提交成功!" }, JsonRequestBehavior.AllowGet); } else { return Json(new { Result = true, Msg = "提交失败!" }, JsonRequestBehavior.AllowGet); } } else//[删除] 修改DelFlag = 1 { if (model.ParentReplyId == 0) { if (ReplyBll.Update(model.Id)) { if (iUnitType == 3)//仅当活动为讨论时,计分(视频下的讨论不再记分) this.ScoreSet(2, 0, 0, 0, false, model);//设置分数并更新讨论的进度 return Json(new { Result = true, Msg = "话题删除成功!" }, JsonRequestBehavior.AllowGet); } else { return Json(new { Result = false, Msg = "话题删除失败!" }, JsonRequestBehavior.AllowGet); } } else { if (ReplyBll.Update(model.Id)) { if (iUnitType == 3)//仅当活动为讨论时,计分(视频下的讨论不再记分) this.ScoreSet(2, 0, 0, 0, false, model);//设置分数并更新讨论的进度 return Json(new { Result = true, Msg = "回复删除成功!" }, JsonRequestBehavior.AllowGet); } else { return Json(new { Result = false, Msg = "回复删除失败!" }, JsonRequestBehavior.AllowGet); } } } }
/// <summary> /// 设置分数 /// </summary> /// <param name="iUnitType">//1阅读,2讨论 /// <param name="IsAdd">True:新增 False:删除</param> /// <param name="obj">数据对象</param> private void ScoreSet(int iUnitType, int? iUnitContent = 0, int iClassId = 0, int iTrainingId = 0, bool IsAdd = false, Object obj = null) { var scheduleBll = new Member_ClassUnitContentScheduleBLL(); var replyBll = new Course_UnitReplyDetailBLL(); int iPlanId = 0, iAccountId = 0, iUnitId = 0; double dblScore = 0; var stbSqlWhere = new StringBuilder(); if (iUnitType == 1) { iPlanId = Code.SiteCache.Instance.PlanId; iAccountId = Code.SiteCache.Instance.LoginInfo.UserId; stbSqlWhere.AppendFormat(" ClassId = {0} AND TrainingId = {1} AND AccountId = {2} AND UnitContent = {3} AND Status = 1 AND Delflag = 0", iClassId, iTrainingId, iAccountId, iUnitContent); var List_Schedule = scheduleBll.GetList(stbSqlWhere.ToString(), string.Empty); if (List_Schedule != null && List_Schedule.Count > 0 && List_Schedule[0].score == null)//当存在记录,并且Score=null时记录分数 { Web.Code.ScoreSetHelper.ScoreSet(iUnitContent, iUnitType, iClassId, iPlanId, iAccountId, dblScore); } } else if (iUnitType == 2)//讨论 参与次数要 >=1 { var model = obj as Course_UnitReplyDetail; iUnitContent = model.UnitContent; iClassId = model.ClassId; iPlanId = Code.SiteCache.Instance.PlanId; iAccountId = model.AccountId; stbSqlWhere.AppendFormat(" ClassId = {0} AND AccountId = {1} AND UnitContent = {2} AND Display = 1 AND Delflag = 0", iClassId, iAccountId, iUnitContent); var List_ReplyDetail = replyBll.GetList(stbSqlWhere.ToString(), string.Empty); if (List_ReplyDetail != null) { if (IsAdd) { if (List_ReplyDetail.Count <= 0) { Web.Code.ScoreSetHelper.ScoreSet(iUnitContent, iUnitType, iClassId, iPlanId, iAccountId, dblScore, true); } } else { Web.Code.ScoreSetHelper.ScoreSet(iUnitContent, iUnitType, iClassId, iPlanId, iAccountId, dblScore, false); } } //获取当前活动的UnitId var unitContentBll = new Course_UnitContentBLL(); var Model_UnitContent = unitContentBll.GetModel(iUnitContent.Value, string.Empty); iUnitId = Model_UnitContent.UnitId == null ? 0 : Model_UnitContent.UnitId.Value; //获取TrainingId var unitDetailBll = new Course_UnitDetailBLL(); var Model_UnitDetail = unitDetailBll.GetModel(iUnitId, string.Empty); iTrainingId = Model_UnitDetail.TrainingId == null ? 0 : Model_UnitDetail.TrainingId.Value; //更新总进度 this.UpdateOverallProgress(iUnitId, iClassId, iTrainingId, iAccountId, iUnitContent.Value);//分数添加之后更新总进度 } }
/// <summary> /// 在线学习-结业考试提交 /// </summary> /// <returns></returns> public ActionResult LearnOnLineExamEdit(List<Member_CourseContentTestAnswerOther> listOther) { var TestAnswerResultBll = new Member_CourseContentTestAnswerResultBLL(); var unitBll = new Course_UnitContentBLL(); var stbSqlWhere = new StringBuilder(); var strOrderBy = "CreateDate"; int iTrainingId = 0, iId = 0; var Model_ExamAnswerResult = this.GetLearnOnLineExamResult(listOther, out iTrainingId); if (Model_ExamAnswerResult == null) { return Json(new { Result = true, Msg = "试题提交异常!" }, JsonRequestBehavior.AllowGet); } //若课程已结束禁止操作 if (this.GetCourseIsOver(Model_ExamAnswerResult.ClassId, iTrainingId, Model_ExamAnswerResult.AccountId)) return Json(new { Result = true, Msg = "提交失败.当前课程已结束,不能执行该操作!" }, JsonRequestBehavior.AllowGet); //查看当前活动是否已打分,若已打分则禁止操作 if (this.GetActivityScore(Model_ExamAnswerResult.ClassId, iTrainingId, Model_ExamAnswerResult.AccountId, Model_ExamAnswerResult.UnitContent)) return Json(new { Result = false, Msg = "提交失败.当前活动已打分,不能执行该操作!" }, JsonRequestBehavior.AllowGet); //提交时,判断其剩余考试次数 var model = unitBll.GetModel(Model_ExamAnswerResult.UnitContent, string.Empty); stbSqlWhere.AppendFormat(@" UnitContent = {0} and AccountId = {1} and Delflag = 0", Model_ExamAnswerResult.UnitContent, Model_ExamAnswerResult.AccountId); var List_Result = TestAnswerResultBll.GetList(stbSqlWhere.ToString(), strOrderBy); if (List_Result.Count >= model.TestCnt && model.TestCnt != -1) { return Json(new { Result = true, Msg = "试题提交失败。你的结业考试 - [ " + model.Title + " ] 剩余答题次数不足!" }, JsonRequestBehavior.AllowGet); } //提交总分到表 Member_CourseContentTestAnswerResult bool bolResult = TestAnswerResultBll.Add(Model_ExamAnswerResult) > 0; iId = Model_ExamAnswerResult.Id; //提交数据到用户答案表 Member_CourseContentTestAnswer if (bolResult) { bolResult = this.SaveMember_CourseContentTestAnswer(listOther, iId); } if (bolResult) { SessionHelper sess = new SessionHelper(); sess.Remove("LearnOnLineExam"); int iUnitContent = Model_ExamAnswerResult.UnitContent; //更新总进度 this.UpdateOverallProgress(model.UnitId.Value, Model_ExamAnswerResult.ClassId, iTrainingId, Model_ExamAnswerResult.AccountId, iUnitContent); return Json(new { Result = true, Msg = "试题提交成功!" }, JsonRequestBehavior.AllowGet); } else { return Json(new { Result = true, Msg = "试题提交失败!" }, JsonRequestBehavior.AllowGet); } }
/// <summary> /// 获取[结业考试]结果 /// </summary> /// <param name="listOther"></param> /// <returns></returns> private Member_CourseContentTestAnswerResult GetLearnOnLineExamResult(List<Member_CourseContentTestAnswerOther> listResultOther, out int TrainingId) { var strVerson = string.Empty; int iUnitContent = 0, iClassId = 0, iAccountId = 0, iQuestionCnt = 0, iRightAnswer = 0, iWrongAnswer = 0, iTrainingId = 0; double dblScore = 0, dblTestTotalScore = 0; var bolResult = false; var unitContentBll = new Course_UnitContentBLL(); var Model_ExamResult = new Member_CourseContentTestAnswerResult();//保存总分 var Model_ExamAnswer = new Member_CourseContentTestAnswer(); if (listResultOther.Count > 0) { iTrainingId = listResultOther[0].TrainingId; iClassId = listResultOther[0].ClassId; iAccountId = Code.SiteCache.Instance.LoginInfo.UserId; iUnitContent = listResultOther[0].UnitContentId;//一批题目的UnitContentId相同 } TrainingId = iTrainingId; var List_Course_UnitTest = this.GetExamCourseUnitTest(iTrainingId); iQuestionCnt = List_Course_UnitTest.Count;//总题数 strVerson = List_Course_UnitTest[0].Verson; foreach (var item in listResultOther) { var modelUnitTest = List_Course_UnitTest.Find(x => x.Id == item.Id); if (modelUnitTest.QTtype == 4)//问答题 { iRightAnswer++; } else { if (item.Answer.Trim() == modelUnitTest.Answer.Trim())//答案正确 { iRightAnswer++; dblScore += modelUnitTest.Credit.Value;//用户得分 } else//答案错误 { iWrongAnswer++; } dblTestTotalScore += modelUnitTest.Credit.Value;//所有题目的总分数 } } //获取学员是否过关 var Model_Content = unitContentBll.GetModel(iUnitContent, string.Empty); bolResult = iRightAnswer >= Model_Content.PassLine; Model_ExamResult.Verson = strVerson; Model_ExamResult.UnitContent = iUnitContent; Model_ExamResult.ClassId = iClassId; Model_ExamResult.Score = dblScore; Model_ExamResult.QuestionCnt = iQuestionCnt; Model_ExamResult.RightAnswer = iRightAnswer; Model_ExamResult.WrongAnswer = iWrongAnswer; Model_ExamResult.Result = bolResult; Model_ExamResult.AccountId = iAccountId; Model_ExamResult.Delflag = false; Model_ExamResult.CreateDate = DateTime.Now; return Model_ExamResult; }
/// <summary> /// 刷新活动时间记录 /// </summary> /// <param name="ClassId"></param> /// <param name="TrainingId"></param> /// <param name="UnitContent"></param> /// <returns></returns> public ActionResult RefashTimeRecord(int ClassId, int TrainingId, int UnitContent, int RecordId) { int iUnitId = 0, iUnitType = 0, iAccountId = 0; double dblContentTimeLength = 0; var TimeRecordBll = new Member_ClassContentTimeRecordBLL(); var UnitContentBll = new Course_UnitContentBLL(); var Model_UnitContent = UnitContentBll.GetModel(UnitContent, string.Empty); if (Model_UnitContent == null) return View(); iAccountId = Code.SiteCache.Instance.LoginInfo.UserId; iUnitId = Model_UnitContent.UnitId == null ? 0 : Model_UnitContent.UnitId.Value; iUnitType = Model_UnitContent.UnitType; dblContentTimeLength = Model_UnitContent.TimeLength == null ? 0 : Model_UnitContent.TimeLength.Value; var Model_TimeRecord = TimeRecordBll.GetModel(RecordId, string.Empty); if (Model_TimeRecord != null) { Model_TimeRecord.EndTime = DateTime.Now; TimeRecordBll.Update(Model_TimeRecord); var startDateTime = Model_TimeRecord.StartTime.Value.AddMinutes(dblContentTimeLength); var dtCompare = DateTime.Compare(Model_TimeRecord.EndTime.Value, startDateTime); if (dtCompare >= 0)//若结束时间 >= 开始时间 + 活动限时,即完成该活动 { //更新活动进度 this.UpdateOverallProgress(iUnitId, ClassId, TrainingId, iAccountId, UnitContent); //若活动是阅读或者视频[1文本,2影音教材,3讨论,4作业,5测试,6结业考试] if (iUnitType == 1 || iUnitType == 2) { this.ScoreSet(1, UnitContent, ClassId, TrainingId);//设置分数 } } } return View(); }
public ActionResult DisplayCourseAtivity(int id) { Course_UnitContentBLL bll = new Course_UnitContentBLL(); Course_UnitContent model = bll.GetModel(id, "Delflag = 0"); //设置是否显示 if (model.Display) { model.Display = false; } else { model.Display = true; } if (bll.Update(model)) { return Json(new { Result = true, Display = model.Display }, JsonRequestBehavior.AllowGet); } else { return Json(new { Result = false, Display = model.Display }, JsonRequestBehavior.AllowGet); } }
public ActionResult CourseActivityVideoEdit(int TrainingId, int UnitId) { //ViewBag.Title = "影音教材编辑"; Course_DetailBLL bll_CourseDetail = new Course_DetailBLL(); Course_UnitContentBLL bll = new Course_UnitContentBLL(); //指定课程的课程ID ViewBag.TrainingId = TrainingId; //获取指定课程ID对应的课程单元信息 ViewBag.TrainingInfo = bll_CourseDetail.GetTrainingInfoById(Convert.ToInt32(TrainingId)); //获取影音教材Model ViewBag.ActivityVideoModel = bll.GetModel(Convert.ToInt32(UnitId), "Delflag = 0"); return View(); }
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(); }